假设我运行一个简单的泊松回归,其中
如果我在的泊松回归,我希望得到。相反,我得到的数字要高得多。这是为什么?
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]))
}
假设我运行一个简单的泊松回归,其中
如果我在的泊松回归,我希望得到。相反,我得到的数字要高得多。这是为什么?
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]))
}
默认的链接函数是泊松的日志函数,这意味着:
如果您指定 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 会警告您优化算法遇到困难,因为均值不受约束为正,从而导致对数似然评估出现问题。日志链接确保线性预测器(不受约束)不会导致此类问题。