问题描述
我是计算神经科学的硕士 2 学生。 我在分析的最后,我在应用 VAR 模型(向量自回归模型)时遇到了问题。 这是一个相当复杂的问题,它涉及对数据的不同滞后算子的测试。对我来说,当我尝试在具有负数的协方差矩阵上计算 cholesky 分解时,问题就出现了。 :
我可能已经找到了解决方案,但我无法将其包含在部署模型(“VAR”)的 python 函数中。如果有人有十分钟的时间来帮助我,请写信给我。感谢您的关注:)
对于 [1,2,3,4,6,8,9,10,12,13,14,15,16,17,18,19,20] 中的 i: 打印(i)
df_entropie_G1_w_diff = df_entropie_G1_w.iloc[i,2145:].diff()
df_RMSE_G1_w_diff = df_g1_RMSE_w.iloc[i,2145:].diff()
df_var_G1_w_diff = df_var_G1_w.iloc[i,2145:].diff()
df_data = pd.concat([df_entropie_G1_w_diff,df_RMSE_G1_w_diff,df_var_G1_w_diff],axis = 1)
df_data = df_data.diff().dropna()
df_data = df_data.T
df_data = df_data.reset_index()
del df_data['index']
df_data = df_data.T
df_data['Time'] = pd.to_timedelta(np.arange(537),unit='s')
df_data.index = df_data['Time']
del df_data['Time']
排列列名
df_data_T = df_data.T
df_data_T = df_data_T.reset_index()
del df_data_T['index']
df_data_T = df_data_T.T
df_data = df_data_T.rename(columns={0:'Entropie',1:'RMSE',2:'Var'})
model = VAR(df_data)
liste_aic = []
liste_bic = []
liste_fpe = []
liste_hqic = []
for a in range(0,25,1):
result = model.fit(a)
print('Lag Order =',a)
print('AIC : ',result.aic)
print('BIC : ',result.bic)
print('FPE : ',result.fpe)
print('HQIC: ',result.hqic,'\n')
liste_aic.append(result.aic)
liste_bic.append(result.bic)
liste_fpe.append(result.fpe)
liste_hqic.append(result.hqic)
1 滞后阶数 = 0 工商局:-59.6358271069015 BIC : -59.61188298346849 FPE:1.260344786813777e-26 总部:-59.626460351200464
滞后顺序 = 1 /opt/anaconda3/lib/python3.8/site-packages/statsmodels/tsa/base/tsa_model.py:578: ValueWarning: 提供了不受支持的索引,将被忽略,例如预测。 warnings.warn('提供了一个不受支持的索引,将是' 回溯(最近一次调用):
文件“”,第 139 行,在 打印('AIC:',result.aic)
文件“/opt/anaconda3/lib/python3.8/site-packages/statsmodels/base/wrapper.py”,第 34 行,getattribute obj = getattr(results,attr)
文件“/opt/anaconda3/lib/python3.8/site-packages/statsmodels/tsa/vector_ar/var_model.py”,第2139行,aic 返回 self.info_criteria['aic']
文件“pandas/_libs/properties.pyx”,第 33 行,在 pandas._libs.properties.CachedProperty.get
文件“/opt/anaconda3/lib/python3.8/site-packages/statsmodels/tsa/vector_ar/var_model.py”,第 2120 行,在 info_criteria ld = logdet_symm(self.sigma_u_mle)
文件“/opt/anaconda3/lib/python3.8/site-packages/statsmodels/tools/linalg.py”,第28行,在logdet_symm中 c,_ = linalg.cho_factor(m,lower=True)
文件“/opt/anaconda3/lib/python3.8/site-packages/scipy/linalg/decomp_cholesky.py”,第152行,在cho_factor c,lower = _cholesky(a,lower=lower,overwrite_a=overwrite_a,clean=False,
文件“/opt/anaconda3/lib/python3.8/site-packages/scipy/linalg/decomp_cholesky.py”,第37行,在_cholesky raise LinAlgError("第 %d 个数组的前导次要不是正数"
LinAlgError: 数组的第 3 个前导次要不是正定的
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)