考虑以下高频但稀疏的时间序列:
#Sparse Timeseries
dti1 = pd.date_range(start=datetime(2015,8,1,9,0,0),periods=10,freq='ms')
dti2 = pd.date_range(start=datetime(2015,8,1,9,0,10),periods=10,freq='ms')
dti = dti1 + dti2
ts = pd.Series(index=dti, data=range(20))
我可以使用pandas函数计算半衰期为5ms的指数加权移动平均值,具体操作如下:
ema = pd.ewma(ts, halflife=5, freq='ms')
然而,在实现过程中,该函数使用1毫秒的间隔(即我提供的'freq')重新采样我的时间序列。这会导致输出中包含成千上万个额外的数据点。
In [118]: len(ts)
Out[118]: 20
In [119]: len(ema)
Out[119]: 10010
这种方法并不可扩展,因为我真正的时间序列包含数十万个高频观测值,它们相隔几分钟或几小时。
是否有一种Pandas/numpy的方法可以计算稀疏时间序列的EMA而无需重新采样?类似于这个网页上的内容:http://oroboro.com/irregular-ema/
或者,我必须自己编写代码吗?谢谢!