参数估计的方差 - 协方差矩阵计算错误?

机器算法验证 估计 最大似然 协方差矩阵 逆矩阵
2022-03-24 02:04:55

hyperbFit(mydata,hessian=TRUE)我使用命令(包 HyperbolicDist)为我的数据拟合了双曲线分布。粗麻布看起来像:

> hyperbfitmymodel$hessian
            hyperbPi      lZeta     lDelta            mu
hyperbPi   536.61654  -23.82800   25.62345   26153.16561
lZeta      -23.82800  250.74196 -261.20570     -35.58481
lDelta      25.62345 -261.20570  272.77771     182.75927
mu       26153.16561  -35.58481  182.75927 2028904.75586

现在我想根据this page 2计算参数估计的方差 - 协方差矩阵:

的渐近协方差矩阵θ^由计算的 Hessian 矩阵的负数的倒数给出 θ^.

因此,我计算:

solve(-hyperbfitalv$hessian)

这使

         hyperbPi         lZeta        lDelta            mu
hyperbPi -5.113433e-03 -0.0091511819 -0.0083271877  6.650321e-05
lZeta    -9.151182e-03 -1.6617499980 -1.5905496996  2.320893e-04
lDelta   -8.327188e-03 -1.5905496996 -1.5261031428  2.169113e-04
mu        6.650321e-05  0.0002320893  0.0002169113 -1.365591e-06

这对我来说显然是错误的,因为方差有负值,但方差不能为负?协方差是的,但不是方差?

编辑: 的完整输出hyperbFit(mydata,hessian=TRUE)

Data:     mydata
Parameter estimates:
       pi       zeta      delta         mu  
 0.090747   0.204827   0.002035  -0.002494  
Likelihood:         756.911 
Method:             Nelder-Mead 
Convergence code:   0 
Iterations:         365 

第二次编辑:如果我使用solve(hyperbfitalv$hessian)我得到

             hyperbPi         lZeta        lDelta            mu
hyperbPi  5.113433e-03  0.0091511819  0.0083271877 -6.650321e-05
lZeta     9.151182e-03  1.6617499980  1.5905496996 -2.320893e-04
lDelta    8.327188e-03  1.5905496996  1.5261031428 -2.169113e-04
mu       -6.650321e-05 -0.0002320893 -0.0002169113  1.365591e-06

第三次编辑:输出summary(hyperbfitalv)

Data:      mydata
Parameter estimates:
       pi          zeta         delta         mu    
    0.090747     0.204827     0.002035    -0.002494 
  ( 0.071508)  ( 0.264040)  ( 0.002514)  ( 0.001169)
Likelihood:         756.911 
Method:             Nelder-Mead 
Convergence code:   0 
Iterations:         365 

第 4 次编辑:好的,这是 pi、log(zeta)、log(delta) 和 mu 的粗麻布,但我怎样才能得到 pi、zeta、delta 和 mu 的粗麻布?

2个回答

默认设置中的 Optim 正在最小化,请参阅手册

默认情况下 optim 执行最小化

所以输出已经是负粗麻布了。

还应注意的是:

因为优化器调用中的参数是 pi、log(zeta)、log(delta) 和 mu,所以使用 delta 方法来获取 zeta 和 delta 的标准误差。

来源在这里

借调@Jen 的回答。事实上,结果中的第 5 行summary(hyperbfitalv)是 SE。它们确实是 inverse-hessian 的对角线元素的平方根solve(hyperbfitalv$hessian)

>>> sqrt(1.365591e-6)#for pi
0.0011685850418347824
>>> sqrt(5.113433e-3)#for mu
0.071508272248740568
>>> sqrt(1.5261031428)*0.002035#for delta
0.0025139483860139073
>>> sqrt(1.6617499980)*0.204827#for zeta
0.26404019669949413

请注意,lZeta 和 lDelta 实际上是 log(Zeta) 和 log(Delta)。干杯!