statsmodel AR模型回答错误

时间:2016-04-20 03:18:42

标签: python numpy statsmodels

我正在尝试在Python中复制以下R代码

set.seed(1)
x<-w<-rnorm(100)
for (t in 2:100) x[t] = 0.6 * x[t-1] + w[t]
x.ar = ar(x, method="mle")
x.ar$ar
[1] 0.5231187

在python中我有以下代码。

import scipy.stats as stats
import matplotlib.pylab as plt
import statsmodels.tsa.ar_model as ar_model
x = w = stats.norm.rvs(loc=0, scale=1, size=100)
for i in range(1,100):
    x[i] = 0.6* x[i-1] + w[i]


ar = ar_model.AR(x)
model_ar = ar.fit(method='mle')
print(model_ar.params)
[  9.26969930e-04   8.58915676e-01   2.74538400e+00  -1.49505968e+00
-3.47150385e+00   9.64130378e-02   2.68088493e+00   1.64061441e+00
-1.38189445e+00  -1.65265872e+00   6.33895141e-01   5.68494490e-01
-2.23487269e-01]

在python中它似乎适合13阶模型。如何使其适合最简单的模型?

1 个答案:

答案 0 :(得分:2)

请参阅docs:对于statsmodels.tsa.ar_model.AR.fit(),您可以选择信息标准(参数ic)来确定滞后数量:

  

用于选择最佳滞后长度的标准。 aic - Akaike   信息准则bic - Bayes信息准则t-stat - 基于   最后滞后hqic - Hannan-Quinn信息准则如果有的话   选择信息标准,导致滞后长度   选择最低值。如果是t-stat,则模型以maxlag和   降低延迟,直到最高滞后具有显着的t-stat   95%的水平。

或提供maxlag值。如果缺少后者,statsmodels会使用默认round(12*(nobs/100.)**(1/4.))来确定要使用的延迟数。