python - 如何使用 statsmodels 和 Python 在 AR 模型中获取常数项?

标签 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_ar 成功获取了 p 值,参数为 result.params,epsilon 项为 result.sigma2。问题是我找不到获取 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

最佳答案

常数是参数中的第零个元素。例如,参数[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)

或者更简单,因为我们已经为您制作了滞后矩阵(这就是 fittedvalues 所做的)

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

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

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

关于python - 如何使用 statsmodels 和 Python 在 AR 模型中获取常数项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172454/

相关文章:

python-2.7 - 如何忽略 statsmodels 最大似然收敛警告?

poly(x, 2) 的 Python 等效项添加了一个 2 阶正交多项式

python - 使 QPushButton 关闭所有打开的程序窗口

r - 在R情节有马拟合模型与原始系列

python - 将时区设置为 Pandas 数据框

python - python 与 R 中的 glm

python - Pandas 使用 UTC 时间创建日期范围

python - 为多个参数接受多个值会导致意外结果

python - 合并列 Pandas df

R 在 R 中使用引用时间表过滤数据