【发布时间】:2016-02-14 01:41:26
【问题描述】:
我正在尝试将 ARMA 模型拟合到时间序列数据。我还没有找到任何可以自动选择参数的功能。以下是我编写的代码,因为我是 Python 的初学者,因此我相信可以优化此代码。
谁能给我一些关于如何做的想法:
- 对双循环进行矢量化
- 参数选择的快捷方式
非常感谢。
parameter_bound = 3
# Creating a 2-D array, storing the residuals of two different parameters of ARMA model
residuals = [[0 for x in range(parameter_bound)] for x in range(parameter_bound)]
model = [[0 for x in range(parameter_bound)] for x in range(parameter_bound)]
# Calculate residuals for each parameter combinations
for i in range(parameter_bound):
for j in range(parameter_bound):
model[i][j] = sm.tsa.ARMA(input_data, (i,j)).fit()
residuals[i][j] = sum(abs(model[i][j].resid))
# Find the parameters with lowest residuals
parameters = np.argmin(residuals)
parameter1 = parameters/parameter_bound
parameter2 = parameters - parameters/parameter_bound*parameter_bound
# Use the model with lowest residuals to get prediction data
prediction = model[parameter1][parameter2].resid + input_data
【问题讨论】:
标签: python pandas time-series