繁体   English   中英

Python statsmodel VARMAX结果

[英]Python statsmodel VARMAX Results

每次运行VARMAX模型时,我都会得到不同的系数。 有什么方法可以不加种子地复制以前的结果? 谢谢

我试图复制statsmodels网页上发布的VARMA(p,q)示例:( https://www.statsmodels.org/dev/examples/notebooks/generated/statespace_varmax.html )。 为了检查结果的可重复性,我刚刚添加了一个循环以重新估计模型,并添加了一个数据框(参数)以保存结果。 这是我的代码:

%matplotlib inline
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
dta = sm.datasets.webuse('lutkepohl2', 'https://www.stata-press.com/data/r12/')
dta.index = dta.qtr
endog = dta.loc['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc', 'dln_consump']]


exog = endog['dln_consump']

parameters=pd.DataFrame()
for p in  range(10):
    print(p)
    mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(1,1))
    res = mod.fit(maxiter=1000, disp=False)
    print(res.summary())
    param= pd.DataFrame(res.params,columns= ["estimation "+str(p)])
    parameters=pd.concat([parameters, param], axis=1)

print(parameters)    

如您所见,每次我重新估计模型时,结果都会改变:

                          estimation 0  estimation 1  estimation 2  \
const.dln_inv                 0.010974      0.010934      0.010934   
const.dln_inc                 0.016554      0.016536      0.016536   
L1.dln_inv.dln_inv           -0.010164     -0.010087     -0.010087   
L1.dln_inc.dln_inv            0.360306      0.362187      0.362187   
L1.dln_inv.dln_inc           -0.032975     -0.033071     -0.033071   
L1.dln_inc.dln_inc            0.230657      0.231421      0.231421   
L1.e(dln_inv).dln_inv        -0.249916     -0.250307     -0.250307   
L1.e(dln_inc).dln_inv         0.125546      0.125581      0.125581   
L1.e(dln_inv).dln_inc         0.088878      0.089001      0.089001   
L1.e(dln_inc).dln_inc        -0.235258     -0.235176     -0.235176   
sqrt.var.dln_inv              0.044926      0.044927      0.044927   
sqrt.cov.dln_inv.dln_inc      0.001670      0.001662      0.001662   
sqrt.var.dln_inc              0.011554      0.011554      0.011554    

谢谢。 但是我试图复制statsmodels网页上发布的VARMA(p,q)示例:( https://www.statsmodels.org/dev/examples/notebooks/generation/statespace_varmax.html )。 为了检查结果的可重复性,我刚刚添加了一个循环以重新估计模型,并添加了一个数据框(参数)以保存结果。 这是我的代码:

%matplotlib inline
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
dta = sm.datasets.webuse('lutkepohl2', 'https://www.stata-press.com/data/r12/')
dta.index = dta.qtr
endog = dta.loc['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc', 'dln_consump']]


exog = endog['dln_consump']

parameters=pd.DataFrame()
for p in  range(10):
    print(p)
    mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(1,1))
    res = mod.fit(maxiter=1000, disp=False)
    print(res.summary())
    param= pd.DataFrame(res.params,columns= ["estimation "+str(p)])
    parameters=pd.concat([parameters, param], axis=1)

print(parameters)    

如您所见,每次我重新估计模型时,结果都会改变:

                          estimation 0  estimation 1  estimation 2  \
const.dln_inv                 0.010974      0.010934      0.010934   
const.dln_inc                 0.016554      0.016536      0.016536   
L1.dln_inv.dln_inv           -0.010164     -0.010087     -0.010087   
L1.dln_inc.dln_inv            0.360306      0.362187      0.362187   
L1.dln_inv.dln_inc           -0.032975     -0.033071     -0.033071   
L1.dln_inc.dln_inc            0.230657      0.231421      0.231421   
L1.e(dln_inv).dln_inv        -0.249916     -0.250307     -0.250307   
L1.e(dln_inc).dln_inv         0.125546      0.125581      0.125581   
L1.e(dln_inv).dln_inc         0.088878      0.089001      0.089001   
L1.e(dln_inc).dln_inc        -0.235258     -0.235176     -0.235176   
sqrt.var.dln_inv              0.044926      0.044927      0.044927   
sqrt.cov.dln_inv.dln_inc      0.001670      0.001662      0.001662   
sqrt.var.dln_inc              0.011554      0.011554      0.011554    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM