library(lme4)
#############################################################################
# EXAMPLE 1: Dataset data.bifie01 | TIMSS 2011
#############################################################################
data(data.bifie01)
dat <- data.bifie01
set.seed(987)
# create dataset with replicate weights and plausible values
bdat1 <- BIFIE.data.jack( data=dat , jktype="JK_TIMSS" , jkzone = "JKCZONE" ,
jkrep="JKCREP" , wgt="TOTWGT" , pv_vars = c("ASMMAT","ASSSCI") )
# create dataset without plausible values and ignoring weights
bdat2 <- BIFIE.data.jack( data=dat , jktype="JK_RANDOM", ngr=10 )
# => standard errors from ML estimation
#***********************************************
# Model 1: Random intercept model
#--- Model 1a: without weights, first plausible value
mod1a <- BIFIE.twolevelreg( BIFIEobj=bdat2 , dep="ASMMAT01" ,
formula.fixed = ~ 1 , formula.random = ~ 1 , idcluster="idschool" ,
wgtlevel2 = "one" , se = FALSE )
summary(mod1a)
#--- Model 1b: estimation in lme4
mod1b <- lme4::lmer( ASMMAT01 ~ 1 + ( 1 | idschool) , data = dat , REML=FALSE)
summary(mod1b)
#--- Model 1c: weights and sampling design and all plausible values
mod1c <- BIFIE.twolevelreg( BIFIEobj=bdat1 , dep="ASMMAT" ,
formula.fixed = ~ 1 , formula.random = ~ 1 , idcluster="idschool" ,
wgtlevel2 = "SCHWGT" )
summary(mod1c)
#***********************************************
# Model 2: Random slope model
#--- Model 1a: without weights
mod2a <- BIFIE.twolevelreg( BIFIEobj=bdat2 , dep="ASMMAT01" ,
formula.fixed = ~ female + ASBG06A , formula.random = ~ ASBG06A ,
idcluster="idschool" , wgtlevel2 = "one" , se = FALSE )
summary(mod2a)
#--- Model 2b: estimation in lme4
mod2b <- lme4::lmer( ASMMAT01 ~ female + ASBG06A + ( 1 + ASBG06A | idschool) ,
data = dat , REML=FALSE)
summary(mod2b)
#--- Model 1c: weights and sampling design and all plausible values
mod2c <- BIFIE.twolevelreg( BIFIEobj=bdat1 , dep="ASMMAT" ,
formula.fixed = ~ female + ASBG06A , formula.random = ~ ASBG06A ,
idcluster="idschool" , wgtlevel2 = "SCHWGT" , maxiter=500 , se=FALSE)
summary(mod2c)
#############################################################################
# SIMULATED EXAMPLE 2: Two-level regression with random slopes
#############################################################################
#--- (1) simulate data
set.seed(9876)
NC <- 100 # number of clusters
Nj <- 20 # number of persons per cluster
iccx <- .4 # intra-class correlation predictor
theta <- c( 0.7 , .3 ) # fixed effects
Tmat <- diag( c(.3, .1 ) ) # variances of random intercept and slope
sig2 <- .60 # residual variance
N <- NC*Nj
idcluster <- rep( 1:NC , each=Nj )
dat1 <- data.frame("idcluster" = idcluster )
dat1$X <- rep( rnorm( NC , sd = sqrt(iccx) ) , each=Nj ) + rnorm( N , sd = sqrt( 1 - iccx) )
dat1$Y <- theta[1] + rep( rnorm(NC , sd = sqrt(Tmat[1,1] ) ) , each=Nj ) +
( theta[2] + rep( rnorm(NC , sd = sqrt(Tmat[2,2] ) ) , each=Nj ) ) * dat1$X +
rnorm(N , sd= sqrt(sig2) )
#--- (2) create design object
bdat1 <- BIFIE.data.jack( data=dat1 , jktype="JK_GROUP", jkzone = "idcluster" )
summary(bdat1)
#*** Model 1: Random slope model (ML standard errors)
#- estimation using BIFIE.twolevelreg
mod1a <- BIFIE.twolevelreg( BIFIEobj=bdat1 , dep="Y" ,
formula.fixed = ~ 1+X , formula.random = ~ 1+X , idcluster="idcluster" ,
wgtlevel2 = "one" , se = FALSE )
summary(mod1a)
#- estimation in lme4
mod1b <- lme4::lmer( Y ~ X + ( 1+X | idcluster) , data = dat1 , REML = FALSE )
summary(mod1b)
#- using Jackknife for inference
mod1c <- BIFIE.twolevelreg( BIFIEobj=bdat1 , dep="Y" ,
formula.fixed = ~ 1+X , formula.random = ~ 1+X , idcluster="idcluster" ,
wgtlevel2 = "one" , se = TRUE )
summary(mod1c)
# extract coefficients
coef(mod1a)
coef(mod1c)
# variance matrix
vcov(mod1a)
vcov(mod1c)
Run the code above in your browser using DataLab