使用不平衡面板上的plm对cluter样本进行随机效应估计

时间:2018-03-15 14:26:09

标签: r lme4 hierarchical-clustering plm

我通常在广义最小二乘框架内进行估算,Wooldridge&#39> Introductory (2013)调用,个人索引的纵向数据的随机效应和固定效应模型以及时间维度

我一直在使用来自软件包的plm()中的可行性GLS 估算来估算随机效应模型 - 一些统计数据表明混合模型plm()函数采用index参数,其中我指示个人和时间索引。但是,我现在面对的是一些数据,其中每个人在每个时间点都有几个度量,即群体结构。

我发现可以使用包中的lmer()来设置这样的模型,但是我对行话的差异以及可能性框架感到有点困惑,我想知道是否正确指定了模型。我担心因为我不熟悉框架和这个术语而我可以忽略更多实质性的内容。

我可以使用plm()复制我常用的lmer()模型,但我不确定如何添加分组。我试着在下面说明我的问题。

我发现一些数据看起来有点像我的数据来说明我的情况。首先是一些需要的包,

install.packages(c("mlmRev", "plm", "lme4", "stargazer"), dependencies = TRUE)

然后是数据

data(egsingle, package = "mlmRev")

egsingle是一个由1721名学童组成的不平衡小组,分为60个学校,分为五个时间点。这些数据最初与HLM软件包一起发布(Bryk,Raudenbush和Congdon,1996),但可以在包中找到,有关详细信息,请参阅? mlmRev::egsingle

一些轻量级数据管理

dta <- egsingle
dta$Female <- with(dta, ifelse(female == 'Female', 1, 0))

以下是数据的摘录

dta[118:127,c('schoolid','childid','math','year','size','Female')]
#>     schoolid   childid   math year size Female
#> 118     2040 289970511 -1.830 -1.5  502      1
#> 119     2040 289970511 -1.185 -0.5  502      1
#> 120     2040 289970511  0.852  0.5  502      1
#> 121     2040 289970511  0.573  1.5  502      1
#> 122     2040 289970511  1.736  2.5  502      1
#> 123     2040 292772811 -3.144 -1.5  502      0
#> 124     2040 292772811 -2.097 -0.5  502      0
#> 125     2040 292772811 -0.316  0.5  502      0
#> 126     2040 293550291 -2.097 -1.5  502      0
#> 127     2040 293550291 -1.314 -0.5  502      0

以下是我如何设置随机效果模型schoolid使用plm()

library(plm)
reg.re.plm <- plm(math~Female+size+year, dta, index = c("childid", "year"), model="random")
# summary(reg.re.plm)

我可以像这样重现这些结果lme4

require(lme4)
dta$year <- as.factor(dta$year)
reg.re.lmer <- lmer(math~Female+size+year+(1|childid), dta)
# summary(reg.re.lmer)

现在,从阅读chapter 2 in Bates (2010) “lme4: Mixed-effects modeling with R”开始,我相信我这就是我将如何具体化模型,包括集群级别schoolid

reg.re.lmer.in.school <- lmer(math~Female+size+year+(1|childid)+(1|schoolid), dta)
# summary(reg.re.lmer.in.school)

然而,当我看到结果时,我并不太确信我实际上已经正确指定了它(见下文)。

在我的实际数据中,重复的测量是在个人内部,但我认为我可以使用这些数据作为例子。我很感激有关如何进行的任何建议。也许引用一个带有符号/术语的工作示例,与Wooldridge(2013)中使用的内容相差不远。而且,我如何向后工作并编写reg.re.lmer.in.school模型的规范?

