为什么泊松回归系数有偏差?

机器算法验证 r 回归 泊松分布 泊松回归 链接功能
2022-03-19 04:49:38

假设我运行一个简单的泊松回归,其中

YPois(5X)

如果我在的泊松回归,我希望得到相反,我得到的数字要高得多。这是为什么?YX5

result <- c()

for(i in 1:1000) {
  x <- runif(100)
  y <- rpois(100, 5 *x)
  m <- glm(y ~ x, family = 'poisson')

  result <- c(result, exp(coef(m)[2]))
}
2个回答

默认的链接函数是泊松的日志函数,这意味着:

E[y]=exp(log(5)+log(x))

如果您指定 glm 模型,y ~ log(x)那么您应该恢复“1”作为系数,“log(5)”作为截距

这不是泊松回归的工作原理。泊松回归的链接函数是日志,所以如果你做了类似的事情

x<-runif(100)
eta<- 5*x
lam<- exp(eta)
y<-rpois(length(lam), lam)
model<- glm(y~x, family = 'poisson')

然后,您将恢复对 x 的系数和截距的正确估计。

但是,如果您要使用身份链接功能,您可以从代码中恢复正确的系数。例如

x <- runif(100)
y <- rpois(100, 5 *x)
m <- glm(y ~ x, family = poisson(link = 'identity'), start = c(2,2))

请注意,在这种情况下,R 会警告您优化算法遇到困难,因为均值不受约束为正,从而导致对数似然评估出现问题。日志链接确保线性预测器(不受约束)不会导致此类问题。