arima和sarimax的参数

uubf1zoe  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(355)

我在做一个关于时间序列和预测的数据分析项目。我有一个Dataframe,它包含了很多我需要处理的数据 Covid cases . Dataframe如下所示:

Covid cases  Confirmed Infections Difference
date                                                    
2020-02-24           19                              NaN
2020-02-25            0                            -19.0
2020-02-26            0                              0.0
2020-02-27            1                              1.0
2020-02-28            2                              1.0
...                 ...                              ...
2021-02-25         1502                           -136.0
2021-02-26         1468                            -34.0
2021-02-27         1474                              6.0
2021-02-28          715                           -759.0
2021-03-01          298                           -417.0

为了做一个预测,我使用arima模型(Dataframe是静态的),然后我尝试在我的图中应用一条预测线。我正在使用arima和sarimax的一些参数,然后用pandas打印图形。该行正在拟合时间序列,但它不显示在该行的结束位置。
代码:

def timeseries(dataframe, city_name):
    cols = ['ID', 'name']  # Creating columns to be dropped
    dataframe.drop(cols, axis=1, inplace=True)  # Dropping columns that I don't need
    dataframe.columns = ["date", "Covid cases"]
    dataframe.describe()
    dataframe.set_index('date', inplace=True)
    dataframe.plot(figsize=(15, 6))  # Setting figure size
    dataframe['Confirmed Infections Difference'] = dataframe['Covid cases'] - dataframe['Covid cases'].shift(1)
    adfuller_test(dataframe['Confirmed Infections Difference'].dropna())
    model = ARIMA(dataframe['Covid cases'], order=(1, 1, 1))
    model_fit = model.fit(disp=0)
    print(model_fit.summary())
    dataframe['forecast'] = model_fit.predict(start=90, end=103, dynamic=True)
    model = sm.tsa.statespace.SARIMAX(dataframe['Covid cases'], order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
    results = model.fit()
    dataframe['forecast'] = results.predict(start=90, end=103, dynamic=True)
    future_dates = [dataframe.index[-1] + DateOffset(months=x) for x in range(0, 24)]
    future_datest_df = pd.DataFrame(index=future_dates[1:], columns=dataframe.columns)

    future_datest_df.tail()

    future_df = pd.concat([dataframe, future_datest_df])

    future_df['forecast'] = results.predict(start=104, end=120, dynamic=True)
    future_df[['Covid cases', 'forecast']].plot(figsize=(12, 8))

以下是结果图:

因此,据你所知,预测似乎没有得到正确的应用。我想这是我给arima和sarimax的一些参数的问题。
期望图示例:

提醒: date 专栏是关于每一天的。我想预测的是未来几天的天气。
有什么想法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题