如何使用statsmodels和Python在AR模型中获得常量项?

时间:2014-06-11 20:58:00

标签: python time-series statsmodels

我正在尝试使用AR模型对时间序列数据进行建模。

enter image description here

这是我正在使用的代码。

# Compute AR-model (data is a python list of number)

model = AR(data)
result = model.fit()

plt.plot(data, 'b-', label='data')
plt.plot(range(result.k_ar, len(data)), result.fittedvalues, 'r-')
plt.show()

我使用result.k_arresult.params参数,epsilon术语result.sigma2成功获取p值。问题是我无法找到获得c(常数)项的方法。这是我为比较结果而编写的代码。

# Plot

fit = []
for t in range(result.k_ar, len(data)):
    value = 0
    for i in range(1, result.k_ar+1):
        value += result.params[i-1] * data[t - i]
    fit.append(value)

plt.plot(data, 'b-', label='data')
plt.plot(range(result.k_ar, len(data)), fit, 'r-', label='fit')
plt.plot(range(result.k_ar, len(data)), result.fittedvalues, 'r-')
plt.show()

我的结果和result.fittedvalues的结果证实了我的明显,模型中添加了一些不变的术语。感谢。

enter image description here

1 个答案:

答案 0 :(得分:5)

常量是params中的第零个元素。例如,params [0]。

您的代码应为

fit = []
for t in range(result.k_ar, len(data)):
    value = result.params[0]
    for i in range(2, result.k_ar + 2):
        value += result.params[i - 1] * data[t - i + 1]
    fit.append(value)

甚至更容易,因为我们为你制作了滞后矩阵(这就是拟合值所做的)

np.dot(result.model.X, result.params)

顺便说一句,请注意,对于AR来说,这实际上是常数而不是均值。平均值由ARMA模型报告,其比普通AR模型更全面。 (它有一个报告常量的摘要方法.AR也应该但不是。)连接是

constant = mean(1 - arparams.sum())