在这里,我有一个具有两个属性的数据集。我总共有200天,每天都有TotalTransactionNumber
和Price
属性,例如:
Day, Price,TotalTransactionNumber
10/18/2015 0:00,262.9,118916
10/19/2015 0:00,264.42,151128
10/20/2015 0:00,270.22,147335
10/21/2015 0:00,267.33,149446
10/22/2015 0:00,274.41,146556
10/23/2015 0:00,277.46,142066
10/24/2015 0:00,282.66,140943
10/25/2015 0:00,283.07,131191
在这里,我正在尝试使用ARIMA,但我不知道如何使用它。在这种情况下,我试图猜测价格值。 如果只是价格,此代码段将起作用,但我不知道如何对其进行修改。
from statsmodels.tsa.arima_model import ARIMA
import pandas as pd
series = pd.read_csv('prices.csv')
X = series.values
train, test = X[0:size], X[size:len(X)]
history = [x for x in train]
predictions = list()
for t in range(len(test)):
model = ARIMA(history, order=(5,1,0))
model_fit = model.fit(disp=0)
output = model_fit.forecast()
yhat = output[0]
predictions.append(yhat)
obs = test[t]
history.append(obs)
print('predicted=%f, expected=%f' % (yhat, obs))
答案 0 :(得分:0)
TL; DR:了解exog
的{{1}}参数。
据我所知,您从这个非常好的教程中获得了代码:
ARIMA
那么,ARIMA是一种用于分析和预测时间序列的统计方法。因此,起初它只应处理时间序列本身的数据。但是,还有另一个名为ARIMAX的模型,该模型处理的外源数据可以补充通过主要时间序列观察到的数据。
对于https://machinelearningmastery.com/arima-for-time-series-forecasting-with-python/
,设置参数statsmodels
时ARIMAX
只是ARIMA
的特定情况。
您应该尝试解决这一问题,并注意exog
和Price
之间的任何“隐藏”关联。