在R中安装Poisson GLM-费率与计数有关的问题


11

我目前正在从事一个涉及GLM(最终是GAM)的项目,这些项目随着时间的推移会越来越多。通常,我会在SAS中执行此操作,但是我试图移至R,并遇到了一些问题。

当我适合使用以下方法对GLM进行计数时:

cdi_model <- glm(counts ~ exposure + covariate + month, data=test, family = poisson)

我得到:

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9825  -0.7903  -0.1187   0.5717   1.7649  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  1.97563    0.20117   9.821  < 2e-16 ***
exposure     0.94528    0.30808   3.068  0.00215 ** 
covariate   -0.01317    0.28044  -0.047  0.96254    
months      -0.03203    0.01303  -2.458  0.01398 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 40.219  on 29  degrees of freedom
Residual deviance: 29.297  on 26  degrees of freedom
AIC: 137.7

Number of Fisher Scoring iterations: 5

暂时忽略模型本身的性能或缺乏性能-此时主要是在使用语法等。

但是,当我尝试拟合费率数据(计数/人日)并使用像这样的偏移量时: cdi_model <- glm(count_rate ~ exposure + covariate + months + offset(log(pd)), data=test, family = poisson)

我收到50多个警告,所有警告均为“ 1:在dpois(y,mu,log = TRUE):非整数x = 0.002082”,等等。对于每个观察结果,该警告不只一个(数据集中只有30个)。

此外,模型拟合似乎很有效。输出如下:

 Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-0.0273656  -0.0122169   0.0002396   0.0072269   0.0258643  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) -15.40110   15.12772  -1.018    0.309
exposure      0.84848   22.18012   0.038    0.969
covariate    -0.02751   21.31262  -0.001    0.999
months       -0.01889    0.95977  -0.020    0.984

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 0.0068690  on 29  degrees of freedom
Residual deviance: 0.0054338  on 26  degrees of freedom
AIC: Inf

Number of Fisher Scoring iterations: 9

尽管如此,如果我将预测的速率与实际数据作图,拟合度看起来并没有那么差,并且实际效果估计似乎并没有太大变化。

任何人都知道发生了什么事-还是一切正常,又由于经验不足而错过了某些东西?

Answers:


17

当您添加偏移量时,您也不需要(也不应该)计算比率并包括曝光。

我不知道这是否是导致错误的原因,但是如果每个案例的暴露量是人日pd,则因变量应该是counts并且偏移应该是log(pd),如下所示:

cdi_model <- glm(counts ~ covariate + months + offset(log(pd)), 
                 data=test, family = poisson)

(+1)有时我看到流行病学家将任何感兴趣的独立变量称为“暴露”(例如“吸烟的暴露”)。但是要注意,您绝对不应该将比率用作因变量。
Andy W

我猜想“月”变量是曝光时间的长短,但是原理是相同的。
Aniko

@Aniko我想我们会尽快找到答案。我当时在想,如果将速率考虑为合理,(counts/thing)那么对数线性模型几乎总是存在counts ~ ... + offset(log(thing))。而且,当我们第二次猜测时,我还预测log(pd) == exposure...
conjugateprior

为了澄清一些事情-安迪W是正确的。“曝光”实际上是一个相关的自变量(在这种情况下,是一项政策变更)。月只是“自日期X起的月”,以便对数据趋势进行一些控制。
Fomite

@ConjugatePrior在您的答案中使用模型时,该模型的输出不应该按比例收费吗?运行它似乎会将所有内容作为原始计数输出,尽管包括了偏移量。还是我还缺少其他步骤?
Fomite
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.