使用lme4 glmer和glmer.nb帮助解释计数数据GLMM-负二项式与Poisson


9

我对GLMM的规范和解释有一些疑问。3个问题绝对是统计学上的问题,2个是关于R的更具体的问题。我在这里发布,因为最终我认为问题是GLMM结果的解释。

我目前正在尝试安装GLMM。我使用的是美国经纬度数据库中的美国人口普查数据。我的观察是人口普查区。我的因变量是空置住房的数量,我对空置与社会经济变量之间的关系很感兴趣。这里的示例很简单,仅使用两个固定的影响:非白人人口百分比(种族)和家庭收入中位数(阶级)及其相互作用。我想包括两个嵌套的随机效应:几十年和几十年之内的片段,即(十年/片段)。我正在考虑这些随机变量,以控制空间(即区域之间)和时间(即数十年之间)的自相关。但是,我也对十年作为固定影响感兴趣,因此我也将它作为固定因素包括在内。

由于我的自变量是非负整数计数变量,因此我一直在尝试拟合泊松和负二项式GLMM。我使用的是房屋总数的对数。这意味着系数被解释为对空置率的影响,而不是对空置房屋总数的影响。

我目前有使用lme4的glmer和glmer.nb估计的泊松和负二项式GLMM的结果。根据我对数据和研究领域的了解,对系数的解释对我来说很有意义。

如果您需要数据脚本,它们位于我的Github上。该脚本包括我在构建模型之前所做的更多描述性调查。

这是我的结果:

泊松模型

Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: poisson  ( log )
Formula: R_VAC ~ decade + P_NONWHT + a_hinc + P_NONWHT * a_hinc + offset(HU_ln) +      (1 | decade/TRTID10)
   Data: scaled.mydata

     AIC      BIC   logLik deviance df.resid 
 34520.1  34580.6 -17250.1  34500.1     3132 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.24211 -0.10799 -0.00722  0.06898  0.68129 

Random effects:
 Groups         Name        Variance Std.Dev.
 TRTID10:decade (Intercept) 0.4635   0.6808  
 decade         (Intercept) 0.0000   0.0000  
Number of obs: 3142, groups:  TRTID10:decade, 3142; decade, 5

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)     -3.612242   0.028904 -124.98  < 2e-16 ***
decade1980       0.302868   0.040351    7.51  6.1e-14 ***
decade1990       1.088176   0.039931   27.25  < 2e-16 ***
decade2000       1.036382   0.039846   26.01  < 2e-16 ***
decade2010       1.345184   0.039485   34.07  < 2e-16 ***
P_NONWHT         0.175207   0.012982   13.50  < 2e-16 ***
a_hinc          -0.235266   0.013291  -17.70  < 2e-16 ***
P_NONWHT:a_hinc  0.093417   0.009876    9.46  < 2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) dc1980 dc1990 dc2000 dc2010 P_NONWHT a_hinc
decade1980  -0.693                                            
decade1990  -0.727  0.501                                     
decade2000  -0.728  0.502  0.530                              
decade2010  -0.714  0.511  0.517  0.518                       
P_NONWHT     0.016  0.007 -0.016 -0.015  0.006                
a_hinc      -0.023 -0.011  0.023  0.022 -0.009  0.221         
P_NONWHT:_h  0.155  0.035 -0.134 -0.129  0.003  0.155   -0.233
convergence code: 0
Model failed to converge with max|grad| = 0.00181132 (tol = 0.001, component 1)

负二项式模型

Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: Negative Binomial(25181.5)  ( log )
Formula: R_VAC ~ decade + P_NONWHT + a_hinc + P_NONWHT * a_hinc + offset(HU_ln) +      (1 | decade/TRTID10)
   Data: scaled.mydata

     AIC      BIC   logLik deviance df.resid 
 34522.1  34588.7 -17250.1  34500.1     3131 

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.24213 -0.10816 -0.00724  0.06928  0.68145 

Random effects:
 Groups         Name        Variance  Std.Dev. 
 TRTID10:decade (Intercept) 4.635e-01 6.808e-01
 decade         (Intercept) 1.532e-11 3.914e-06
Number of obs: 3142, groups:  TRTID10:decade, 3142; decade, 5

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)     -3.612279   0.028946 -124.79  < 2e-16 ***
decade1980       0.302897   0.040392    7.50 6.43e-14 ***
decade1990       1.088211   0.039963   27.23  < 2e-16 ***
decade2000       1.036437   0.039884   25.99  < 2e-16 ***
decade2010       1.345227   0.039518   34.04  < 2e-16 ***
P_NONWHT         0.175216   0.012985   13.49  < 2e-16 ***
a_hinc          -0.235274   0.013298  -17.69  < 2e-16 ***
P_NONWHT:a_hinc  0.093417   0.009879    9.46  < 2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) dc1980 dc1990 dc2000 dc2010 P_NONWHT a_hinc
decade1980  -0.693                                            
decade1990  -0.728  0.501                                     
decade2000  -0.728  0.502  0.530                              
decade2010  -0.715  0.512  0.517  0.518                       
P_NONWHT     0.016  0.007 -0.016 -0.015  0.006                
a_hinc      -0.023 -0.011  0.023  0.022 -0.009  0.221         
P_NONWHT:_h  0.154  0.035 -0.134 -0.129  0.003  0.155   -0.233

