如何修复Python中的ARIMA MODEL错误

时间:2019-07-04 12:44:05

标签: python pandas statsmodels

我正在尝试为我的时间序列数据创建ARIMA模型。我该如何对其代码进行平滑处理才能使其正常运行?

我正在使用statsmodels在python中创建ARIMA模型,但是却收到错误警告

    indexedDataset_logscale.head(10)
    OUTPUT: 
                Price
    Period  
    2013-02-08  2.515274
    2013-02-11  2.526528
    2013-02-12  2.520113
    2013-02-13  2.515274
    2013-02-14  2.543961
    2013-02-15  2.544040
    2013-02-19  2.530119
    2013-02-20  2.516082
    2013-02-21  2.508786
    2013-02-22  2.5273

    #AR Model
    from statsmodels.tsa.arima_model import ARIMA

    model = ARIMA(indexedDataset_logscale, order=(0, 1, 2))
    results_AR = model.fit(disp = -1)
    plt.plot(datasetLogDiffShifting)
    plt.plot(results_AR.fittedvalues, color = 'red')
    plt.title('RSS: %.4f' %sum((results_AR.fittedvalues-datasetLogDiffShifting['Price'])**2))
    print('Plotting AR Model')



Error messages i get are: 
  •   

    “ ValueWarning:已经提供了日期索引,但是它没有关联的频率信息,因此在例如   预测。例如在预测”。,ValueWarning)

  •   

    8个plt.title('RSS:%.4f'%sum((results_AR.fittedvalues-datasetLogDiffShifting ['Price'])** 2))   TypeError:“ str”对象不可调用

2 个答案:

答案 0 :(得分:0)

1)看来您的索引没有设置频率 尝试将此添加到Arima之前

df.index.freq = 'D'

D是每天的时间戳,似乎您不是线性/有规律的,很难定义问题所在。在熊猫中检查其他频率选项。

为避免警告,请在脚本开头键入以下内容:

#Clear console
import warnings
warnings.filterwarnings("ignore")

答案 1 :(得分:0)

问题在于,在您的数据中,索引似乎是每日的,但某些日期不是连续的天。您可以提供缺少的日期,然后插值这些日期的值,如下所示:

df = df.resample('D').mean()
df["Price"] = df["Price"].interpolate(method='linear', axis=0).ffill().bfill()

然后您将能够建立模型并绘制拟合值。