是否有任何方法从矩阵数组格式的状态模型()中调用VARMAX模型的结果(截距、AR和MA),而不使用手动输入它或编写一个包含一系列循环的过程?
model = VARMAX(endog=df_data[['stock','bond']],order=(1,1))
results = mode.fit()
print(results.params)我得到了
intercept.stock 0.011664
intercept.bond 0.002932
L1.stock.stock 0.120046
L1.bond.stock -0.978197
L1.stock.bond -0.010727
L1.bond.bond 0.360093
L1.e(stock).stock -0.012520
L1.e(bond).stock 0.000342
L1.e(stock).bond 0.001340
L1.e(bond).bond -0.013166
sqrt.var.stock 0.089868
sqrt.cov.stock.bond -0.001321
sqrt.var.bond 0.008202我想要这种格式的数组(或类似的):
In[1]: arr_intercept
Out[1]: array([[0.011664],
[0.002932]])
In[2]:arr_AR
Out[2]: array([[ 0.120046, -0.978197],
[-0.010727, 0.360093]])
In[3]:arr_MA
Out[3]: array([[-0.01252 , 0.000342 ],
[ 0.0013407, -0.013166 ]])发布于 2020-07-24 20:10:24
提供我的脚本提取拦截,AR,MA结果矩阵格式。如果p>1或q>1,则得到的AR和MA系数矩阵是三维的。
# parameters to run statsmodels.varmax
depvar = ['stock', 'bond', 'gold']
nvar = len(depvar) # number of dependent variables
p = 2
q = 2
model = VARMAX(endog=df_data[depvar], order=(p, q))
results = model.fit(maxiter=1000, disp=False)
# intercept matrix results
arr_intercept = np.zeros(nvar)
for i in range(0, nvar):
arr_intercept[i] = results.params['intercept.' + depvar[i]]
# AR lagged coefficients matrix
mat_coef_ar = np.zeros((p, nvar, nvar))
for i in range(0, p): # axis=0 loop for lags
for k in range(0, nvar): # axis=1 loop for columns
for j in range(0, nvar): # axis=2 loop for rows
coefa[i, j, k] = results.params['L' + str(i + 1) + '.' + depvar[k] + '.' + depvar[j]]
# creating MA epsilon coefficient matrix
mat_coef_ma = np.zeros((q, nvar, nvar))
for i in range(0, q):
for k in range(0, nvar):
for j in range(0, nvar):
coefu[i, j, k] = results.params['L' + str(i + 1) + '.e(' + depvar[k] + ').' + depvar[j]]发布于 2021-07-17 12:17:28
使用results对象的下列属性:
arr_AR = results.coefficient_matrices_var
arr_MA = results.coefficient_matrices_vma
arr_intercept = results.conf_int(alpha=1).iloc[:2,:1].to_numpy() https://stackoverflow.com/questions/63065341
复制相似问题