Python statsmodel VARMAX结果

Python statsmodel VARMAX结果,python,statsmodels,Python,Statsmodels,每次运行VARMAX模型时,我都会得到不同的系数。 有没有什么方法可以复制我以前的结果而不强加种子? 多谢各位 我试图复制statsmodels网页上发布的VARMA(p,q)示例:()。为了检查结果的可复制性,我只添加了一个循环来重新估计模型,并添加了一个数据帧(参数)来保存结果。这是我的代码: %matplotlib inline import numpy as np import pandas as pd import statsmodels.api as sm import matplo

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

我试图复制statsmodels网页上发布的VARMA(p,q)示例:()。为了检查结果的可复制性,我只添加了一个循环来重新估计模型,并添加了一个数据帧(参数)来保存结果。这是我的代码:

%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)    
%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    
                          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)示例:()。为了检查结果的可复制性,我只添加了一个循环来重新估计模型,并添加了一个数据帧(参数)来保存结果。这是我的代码:

%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)    
%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    
                          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上发布一个Github问题(尽管在那里您还需要一个完全可复制的示例)。我试图复制statsmodels网页上发布的示例,但我仍然发现VARMA(p,q)模型每次重新估计时都会返回不同的结果。我已经发布了一个详细的答案,代码,coefs。。。谢谢,如果我选择了少量的“maxiter”(即50),我只能得到非常相同的结果。我运行了你的示例代码,但无法复制你的结果-我每次都得到相同的估计。您可以将您的问题以及安装的详细信息发布到Statsmodels bug tracker。谢谢!我只是再次运行代码,但仍然发现了不同的结果:例如,对于保存在数据帧“参数”第一行的第一个变量(“const.dln_inv”),我得到了3个不同的COEF(共10个估计值)。我得到了0.010974、0.010934和0.010920,我将把我的问题发布到GitHub上的Statsmodels。