Python STATSAR模型回答错误
我试图用Python复制以下R代码Python STATSAR模型回答错误,python,numpy,statsmodels,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中,它似乎适合13阶模型。如何使其适合最简单的模型?请参阅:对于statsmodels.tsa.ar\u model.ar.fit(),您可以选择一个信息标准(参数ic)来确定滞后数: 用于选
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中,它似乎适合13阶模型。如何使其适合最简单的模型?请参阅:对于statsmodels.tsa.ar\u model.ar.fit()
,您可以选择一个信息标准(参数ic
)来确定滞后数:
用于选择最佳滞后长度的标准。aic-Akaike
信息准则bic-Bayes基于t-stat的信息准则
关于最后一个滞后hqic-Hannan Quinn信息准则,如果
选择信息标准,即导致
选择最低值。如果是t-stat,则模型以maxlag和
降低滞后,直到最高滞后有一个t-stat在
95%的水平
或提供一个
maxlag
值。如果缺少后者,statsmodels
使用默认的舍入(12*(nobs/100.)**(1/4.)
来确定要使用的滞后数。当您执行ar.fit(method='mle')
时,您是否询问是否可以设置maxlag
?例如:ar.fit(maxlag=1,method='mle')
?我可能有点离题了。答案已经给出了,所以只是一个旁白。有很多原因不能在这里说“AR答案是错误的”。即使生成的数据相似,数据也不相同,使用的方法也可能不同-噪声项并非无关紧要。此外,如果您在R中生成了更多的示例,您会发现,ar
并不总是适合一阶模型。我想标记“pandas”是不相关的。我将代码更改为model\u ar=ar.fit(method='mle',maxlag=1,disp=1,maxiter=1000)
。现在每个默认参数是[0.00326174,0.9942802]
,模型包括trend='c'
,这意味着还有一个常量。如果您不想这样做,只需添加trend='nc'
。
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]