移动平均线应该如何处理丢失的数据点?

信息处理 低通滤波器 移动平均线
2022-01-02 10:03:32

我正在编写一个程序来平均用户在不同日子的体重。我打算使用 5 点移动平均线(当天,之前两个,之后两个)。有时,一个数据点会丢失 1-2 天。这些案件通常如何处理?

(如果我可以使用更好的低通滤波器,我会喜欢建议)

4个回答

作为一般印象,回归在自动拟合缺失点而不是您选择的移动平均过滤器方面会更好。

如果您使用 AR(自回归过滤器)或 ARMA 过滤器 - 您可以根据过去的输入获得样本输出的预测值。

X^[i]=ωkx[i1k]+η

其中是预测值。X^[i]

特别是在你的情况下,假设你知道这个人的体重有一个特定的范围现在,如果您没有值 - 应用两种不同的替换 - 一种使用 Min,另一种使用 Max,根据可用模型,您将获得的两种极端情况结果,您可以在他们之间选择一些东西。Xmax,Xminx[i1]X^[i]

还有其他各种选择 - 您可以保留

X^[i]=X[i1]
X^[i]=Long term sample average of X 

本质上,它是一种预测该值的游戏,并继续将其用作信号。当然,预测与原始样本不同,但这不是您为没有数据而付出的代价。

如果您有完整的数据运行,一种简单而通用的填充缺失数据的方法是使用
线性回归假设您连续 5 次运行 1000 次,并且没有丢失。
设置 1000 x 1 向量 y 和 1000 x 4 矩阵 X:

y       X
wt[0]   wt[-2] wt[-1] wt[1] wt[2]
---------------------------------
68      67     70     70    68
...

回归会给你 4 个数字 abcd 给出最佳匹配

wt[0] ~= a * wt[-2]  + b * wt[-1]  + c * wt[1]  + d * wt[2]

对于你的 1000 行数据——不同的数据,不同的 abc d。
然后你使用这些 abcd 来估计(预测、插值)缺失的 wt[0]。
(对于人体重量,我希望 abcd 大约是 1/4。)

在 python 中,请参见 numpy.linalg.lstsq

(有无数关于回归的书籍和论文,在各个层面。但是,对于与插值的联系,我不知道有什么好的介绍;有人吗?)

如果您不知道某些数据,最好不要对它进行平均。使用线性回归等进行猜测可能会有所帮助,但也可能会给您的数据带来额外的复杂性和意外偏差。我想说,如果你对这五个数据点进行平均:,你的答案应该是[a,b,c,?,e]

a+b+c+e4

我认为最简单的方法是使用之前的数据“预测”时间序列中“整体”的日期。那么您可以使用此时间序列进行参数估计。(然后,您可以使用整个(已完成)时间序列中的估计参数继续并重新预测缺失值,并重复此操作直到它们收敛)。但是,您应该从您拥有的真实数据点的数量而不是从已完成数据序列的长度中得出置信区间。