泊松DHARMa测试

    One-sample Kolmogorov-Smirnov test

data:  simulationOutput$scaledResiduals
D = 0.044451, p-value = 8.104e-06
alternative hypothesis: two-sided

    DHARMa zero-inflation test via comparison to expected zeros with simulation under H0 = fitted model

data:  simulationOutput
ratioObsExp = 1.3666, p-value = 0.159
alternative hypothesis: more

负二项式DHARMa检验

    One-sample Kolmogorov-Smirnov test

data:  simulationOutput$scaledResiduals
D = 0.04263, p-value = 2.195e-05
alternative hypothesis: two-sided

    DHARMa zero-inflation test via comparison to expected zeros with simulation under H0 = fitted model

data:  simulationOutput2
ratioObsExp = 1.376, p-value = 0.174
alternative hypothesis: more

DHARMa图

泊松

泊松模型DHARMa图

负二项式

负二项式模型DHARMa图

统计问题

由于我仍在寻找GLMM,因此我对规范和解释感到不安全。我有一些疑问:

  1. 看来我的数据不支持使用Poisson模型,因此使用负二项式更好。但是,我不断收到警告,即使我增加了最大极限,我的负二项式模型也会达到其迭代极限。“在theta.ml(Y,mu,weights = object @ resp $ weights,limit = limit,:达到迭代极限。”这发生在使用许多不同规范的情况下(例如,固定和随机效应的最小和最大模型)。我还尝试过删除我的受抚养人中的离群值(总收入,我知道!),因为值的前1%非常离群值(最低99%的范围为0-1012,最高1%的范围为1013-5213)。对迭代没有任何影响,对系数也几乎没有影响,我在这里不包括那些细节。泊松和负二项式之间的系数也非常相似。这种缺乏融合的问题吗?负二项式模型是否合适?我还使用了负二项式模型AllFit并非所有的优化器都会发出此警告(bobyqa,Nelder Mead和nlminbw不会)。

  2. 我的十年固定效应的方差始终很小或为0。我知道这可能意味着模型过拟合。从固定效应中减去十进制会增加十进制随机效应方差至0.2620,并且对固定效应系数的影响不大。放进去有什么问题吗?我很好地解释它是因为根本不需要解释观察差异。

  3. 这些结果是否表明我应该尝试零膨胀模型?DHARMa似乎暗示零通胀可能不是问题。如果您认为我仍然应该尝试,请参见下文。

R题

  1. 我愿意尝试零膨胀模型,但是我不确定对于零膨胀的Poisson和负二项式GLMM,哪个包隐含了嵌套的随机效应。我将使用glmmADMB将AIC与零膨胀模型进行比较,但是它仅限于单个随机效果,因此不适用于此模型。我可以尝试使用MCMCglmm,但是我不知道贝叶斯统计信息,因此也不吸引人。还有其他选择吗?

  2. 我可以在summary(model)中显示指数系数,还是必须在summary(汇总)之外执行此操作?


1
(2)很容易:decade固定和随机都没有意义。可以将它固定为仅(1 | decade:TRTID10)包含随机数(这相当于(1 | TRTID10)假设您TRTID10在不同的十年中没有相同的水平),或者从固定效果中将其删除。只有4个级别,您最好将其修复:通常的建议是,如果一个级别有5个或更多级别,则适合随机效果。
变形虫

1
除此之外,您的两个图看起来相同。
变形虫

1
关于收敛警告-您在(1)中说过,您尝试过bobyqa优化器,但未产生任何警告。那是什么问题呢?只需使用bobyqa
变形虫

1
顺便说一句,我不明白您为什么说“看来我的数据不支持使用泊松模型”。
变形虫

1
以我的经验,bobyqa收敛要比默认优化器好(我想我在某处读到它将在的未来版本中变为默认lme4)。我认为您不必担心默认优化器与会不会收敛bobyqa
变形虫

Answers:


10

我相信您的估算有一些重要问题需要解决。

根据我通过检查您的数据所收集的数据,您的单位未按地理位置进行分组,即县内的人口普查区域。因此,使用区域作为分组因子不适合捕获空间异质性,因为这意味着您具有与组相同数量的个体(或者换句话说,所有组每个只有一个观察值)。使用多级建模策略可以使我们估计个体级方差,同时控制组间方差。由于每个小组只有一个人,因此,小组之间的差异与个人级别的差异相同,因此违反了多层次方法的目的。

另一方面,分组因子可以表示一段时间内的重复测量。例如,在纵向研究的情况下,个人的“数学”分数可以每年重新计算一次,因此我们将在n年中为每个学生获得年度价值(在这种情况下,分组因子是该学生,因为我们拥有n学生内“嵌套”的观察数)。对于您的情况,您对的每个人口普查区域都有重复的度量decade。因此,您可以将TRTID10变量用作分组因子,以捕获“十年方差之间”。这导致在635个区域中嵌套3142个观测值,每个普查区域大约有4和5个观测值。

如评论中所述,将decade分组因子用作分组不是很合适,因为每个普查区只有大约5年的时间,引入decade协变量可以更好地捕捉其效果。

其次,确定您的数据应该使用泊松模型还是负二项式模型(或零膨胀方法)建模。考虑数据中的过度分散量。泊松分布的基本特征是等分散,这意味着均值等于分布的方差。查看您的数据,很明显存在过度分散。差异远大于均值。

library(dplyr)    
 dispersionstats <- scaled.mydata %>%
 + group_by(decade) %>%
 + summarise(
 + means = mean(R_VAC),
 + variances = var(R_VAC),
 + ratio = variances/means)

##   dispersionstats
##   # A tibble: 5 x 5
##   decade     means variances     ratio 
##    <int>     <dbl>     <dbl>     <dbl> 
## 1   1970  45.43513   4110.89  90.47822 
## 2   1980 103.52365  17323.34 167.33707 
## 3   1990 177.68038  62129.65 349.67087 
## 4   2000 190.23150  91059.60 478.67784 
## 5   2010 247.68246 126265.60 509.78821 

尽管如此,要确定负二项式在统计学上是否更合适,一种标准方法是在Poisson模型和负二项式模型之间进行似然比检验,这表明负数更适合。

library(MASS)
library(lmtest)

modelformula <- formula(R_VAC ~ factor(decade) + P_NONWHT * a_hinc + offset(HU_ln))

poismodel <- glm(modelformula, data = scaled.mydata, family = "poisson")   
nbmodel <- glm.nb(modelformula, data = scaled.mydata)

lrtest(poismodel, nbmodel)

## Likelihood ratio test

##  Model 1: R_VAC ~ factor(decade) + P_NONWHT * a_hinc + offset(HU_ln)  
## Model 2: R_VAC ~ factor(decade) + P_NONWHT * a_hinc + offset(HU_ln)
##   #Df  LogLik Df  Chisq Pr(>Chisq)
## 1   8 -154269
## 2   9  -17452  1 273634  < 2.2e-16 ***
##  ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

在确定这一点之后,下一个测试可以考虑是否应使用类似的方法来保证采用多级(混合模型)方法,这表明多级版本提供了更好的拟合度。(只要模型相同,可以使用类似的测试来比较假定泊松分布到glmer.nb对象的glmer拟合。)

library(lme4)

glmmformula <- update(modelformula, . ~ . + (1|TRTID10))

nbglmm <- glmer.nb(glmmformula, data = scaled.mydata)

lrtest(nbmodel, nbglmm)

## Model 1: R_VAC ~ factor(decade) + P_NONWHT * a_hinc + offset(HU_ln)
## Model 2: R_VAC ~ factor(decade) + P_NONWHT + a_hinc + (1 | TRTID10) +
##     P_NONWHT:a_hinc + offset(HU_ln)
##   #Df LogLik Df Chisq Pr(>Chisq)
## 1   9 -17452
## 2  10 -17332  1 239.3  < 2.2e-16 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

关于泊松模型和nb模型的估计,实际上它们实际上彼此非常相似,主要区别是标准误差,即,如果存在过度分散,泊松模型往往会提供有偏差的标准误差。以您的数据为例:

poissonglmm <- glmer(glmmformula, data = scaled.mydata)
summary(poissonglmm)

## Random effects:
##  Groups  Name        Variance Std.Dev.
## TRTID10 (Intercept) 0.2001   0.4473
## Number of obs: 3142, groups:  TRTID10, 635

## Fixed effects:
##                     Estimate Std. Error z value Pr(>|z|)
## (Intercept)        -2.876013   0.020602 -139.60   <2e-16 ***
## factor(decade)1980  0.092597   0.007602   12.18   <2e-16 ***
## factor(decade)1990  0.903543   0.007045  128.26   <2e-16 ***
## factor(decade)2000  0.854821   0.006913  123.65   <2e-16 ***
## factor(decade)2010  0.986126   0.006723  146.67   <2e-16 ***
## P_NONWHT           -0.125500   0.014007   -8.96   <2e-16 ***
## a_hinc             -0.107335   0.001480  -72.52   <2e-16 ***
## P_NONWHT:a_hinc     0.160937   0.003117   51.64   <2e-16 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

summary(nbglmm)
## Random effects:
##  Groups  Name        Variance Std.Dev.
##  TRTID10 (Intercept) 0.09073  0.3012
## Number of obs: 3142, groups:  TRTID10, 635

## Fixed effects:
##                     Estimate Std. Error z value Pr(>|z|)
## (Intercept)        -2.797861   0.056214  -49.77  < 2e-16 ***
## factor(decade)1980  0.118588   0.039589    3.00  0.00274 **
## factor(decade)1990  0.903440   0.038255   23.62  < 2e-16 ***
## factor(decade)2000  0.843949   0.038172   22.11  < 2e-16 ***
## factor(decade)2010  1.068025   0.037376   28.58  < 2e-16 ***
## P_NONWHT            0.020012   0.089224    0.22  0.82253
## a_hinc             -0.129094   0.008109  -15.92  < 2e-16 ***
## P_NONWHT:a_hinc     0.149223   0.018967    7.87 3.61e-15 ***
## ---
## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

请注意,系数估算值非常相似,主要区别只是协变量之一的重要性,以及随机效应方差的差异,这表明nb中的超分散参数捕获了单位级方差模型(thetaglmer.nb对象中的值)捕获了随机效应所捕获的部分道间方差。

关于指数系数(和相关的置信区间),可以使用以下方法:

fixed <- fixef(nbglmm)
confnitfixed <- confint(nbglmm, parm = "beta_", method = "Wald") # Beware: The Wald method is less accurate but much, much faster.

# The exponentiated coefficients are also known as Incidence Rate Ratios (IRR)
IRR <- exp(cbind(fixed, confintfixed)
IRR
##                         fixed      2.5 %     97.5 %
## (Intercept)        0.06094028 0.05458271 0.06803835
## factor(decade)1980 1.12590641 1.04184825 1.21674652
## factor(decade)1990 2.46807856 2.28979339 2.66024515
## factor(decade)2000 2.32553168 2.15789585 2.50619029
## factor(decade)2010 2.90962703 2.70410073 3.13077444
## P_NONWHT           1.02021383 0.85653208 1.21517487
## a_hinc             0.87889172 0.86503341 0.89297205
## P_NONWHT:a_hinc    1.16093170 1.11856742 1.20490048

关于零通胀的最终想法。没有零膨胀的泊松模型或negbin模型的多级实现(至少我知道),该模型无法为混合物的零膨胀分量指定方程式。该glmmADMB模型可让您估算恒定的零充气参数。一种替代方法是使用程序包中的zeroinfl函数pscl,尽管它不支持多级模型。因此,您可以将单级负二项式的拟合与单级零膨胀负二项式的拟合进行比较。可能的是,如果零膨胀对于单级模型不重要,则对于多级规范可能不重要。

附录

如果您担心空间自相关,则可以使用某种形式的地理加权回归对此进行控制(尽管我相信这使用的是点数据,而不是面积)。或者,您可以按其他分组因子(州,县)对普查区域进行分组,并将其作为随机效应包括在内。最后,我不确定这是否完全可行,例如,可以使用R_VAC一阶邻居的平均数作为协变量来合并空间依赖性。无论如何,在采用这种方法之前,明智的是确定是否确实存在空间自相关(使用Global Moran's I,LISA测试和类似方法)。


1
brms可以拟合具有随机效应的零膨胀负二项式模型。
Andrew M

@prestevez和@Andrew,这非常有用!它澄清了我遇到的许多问题。感谢您抽出宝贵的时间来指导我。我将尝试从中拟合zinb混合模型brms,并将其与如上所述的glmer.nb模型进行比较。我还将尝试将人口普查定义的地点(基本上是市政当局,约170个小组)包括在内,作为随机效应的分组因子(数据中仅5个县,因此我将不使用它)。我还将使用Global Moran的I测试残差的空间自相关。完成后,我将进行报告。
塞缪尔·沃克,

@AndrewM,感谢您的信息!尽管我现在很感兴趣,但我并不了解Brms,也不熟悉贝叶斯统计。
prestevez

1
@SamuelWalker很高兴这很有用!市政当局听起来是个不错的选择(我不熟悉美国的人口普查数据,所以我建议县时并不真正知道它们是否合适)。关于比较glmer.nb是否适合brms对象,由于不确定贝叶斯统计信息,我不确定用whay比较它们是最好的方法。祝好运!
prestevez

1
@SamuelWalker潜在的替代方法可能是使用brms并比较它们来同时拟合标准和零膨胀negbin模型。
prestevez
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.