我正在研究一个时间序列,它有一个索引作为日期和一个值字段。我用这两行来区分数据。
df['value2'] = (df['value'] - df.value.rolling(window=12).mean()) / df.value.rolling(window=12).std()
df['value3'] = df['value2'] - df['value2'].shift(12)
这使我的数据集静止,所以我很高兴继续使用它。
现在我已经对此进行了一些分析,现在我有了我试图消除差异的价值观。
如果我的结果数据集保存在 df_results 中,我如何使这些再次正常(不区分它们)。有没有办法扭转这种转变?
**解决方案**
我想出了一种方法来扭转数据集上的差异。
# DIFFERENCING
df['stp1'] = (df['cpi'] - df.cpi.rolling(window=12).mean())
df['stp2'] = df['stp1'] / df.cpi.rolling(window=12).std()
df['stp3'] = df['stp2'] - df['stp2'].shift(12)
# INVERSE DIFFERENCING
df['stp3r'] = df['stp3'] + df['stp2'].shift(12)
df['stp2r'] = df['stp3r'] * df.cpi.rolling(window=12).std()
df['stp1r'] = (df['stp2r'] + df.cpi.rolling(window=12).mean())
为了将其应用于预测数据集,我采用了非常相似的方式。在此唯一更改的变量是保存差异预测的“wmar”,最后一个数据字段“fcast3”是存在反向差异预测的位置:
df['fcast'] = wmar + df['stp2'].shift(12)
df['fcast2'] = df['fcast'] * df.cpi.rolling(window=12).std()
df['fcast3'] = (df['fcast2'] + df.cpi.rolling(window=12).mean())