我一直在阅读关于rolling()功能的文档,我似乎无法找到同时合并前向和后向窗口的方法。我想要做的是计算离群分析的前10和过去10事件的平均绝对偏差(甚至标准偏差)。
我能够通过
以黑客的方式计算前进/过去10的平均值df = pd.DataFrame({ 'date': pd.date_range(start='1/1/2017', end='12/31/2017'),
'value': np.random.rand(365)})
first_10 = df.rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
last_10 = df[::-1].rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
然后
pd.merge(first_10, last_10, on = ['level_1']).set_index(['level_1']).mean(axis=1)
但是因为你不能将两个MAD一起平均以获得该窗口的MAD,所以我无法做到这一点。有没有人有更强大的方法来使用滚动功能进行这样的计算?感觉像必须使用某种移位功能。
感谢对此的帮助。
答案 0 :(得分:0)
您可以这样做
mad = lambda x: np.fabs(x - x.mean()).mean()
s.rolling(window=60).apply(mad, raw=True).plot(style='k')