什么是使数据按时间序列进行平稳和逆变换的最佳方法-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 (将#修改为@)