如何解决什么是使数据按时间序列进行平稳和逆变换的最佳方法-Python
我做了一次微分,因为时间序列不是固定的。 当我进行反向转换时,由于diff()而得到负值,一些值变为负值。有没有一种方法可以整理出来并以接近预期结果的原始格式带回数据。
这是我的python代码。有没有办法修复代码或任何替代逻辑,以使数据稳定并预测序列?
count = 0
def invert_transformation(df_train,df_forecast):
"""Revert back the differencing to get the forecast to original scale."""
df_fc = df_forecast.copy()
columns = df_train.columns
if count > 0: # For 1st differencing
print("Enter into invert transformation")
for col in columns:
df_fc[str(col)+'_f'] = df_train[col].iloc[-1] + df_fc[str(col)+'_f'].cumsum()
print("df_fc: \n",df_fc)
return df_fc
# Since the data is not stationary,I did the 1st difference
df_differenced = df_train.diff().dropna()
count = count + 1 #increase the count
count
....
....
model = VAR(df_differenced)
....
fc = model_fitted.forecast(y=forecast_input,steps=10)
df_forecast2 = pd.DataFrame(fc,index=df2.index[-nobs:],columns=df2.columns + '_f')
df_results = invert_transformation(df_train,df_forecast2)
df_results(TS是索引列)的值是:
TS Field1_f Field2_f
44:13.0 6.826511e+05 1.198614e+06
44:14.0 -8.620101e+05 4.694556e+05
..
..
44:22.0 -1.401620e+07 -2.092826e+06
df_differenced的值是:
TS Field1 Field2
43:34.0 187000.0 29000.0
43:35.0 175000.0 76722.0
43:36.0 -10000.0 31000.0
43:37.0 90000.0 42000.0
43:38.0 -130000.0 -42000.0
43:39.0 40000.0 -98444.0
..
..
44:11.0 -130000.0 40722.0
44:12.0 117000.0 -42444.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。