如何 运行 为数据框的每一列建立 ARIMA 模型?
How to run ARIMA model for each column of a dataframe?
我正在预测 5 个地区的商品价格。数据组织为 Pandas 数据框。
当我 运行 autoARIMA 为每一列分开时,它很好(例如,对于 data_frame["Region_name"]
)。
def __trainArima(self, actual_values, periods):
fitted_model = pm.auto_arima(actual_values, start_p=3,
start_q=2,
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)
return fitted_model.predict(n_periods=periods)
__trainArima(data_frame, 12)
但是,我想对所有 5 列立即 运行 它,将输出作为未来 12 个月每个预测区域的 5 列数据框。这可能吗?
如果您不相信您的列是相关的 - 您可以遍历每个列和 运行 ARIMA,然后合并预测。
为了详细说明,您可以像这样循环:
import pandas as pd
results = []
cols = []
for i in data_frame.columns:
cols.append(i)
result = __trainArima(test[i])
results.append(result)
output = (pd.DataFrame(results)).T
output.columns=cols
这将输出一个数据框,其中包含您的预测,列名与原始数据框中显示的列名相同。
我正在预测 5 个地区的商品价格。数据组织为 Pandas 数据框。
当我 运行 autoARIMA 为每一列分开时,它很好(例如,对于 data_frame["Region_name"]
)。
def __trainArima(self, actual_values, periods):
fitted_model = pm.auto_arima(actual_values, start_p=3,
start_q=2,
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)
return fitted_model.predict(n_periods=periods)
__trainArima(data_frame, 12)
但是,我想对所有 5 列立即 运行 它,将输出作为未来 12 个月每个预测区域的 5 列数据框。这可能吗?
如果您不相信您的列是相关的 - 您可以遍历每个列和 运行 ARIMA,然后合并预测。
为了详细说明,您可以像这样循环:
import pandas as pd
results = []
cols = []
for i in data_frame.columns:
cols.append(i)
result = __trainArima(test[i])
results.append(result)
output = (pd.DataFrame(results)).T
output.columns=cols
这将输出一个数据框,其中包含您的预测,列名与原始数据框中显示的列名相同。