如何在python ARIMA中预测未来价值

时间:2019-11-23 14:12:36

标签: python time-series arima

我一直在研究基于ARIMA模型的时间序列。但是我尝试了预测未来的价值。例如,我的时间序列于2015年11月1日结束,此时我想预测2015年12月1日的价值。我曾在互联网上用google搜索它,但我对未来的价值一无所获。文档和互联网上的所有示例仅显示了测试预测。实际上,关于未来价值的网站很少,但是所有示例都是用旧日期写的。绝对我在这里搜索,但是再一次,我什么也没找到。

import pandas as pd 
import numpy as np 

data = pd.read_csv(r'Desktop/IPG2211A2N.csv', index_col = 0)

#TURN INDEX TO DATETIME *IMPORTANT.
data.index = pd.to_datetime(data.index)
data.columns = ['Energy Production']

import pmdarima as pm
stepwise_model = pm.auto_arima(data, start_p=1, start_q=1,
                           max_p=3, max_q=3, m=12,
                           start_P=0, seasonal=True,
                           d=1, D=1, trace=True,
                           error_action='ignore',  
                           suppress_warnings=True, 
                           stepwise=True)

# =============================================================================
# TRAIN
# =============================================================================
train = data.iloc[:int(len(data)*0.7),:]
test = data.iloc[int(len(data)*0.7):,:]
stepwise_model.fit(train)

# =============================================================================
# FORECAST
# =============================================================================
future_forecast = stepwise_model.predict(n_periods=len(test))
future_forecast = pd.DataFrame(future_forecast,index = test.index,columns=['Prediction'])

# =============================================================================
# COMPARE RESULT BETWEEN JUST TEST AND RESULT
# =============================================================================
import matplotlib.pyplot as plt 
plt.plot(pd.concat([test,future_forecast],axis=1))
plt.show()


# =============================================================================
# COMPARE RESULT BETWEEN ALL DATA AND RESULT
# =============================================================================
plt.cla()
future_forecast2 = future_forecast
plt.plot(pd.concat([data,future_forecast2],axis=1))
plt.show()

0 个答案:

没有答案