【问题标题】:Pseudo R² for a Poisson GLM with offset具有偏移的 Poisson GLM 的伪 R²
【发布时间】:2015-09-10 09:34:54
【问题描述】:

我的问题可能是技术性的:我正在尝试通过使用人口 (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)

有人对此有解释吗?

【问题讨论】:

    标签: r offset glm pscl


    【解决方案1】:

    这里是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 
    

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多