为什么R的glm的协方差矩阵与minitab的probit分析的协方差矩阵不同

xj3cbfub  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(96)

使用以下R脚本中的数据集。R二项式probit glm vcov函数的输出与Minitab的probit分析方差协方差表的输出不同。vcov的R文档说明它返回方差协方差表。拟合的模型系数相同(到3 dp)但是协方差矩阵是完全不同的。你怎么能从R得到和从minitab得到的相同的矩阵输出,反之亦然?
我原以为R和Minitab的表是相等的。
我问Minitab支持,我有一个付费的年度订阅,并得到了这个无益的回应:
“感谢您的询问,我们无法评论其他应用程序中使用的方法。但是,您可以在下面的页面中找到使用的公式。
https://support.minitab.com/en-us/minitab/21/help-and-how-to/statistical-modeling/reliability/how-to/probit-analysis/methods-and-formulas/equation/
它指向一个包含方程πj = c +(1 − c)g(β0 + xjβ)的页面,没有其他内容-我期待着关于奇异值分解或类似的东西。
我只订阅了Minitab的支持,但这些天它似乎没有什么帮助,所以我可能会使用R代替。

从R

  1. df<-data.frame(stimulus = c(0.615,0.634,0.655,0.675),
  2. success = c(0,3,3,2),
  3. failure = c(5,4,3,0))
  4. fm <- glm(cbind(success,failure)~stimulus,data=df,
  5. family=binomial("probit"))
  6. coef(fm)
  7. (Intercept) stimulus
  8. -29.68637 45.89187
  9. vcov(fm)
  10. (Intercept) stimulus
  11. (Intercept) 156.9548 -244.3060
  12. stimulus -244.3060 380.5229

字符串

来自Minitab

相同系数但不同协方差矩阵
回归表
可变系数标准误差Z P
恒量-29.6864 13.1351 -2.26 0.024
刺激45.8920 20.4461 2.24 0.025
自然
响应0
基质VCCO 1
172.531 -268.482
-268.482 418.044

gab6jxml

gab6jxml1#

“有两只手表的人永远不知道现在是什么时候。
值得一提的是,glmmTMB-它使用了与glm完全不同的拟合过程-给出了一个接近Minitab的协方差矩阵。

  1. m_glm <- glm(cbind(success,failure)~stimulus,data=df,
  2. family=binomial("probit"))
  3. library(glmmTMB)
  4. m_tmb <- glmmTMB(cbind(success,failure)~stimulus,data=df,
  5. family=binomial("probit"))
  6. vcov(m_tmb)
  7. Conditional model:
  8. (Intercept) stimulus
  9. (Intercept) 172.5314 -268.4821
  10. stimulus -268.4821 418.0434

字符串
关于如何计算glmhere的协方差矩阵,还有更多的信息..(glm)将不同于基于对数似然曲面的估计曲率的值(glmmTMB)。我认为它可能与概率单位链接 * 非规范 * 的事实有关。(当我们改变为典型的logit链接时,来自glmglmmTMB的协方差矩阵几乎相同)。(我已经问过a question on Cross Validated这一点;托马斯Lumley在回答中证实了差异的产生,因为glmmTMB/Minitab的协方差矩阵是基于 * 观测信息 * 估计的,而GLM使用 * 预期(Fisher)信息 *。
也就是说,您还应该小心使用标准误差(sqrt(diag(vcov(...))))作为GLM参数的不确定性度量,因为它们只对 * 大 * 数据集可靠。glmglmmTMB的轮廓置信区间非常相似。

  1. > confint.default(m_glm)
  2. 2.5 % 97.5 %
  3. (Intercept) -54.24111 -5.131622
  4. stimulus 7.65886 84.124881
  5. > confint(m_glm)
  6. Waiting for profiling to be done...
  7. 2.5 % 97.5 %
  8. (Intercept) -59.70676 -6.66262
  9. stimulus 10.01528 92.56096
  10. > confint(m_tmb, method = "wald", estimate = FALSE) ## equiv. confint.default()
  11. 2.5 % 97.5 %
  12. (Intercept) -55.430789 -3.942062
  13. stimulus 5.818323 85.965601
  14. > confint(m_tmb, method = "profile", estimate = FALSE) ## equiv. confint()
  15. 2.5 % 97.5 %
  16. (Intercept) -59.70642 -6.660542
  17. stimulus 10.01219 92.560959

展开查看全部

相关问题