全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
745 1
2024-01-22
求助!用R做BEKK 一直出现H IS SINGULAR!后报错  [size=13.3333px]In BEKK(garchbekk) : negative inverted hessian matrix element。[size=13.3333px]请问这是怎么回事呢?
[size=13.3333px]

[size=13.3333px] 代码如下:就是这个for循环出的问题:

[size=13.3333px]

[size=13.3333px]for (ii in 1:(nn1-1)){
[size=13.3333px]  for (jj in (ii+1):nn1){
[size=13.3333px]    if (exists('estimated'))
[size=13.3333px]    {
[size=13.3333px]      rm(estimated)
[size=13.3333px]    }
[size=13.3333px]    if(sum(data_3[,ii])!=0 & sum(data_3[,jj])!=0)
[size=13.3333px]    {
[size=13.3333px]      try({garchbekk <- cbind(data_3[,ii],data_3[,jj])
[size=13.3333px]      estimated <- BEKK(garchbekk)},silent = T)
[size=13.3333px]      if (exists('estimated')){
[size=13.3333px]        t_a21=estimated$est.params$`2`[2,1]/estimated$asy.se.coef[[2]][2,1]
[size=13.3333px]        t_a12=estimated$est.params$`2`[1,2]/estimated$asy.se.coef[[2]][1,2]
[size=13.3333px]        t_b21=estimated$est.params$`3`[2,1]/estimated$asy.se.coef[[3]][2,1]
[size=13.3333px]        t_b12=estimated$est.params$`3`[1,2]/estimated$asy.se.coef[[3]][1,2]
[size=13.3333px]        p_a21=2*(1-pnorm(abs(t_a21)))
[size=13.3333px]        p_a12=2*(1-pnorm(abs(t_a12)))
[size=13.3333px]        p_b21=2*(1-pnorm(abs(t_b21)))
[size=13.3333px]        p_b12=2*(1-pnorm(abs(t_b12)))
[size=13.3333px]        if(p_a21<=0.05){a21=estimated$est.params$`2`[2,1]}else{a21=0}      
[size=13.3333px]        if(p_a12<=0.05){a12=estimated$est.params$`2`[1,2]}else{a12=0}
[size=13.3333px]        if(p_b21<=0.05){b21=estimated$est.params$`3`[2,1]}else{b21=0}
[size=13.3333px]        if(p_b12<=0.05){b12=estimated$est.params$`3`[1,2]}else{b12=0}
[size=13.3333px]      
[size=13.3333px]        data_4[ii,jj]=a21                                                  
[size=13.3333px]        data_4[jj,ii]=a12                                                  
[size=13.3333px]        data_5[ii,jj]=b21                                                   
[size=13.3333px]        data_5[jj,ii]=b12                                                   
[size=13.3333px]      }
[size=13.3333px]    }                                                               
[size=13.3333px]    next                                 
[size=13.3333px]  }
[size=13.3333px]}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2024-1-26 09:50:39
对于任何需要使用MLE为参数估计方法的计量模型,其模型参数估计之后所得到这组参数估计值(大部分程序优化过程为求极小值),它对应的正常的Hessian matrix应该是正定矩阵,即说明优化计算求得的该组参数估计值是 (局部) 极小值,这时候其inverse matrix (variance-covariance matrix) 也是正定矩阵,所以主对角线上的元素都是正的,能正常进行开根号运算得到每一个参数估计值对应的hessian inverse普通标准误。如果该组参数估计值对应的Hessian matrix是不定矩阵,那么这组参数估计值就不是 (局部) 极小值,而只是落在一个鞍点的位置,这时候该矩阵同时有正特征值和负特征值,其inverse matrix (variance-covariance matrix) 也是不定矩阵,所以其主对角线上的元素会出现有正有负,而负数是不能进行开根号运算的,因此负数元素对应的参数估计值们就求不到对应的hessian inverse普通标准误,R以及其他编程语言或者商业软件会为这些求不出标准误的参数估计值的标准误返回类似NaN的非值数值对象,并在计算结果中告知hessian matrix出现的这一现象,或者直接跳过参数估计结果的展示直接以hessian matrix的这一结果发出提示警告。

发生这种计算情况,就是说明针对所分析的样本数据,所选择模型的参数估计存在困难,在优化过程中,它难以找到一组参数估计值能以 (局部) 极小值收敛,从根本上来说,这经常是在提示你该模型的设定对于样本数据来说不合适或者模型的机制太复杂,或许换一个更适合数据的模型方法会更恰当,当然还有一种情况就是优化过程的计算有问题,但后者一般不常是主要原因,因为很多程序包开发者的优化计算都是调用很成熟的程序算法进行的,所以前者一般常是问题所在。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群