如何使用statsmodels和Python在AR模型中获取常量项?
我正在尝试使用AR模型对我的时间序列数据建模 这是我正在使用的代码如何使用statsmodels和Python在AR模型中获取常量项?,python,time-series,statsmodels,Python,Time Series,Statsmodels,我正在尝试使用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() 我已经成功地使用
# 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
获得了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
的结果确认了我的证据,即模型中添加了一些常量项。谢谢
常数是参数中的第零个元素。例如,参数[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就是这样做的)
另外,请注意,对于AR,这实际上是常数,而不是平均值。平均值由ARMA模型报告,该模型比普通AR模型更全面。(它有一个summary方法报告常量。AR也应该报告,但不报告。)
constant = mean(1 - arparams.sum())
根据公式,我应该将ε添加到结果中(
fit.append(value+result.sigma2
)?没有,但您可以使用sigma2获得预测不确定性的估计值。有一个PR可以将其放入AR中,但目前它仅在ARMA/ARIMA中可用。我尝试过使用ARMA,但仍然存在一些问题。您能帮我看看这个问题吗?
constant = mean(1 - arparams.sum())