簡體   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