Python 使用金字塔arima预测现有数据以外的数据

Python 使用金字塔arima预测现有数据以外的数据,python,arima,pyramid-arima,Python,Arima,Pyramid Arima,我正在为美国各州的房价创建50个不同的时间序列模型。我正在使用金字塔ARIMA来实现这一点 数据来自.csv,包含日期、状态和价格中位数列 我已经创建了模型,并希望预测超出现有数据的值,但我不知道如何做到这一点 我有一个图表,看起来像这样: 我想要一张这样的图表: 我还想将预测值输出到一个新的.csv 当前代码: # Indexing and creating series df = pd.read_csv(f'state_csvs/{state}.csv', parse_dates=['D

我正在为美国各州的房价创建50个不同的时间序列模型。我正在使用金字塔ARIMA来实现这一点

数据来自.csv,包含日期、状态和价格中位数列

我已经创建了模型,并希望预测超出现有数据的值,但我不知道如何做到这一点

我有一个图表,看起来像这样:

我想要一张这样的图表:

我还想将预测值输出到一个新的.csv

当前代码:

# Indexing and creating series
df = pd.read_csv(f'state_csvs/{state}.csv', parse_dates=['Date'], date_parser=dateparse, index_col=0, header=0)
data = df[['Median_Listing_Price']]

# Divide into train and validation set
train = data.loc['2013-11':'2017-01']
valid = data.loc['2017-02':]

# Building the model
model = auto_arima(train, 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)
model.fit(train)

forecast = model.predict(n_periods=len(valid))
forecast = pd.DataFrame(forecast, index=valid.index, columns=['Prediction'])

# Plot the predictions for validation set
plt.plot(train, label='Train')
plt.plot(valid, label='Valid')
plt.plot(forecast, label='Prediction')
plt.title(f'{state}')
plt.show()

您可以使用以下代码

import matplotlib as plt
import pandas as pd

#you can continue your code with following code
#But you need to first get final parameters from auto_arima

model.summary()        #for getting final parameters

#Look for output like >> Model: ARIMA(x, y, z)
#Now use the following code after yours
model_future = ARIMA(df,order=(x, y, z))
results_future = model_future.fit()
predictions_future = results_future.predict(len(df),len(df)+12,typ = 'levels')
df.plot(legend=True , figsize = (12,8))
predictions_future.plot(legend= True)

#To add future predictions to csv you can use,
predictions_future.to_csv(path_to_folder)
在我的例子中,输出: 我已经这样做了12个月到未来,你可以有自己的参数设置。

是的!这管用!非常感谢你,我已经为此沮丧了好几个小时了。我很高兴我能帮上忙。