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

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

这是我正在使用的代码.

# 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,带有result.params的参数,带有result.sigma2的epsilon term成功获得了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的结果证实我很明显,模型中添加了一些常量项.谢谢.

解决方法:

常数是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())

标签:statsmodels,python,time-series

来源: https://codeday.me/bug/20190830/1770275.html

你可能感兴趣的:(ar模型python)