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


10

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

(如果我可以使用更好的低通滤波器,我很乐意提出建议)


首先想到的是在使用移动平均滤波器之前对点进行插值
someguy 2012年

3
至少在没有更多上下文的情况下,实际上,统计问题比信号处理问题更多。但是您可以简单地跳过重新计算平均值,使用当前平均值作为替换值,或等待后续测量并尝试进行线性或其他方式的插值。
Daniel R Hicks 2012年

正如其他人指出的那样,这通常是基于特定应用程序的决策,具体取决于您对过滤后的输出的行为的考虑。大多数信号处理理论都是基于均匀分布的样本,因此您不会得到客观上可以称为“正确答案”的东西。
杰森R

@JasonR我进行过滤,以便在那一点上更合理地估算用户的体重。对数据进行统一采样(采样频率= 1 /天),但缺少某些数据点。
2012年

@Anna:是的,我知道您为什么要过滤数据。但是,由于缺少数据点,因此无法统一采样数据。因此,正如我指出的那样,您不太可能找到令人满意的理论答案。您认为对特定应用程序“有意义”的临时解决方案可能会是答案。
杰森R

Answers:


4

作为一般印象,回归将比自动选择的移动平均滤波器更好地自动拟合缺失点。

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

X^[一世]=ωķX[一世-1个-ķ]+η

哪里 是预测值。X^[一世]

具体来说,假设您知道此人的体重处于特定范围。现在,如果您没有x [ i 1 ]X一个XX一世ñX[一世-1个]值-适用两种不同的换人-一个与Min和一个与Max和基于可用的模型,你将有两种极端的情况下,结果X [ ],并可以选择他们之间的东西。X^[一世]

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

X^[一世]=X[一世-1个]
X^[一世]=X的长期样本平均值 

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


2
您为什么说回归将更适合拟合?谢谢
Spacey 2012年

3

如果您要运行完整的数据,则一种简单而通用的填充丢失数据的方法是使用
线性回归。假设您连续进行了1000次运行,共5次,但没有丢失。
设置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

(在各个级别上都有成千上万的关于回归的书籍和论文。但是,对于与插值的联系,我不知道一个好的介绍;有人吗?)


1

[一个bCË]

一个+b+C+Ë4

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.