如何将残差转换为原始值Python statsmodels

时间:2017-01-05 19:02:17

标签: python machine-learning time-series prediction statsmodels

我可以用这种方式分解时间序列数据 -

from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(ts)

trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

我的问题是如何将这个残值转换为原始值。这样我就可以用它们来预测未来的价值。

2 个答案:

答案 0 :(得分:0)

如果您正在添加添加剂模型,则只需将趋势,季节性和残差分量相加,即可恢复原始值。最终的结果是您的原始数据,因此支持它的价值不大。在考虑趋势和季节性影响后,残差是原始数据的剩余部分。它类似于线性回归,其中预测值加上残差会返回因变量的实际结果。

答案 1 :(得分:0)

我试图添加原始趋势和季节性,但效果不佳。因此,当我将预测结果与原始结果进行比较时,我只使用预测结果和残差。

efrom statsmodels.tsa.seasonal import seasonal_decompose

# trend, seasonality are separated out from data, and we can model the residuals
decomposition = seasonal_decompose(ts_log)
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

# AR model
model = ARIMA(ts_log, order=(2, 1, 0))  
results_AR = model.fit(disp=-1) 
plt.figure(figsize=(20,10))
plt.plot(ts_log_decompose)
plt.plot(results_AR.fittedvalues, color='red')
result = (results_AR.fittedvalues-ts_log_decompose)**2
result.dropna(inplace=True)
plt.title('Decompose RSS: %.4f'% sum(result))
plt.show()

我尝试了AR,MA,ARIMA模型,发现AR模型的RSS最低。所以现在,我正在用AR模型进行预测。

predictions_AR = pd.Series(results_AR.fittedvalues, copy=True)
print predictions_AR.head()
plt.figure(figsize=(20,10))
plt.plot(series, color='red')
plt.plot(predictions_ARIMA, color='green')
result = (predictions_AR-residual)**2
result.dropna(inplace=True)
plt.title('RMSE: %.4f'% np.sqrt(sum(result)/len(series)))
plt.show()

效果很好: enter image description here

如果您想查看我的所有代码:https://github.com/hanhanwu/Hanhan_Data_Science_Practice/blob/master/sequencial_analysis/try_LSTM.ipynb

只需向下滚动即可分解方法