# library(stargazer)
stargazer::stargazer(reg.re.plm, reg.re.lmer, reg.re.lmer.in.school, type="text")
#> =====================================================================
#>                                    Dependent variable:               
#>                     -------------------------------------------------
#>                                           math                       
#>                                panel                   linear        
#>                               linear                mixed-effects    
#>                                 (1)                (2)        (3)    
#> ---------------------------------------------------------------------
#> Female                        -0.025              -0.025     0.008   
#>                               (0.046)            (0.047)    (0.042)  
#>                                                                      
#> size                        -0.0004***          -0.0004***  -0.0003  
#>                              (0.0001)            (0.0001)   (0.0002) 
#>                                                                      
#> year-1.5                     0.878***            0.876***   0.866*** 
#>                               (0.059)            (0.059)    (0.059)  
#>                                                                      
#> year-0.5                     1.882***            1.880***   1.870*** 
#>                               (0.059)            (0.058)    (0.058)  
#>                                                                      
#> year0.5                      2.575***            2.574***   2.562*** 
#>                               (0.059)            (0.059)    (0.059)  
#>                                                                      
#> year1.5                      3.149***            3.147***   3.133*** 
#>                               (0.060)            (0.059)    (0.059)  
#>                                                                      
#> year2.5                      3.956***            3.954***   3.939*** 
#>                               (0.060)            (0.060)    (0.060)  
#>                                                                      
#> Constant                     -2.671***          -2.669***  -2.693*** 
#>                               (0.085)            (0.086)    (0.152)  
#>                                                                      
#> ---------------------------------------------------------------------
#> Observations                   7,230              7,230      7,230   
#> R2                             0.735                                 
#> Adjusted R2                    0.735                                 
#> Log Likelihood                                  -8,417.815 -8,284.357
#> Akaike Inf. Crit.                               16,855.630 16,590.720
#> Bayesian Inf. Crit.                             16,924.490 16,666.460
#> F Statistic         2,865.391*** (df = 7; 7222)                      
#> =====================================================================
#> Note:                                     *p<0.1; **p<0.05; ***p<0.01

1 个答案:

答案 0 :(得分:0)

在研究Robert Long's great answer on stats.stackexchange后,我发现模型的正确规范是嵌套设计,即(1| schoolid /childid)。但是,由于数据的编码方式(在childid内无法schoolid),交叉设计或规范,即我上面使用的(1|childid)+(1|schoolid),产生相同的结果。< / p>

以下是使用与上述相同的数据的说明,

data(egsingle, package = "mlmRev")
dta <- egsingle
dta$Female <- with(dta, ifelse(female == 'Female', 1, 0))

require(lme4)
dta$year <- as.factor(dta$year)

重新运行交叉设计模型reg.re.lmer.in.school,以进行比较

reg.re.lmer.in.school <- lmer(math~Female+size+year+(1|childid)+(1|schoolid), dta)

这里是嵌套结构

reg.re.lmer.nested <- lmer(math~Female+size+year+(1| schoolid /childid), dta)

最后使用惊人的包来比较两个模型,

# install.packages(c("texreg"), dependencies = TRUE)
#  require(texreg)
texreg::screenreg(list(reg.re.lmer.in.school, reg.re.lmer.nested), digits = 3)
#> ===============================================================
#>                                    Model 1        Model 2      
#> ---------------------------------------------------------------
#> (Intercept)                           -2.693 ***     -2.693 ***
#>                                       (0.152)        (0.152)   
#> Female                                 0.008          0.008    
#>                                       (0.042)        (0.042)   
#> size                                  -0.000         -0.000    
#>                                       (0.000)        (0.000)   
#> year-1.5                               0.866 ***      0.866 ***
#>                                       (0.059)        (0.059)   
#> year-0.5                               1.870 ***      1.870 ***
#>                                       (0.058)        (0.058)   
#> year0.5                                2.562 ***      2.562 ***
#>                                       (0.059)        (0.059)   
#> year1.5                                3.133 ***      3.133 ***
#>                                       (0.059)        (0.059)   
#> year2.5                                3.939 ***      3.939 ***
#>                                       (0.060)        (0.060)   
#> ---------------------------------------------------------------
#> AIC                                16590.715      16590.715    
#> BIC                                16666.461      16666.461    
#> Log Likelihood                     -8284.357      -8284.357    
#> Num. obs.                           7230           7230        
#> Num. groups: childid                1721                       
#> Num. groups: schoolid                 60             60        
#> Var: childid (Intercept)               0.672                   
#> Var: schoolid (Intercept)              0.180          0.180    
#> Var: Residual                          0.334          0.334    
#> Num. groups: childid:schoolid                      1721        
#> Var: childid:schoolid (Intercept)                     0.672    
#> ===============================================================
#> *** p < 0.001, ** p < 0.01, * p < 0.05