带偏移的泊松 GLM 的伪 R²

  • 本文关键字:GLM 的伪 offset glm pscl
  • 更新时间 :
  • 英文 :


我的问题可能是技术性的:我试图通过使用群体(p)作为补偿来控制暴露来对疾病计数(d)进行建模。在R中,我找到了两种可能的方法:

m1 -> glm(d ~ 1 + offset(log(n)), family=poisson, data=dat)
m2 -> glm(d ~ 1, family=poisson, data=dat, offset=log(n))

m1和m2的总结表明summary(m1)=summary(m2),但如果我试图通过pR2(pscl包)计算McFadden:McFadden(m1)McFadden(m2)

有人对此有解释吗?

以下是pscl:::pR2.glm:的源代码

function (object, ...) 
{
    llh <- logLik(object)
    objectNull <- update(object, ~1)
    llhNull <- logLik(objectNull)
    n <- dim(object$model)[1]
    pR2Work(llh, llhNull, n)
}
<environment: namespace:pscl>

如果公式中指定了偏移量,则它会在第二行中丢失(update用于计算仅截距模型)。

参见此示例:

library("foreign")
ceb <- read.dta("http://data.princeton.edu/wws509/datasets/ceb.dta")
ceb$y <- round(ceb$mean*ceb$n, 0)
ceb$os <- log(ceb$n)  
m0 <- glm(y ~ res + offset(os), data=ceb, family=poisson)
m1 <- glm(y ~ res, offset=os, data=ceb, family=poisson)
all.equal(coef(m0), coef(m1))
# [1] TRUE
### compute null models
coef(update(m0, ~1))  # wrong, offset not considered
# (Intercept) 
#        5.02 
coef(update(m1, ~1))
# (Intercept) 
#       1.376 
coef(update(m0, ~1, offset=os))
# (Intercept) 
#       1.376 

相关内容

  • 没有找到相关文章

最新更新