了解 Firth 惩罚逻辑回归中的置信区间

机器算法验证 物流 置信区间 解释 似然比 正则化
2022-04-09 13:16:39

我最近发现了处理稀疏和/或分离数据的惩罚似然比方法。

我在理解结果时遇到了一些问题,使用 Firth 方法(R 中的 logistf 包)回馈的逻辑回归。

我有一个带有结果和预测变量的数据集,两者都是二分法:

      Y.yes Y.no
X.yes 0     22
X.no  7     356

我使用 logistf() 切换 pl 和 firth 参数执行回归。

  • pl 指定置信区间和测试是否应基于轮廓惩罚对数似然 (pl=TRUE) 或 Wald 方法 (pl=FALSE)。
  • 第一次使用 Firth 的惩罚最大似然法 (firth=TRUE) 或标准最大似然法 (firth=FALSE) 进行逻辑回归。

显示了 xYes 情况与 xNo 的系数、CI 和 p 值。

1. pl=T;firth=T    coef:-3.5    ci.low:-11.6   ci.high:4.85   p.val:1
2. pl=F;firth=T    coef:-3.5    ci.low:-7.89   ci.high:0.88   p.val:0.117
3. pl=T;firth=F    coef:-2.96   ci.low:-11.1   ci.high:1.08   p.val:1
4. pl=F;firth=F    coef:-2.96   ci.low:-8.17   ci.high:2.24   p.val:0.264

我还通过 glm() 展示了经典 ML 逻辑的结果:

5. glm   coef:-14.6   ci.low:NA   ci.high:118   p.val:0.992

正如我们所见,logistf 中的 CI 得到了改进,因为我们不再发现更多的极值或 NA 或无穷大。我仍然不确定选择哪个选项。第四个模型,两个选项都设置为 false,在我的理解中应该与普通 glm() 相同,但显然不是。另外,我不明白为什么选择 Wald CI 方法(模型 2 和 4)与轮廓惩罚似然(模型 1 和 3)相比,p 值提高了这么多。此外,选择 Wald CI 还可以提供更短的 CI 范围。

如果我有另一个二项式协变量 X2,事情就会变得奇怪:

                Y.yes  Y.no
X1.yes  X2.yes  0      12
        X2.no   0      10

X1.no   X2.yes  6      191
        X2.no   1      165

以下是回归:

1. pl=T;firth=T    
    X1 coef:-1.63    ci.low:-2.79   ci.high:-0.38   p.val:1
    X2 coef:3.15     ci.low:-0.72   ci.high:11.2    p.val:1
2. pl=F;firth=T    
    X1 coef:-1.63    ci.low:-4.24   ci.high:0.97    p.val:0.220
    X2 coef:3.15     ci.low:-2.11   ci.high:8.42    p.val:0.240
3. pl=T;firth=F    
    X1 coef:-1.08    ci.low:-5.17   ci.high:2.86    p.val:0.006
    X2 coef:3.35     ci.low:1.48    ci.high:11.5    p.val:1
4. pl=F;firth=F    
    X1 coef:-1.08    ci.low:-4.27   ci.high:2.10    p.val:0.504
    X2 coef:3.35     ci.low:-2.71   ci.high:9.42    p.val:0.279
5. glm()    
    X1 coef:-15.6    ci.low:NA      ci.high:196.4   p.val:0.994
    X2 coef:1.645    ci.low:-0.13   ci.high:4.58    p.val:0.130

在结果中,我们看到了一些奇怪之处:在模型 1 中,CI 均低于零,但回归具有最大 p 值;而在模型 3 中,我们有相反的情况,即显着的 p 值但不显着的 CI。同样在 glm 中,我们有完全不同的值。此外,不同模型中的 p 值发生显着变化,这意味着选择错误的模型将完全改变对研究的解释!

所以我的问题是,我该如何解释我上面报告的结果?然后,我应该遵循哪些标准来为logistf选择正确的选项?

谢谢!

1个回答

firth=FALSE没有给出类似结果的事实让glm我感到困惑——希望其他人可以回答。不过,就目前pl而言,您几乎总是使用配置文件置信区间更好。Wald 置信区间假设(隐式)对数似然曲面是局部二次的,这通常是一个不好的近似值。除了它们的计算量更大之外,配置文件置信区间总是(?我欢迎反例?)更准确。从 Wald 估计中得到的“改进的”p 值可能过于乐观。

生成数据:

dd <- data.frame(X=rep(c("yes","no"),c(22,363)),
             Y=rep(c("no","yes","no"),c(22,7,356)))
with(dd,table(X,Y))

复制:

m_glm <-glm(Y~X,family=binomial,data=dd)
library("logistf")
m_fp <-logistf(Y~X,data=dd,pl=TRUE,firth=TRUE)
m_mp <- logistf(Y~X,data=dd,pl=TRUE,firth=FALSE)
m_fw <-logistf(Y~X,data=dd,pl=FALSE,firth=TRUE)
m_mw <-logistf(Y~X,data=dd,pl=FALSE,firth=FALSE)

将 Wald ( confint.default) 与配置文件 CI 进行比较glm(在这种情况下,配置文件间隔实际上更窄)。

confint.default(m_glm)  ## {-2740, 2710}
confint(m_glm)          ## {NA, 118}

glm2包装进行比较(只是为了确保它glm没有做一些不稳定的事情)。

library("glm2")
glm2(Y~X,family=binomial,data=dd)
## similar results to glm(...)