if (FALSE) {
#############################################################################
# EXAMPLE 1: data.pisaRead
#############################################################################
miceadds::library_install("lme4")
data(data.pisaRead)
dat <- data.pisaRead$data
Q <- data.pisaRead$item # item predictors
# define items
items <- colnames(dat)[ substring( colnames(dat), 1, 1 )=="R" ]
dat1 <- dat[, c( "idstud", items ) ]
# matrix with person predictors
X <- dat[, c("idschool", "hisei", "female", "migra") ]
# create dataset in long format
dat.long <- sirt::data.wide2long( dat=dat1, id="idstud", X=X, Q=Q )
#***
# Model 1: Rasch model
mod1 <- lme4::glmer( resp ~ 0 + ( 1 | idstud ) + as.factor(item), data=dat.long,
family="binomial", verbose=TRUE)
summary(mod1)
#***
# Model 2: Rasch model and inclusion of person predictors
mod2 <- lme4::glmer( resp ~ 0 + ( 1 | idstud ) + as.factor(item) + female + hisei + migra,
data=dat.long, family="binomial", verbose=TRUE)
summary(mod2)
#***
# Model 3: LLTM
mod3 <- lme4::glmer(resp ~ (1|idstud) + as.factor(ItemFormat) + as.factor(TextType),
data=dat.long, family="binomial", verbose=TRUE)
summary(mod3)
#############################################################################
# EXAMPLE 2: Rasch model in lme4
#############################################################################
set.seed(765)
N <- 1000 # number of persons
I <- 10 # number of items
b <- seq(-2,2,length=I)
dat <- sirt::sim.raschtype( stats::rnorm(N,sd=1.2), b=b )
dat.long <- sirt::data.wide2long( dat=dat )
#***
# estimate Rasch model with lmer
library(lme4)
mod1 <- lme4::glmer( resp ~ 0 + as.factor( item ) + ( 1 | id_index), data=dat.long,
verbose=TRUE, family="binomial")
summary(mod1)
## Random effects:
## Groups Name Variance Std.Dev.
## id_index (Intercept) 1.454 1.206
## Number of obs: 10000, groups: id_index, 1000
##
## Fixed effects:
## Estimate Std. Error z value Pr(>|z|)
## as.factor(item)I0001 2.16365 0.10541 20.527 < 2e-16 ***
## as.factor(item)I0002 1.66437 0.09400 17.706 < 2e-16 ***
## as.factor(item)I0003 1.21816 0.08700 14.002 < 2e-16 ***
## as.factor(item)I0004 0.68611 0.08184 8.383 < 2e-16 ***
## [...]
}
Run the code above in your browser using DataLab