使用泊松回归估计二元数据中的调整风险比

机器算法验证 r 参考 生物统计学 泊松回归 相对风险
2022-03-22 06:38:09

我对估计调整后的风险比感兴趣,类似于使用逻辑回归估计调整后的优势比。一些文献(例如,this)表明使用带有 Huber-White 标准误差的泊松回归是一种基于模型的方法来做到这一点

我还没有找到关于调整连续协变量如何影响这一点的文献。下面的简单模拟表明这个问题并不那么简单:

arr <- function(BLR,RR,p,n,nr,ce)
{
   B = rep(0,nr)
   for(i in 1:nr){
   b <- runif(n)<p 
   x <- rnorm(n)
   pr <- exp( log(BLR) + log(RR)*b + ce*x)
   y <- runif(n)<pr
   model <- glm(y ~ b + x, family=poisson)
   B[i] <- coef(model)[2]
   }
   return( mean( exp(B), na.rm=TRUE )  )
}

set.seed(1234)
arr(.3, 2, .5, 200, 100, 0)
[1] 1.992103
arr(.3, 2, .5, 200, 100, .1)
[1] 1.980366
arr(.3, 2, .5, 200, 100, 1)
[1] 1.566326 

在这种情况下,真实风险比为 2,当协变量效应较小时,可以可靠地恢复。但是,当协变量效应很大时,这会被扭曲。我认为这是因为协变量效应会推高上限(1),这会污染估计。

我看过但没有找到任何关于在调整后的风险比估计中调整连续协变量的文献。我知道这个网站上有以下帖子:

但他们没有回答我的问题。有这方面的论文吗?是否有任何已知的应注意的事项?

2个回答

我不知道你是否还需要这个问题的答案,但我有一个类似的问题,我想使用泊松回归。在运行您的代码时,我发现如果我将模型设置为

model <- glm(y ~ b + x, family=binomial(logit)

而不是作为您的泊松回归模型,会出现相同的结果:当 ce 接近 1 时,估计的 OR 约为 1.5。因此,我不确定您的示例是否提供了有关使用泊松回归进行二元结果的可能问题的信息。

我发现使用具有适当概率函数的直接最大似然极大地改进了对相对风险的估计。您可以直接将截断风险函数指定为过程的预测速率。

在此处输入图像描述

通常我们使用 Hessian 来为估计创建 CI。我还没有探索将其用作 Huber White 错误中的“B”矩阵(肉)并使用拟合风险来获得“A”矩阵(面包)的可能性......但我怀疑它可以工作!更可行的是,您可以使用引导程序来获得对错误指定的均值-方差关系具有鲁棒性的模型误差。

## the negative log likelihood for truncated risk function
negLogLik <- function(best, X, y) { 
  pest <- pmin(1, exp(X %*% best))
  -sum(dpois(x = y, lambda = pest, log=TRUE))
}

set.seed(100)

sim <- replicate(100, {
  n <- 200
  X <- cbind(1, 'b'=rbinom(n, 1, 0.5), 'x'=rnorm(n))
  btrue <- c(log(0.3), log(2), 1)
  ptrue <- pmin(1, exp(X %*% matrix(btrue)))
  y <- rbinom(n, 1, ptrue) ## or just take y=ptrue for immediate results
  nlm(f = logLik, p = c(log(mean(y)),0,0), X=X, y=y)$estimate
})

rowMeans(exp(sim))

给出:

> rowMeans(exp(sim))
[1] 0.3002813 2.0680780 3.0888280

中间系数给你你想要的。