#############################################################################
# EXAMPLE 1: Unidimensional latent regression model with fitted IRT model in
# sirt package
#############################################################################
library(sirt)
data(data.pisaRead, package="sirt")
dat <- data.pisaRead$data
items <- grep("R4" , colnames(dat) , value=TRUE ) # select test items from data
# define testlets
testlets <- substring( items , 1 , 4 )
itemcluster <- match( testlets , unique(testlets) )
# fit Rasch copula model (only few iterations)
mod <- sirt::rasch.copula2( dat[,items] , itemcluster=itemcluster , mmliter=5)
# extract individual likelihood
like1 <- IRT.likelihood( mod )
# fit latent regression model in TAM
Y <- dat[ , c("migra" , "hisei", "female") ]
mod2 <- tam.latreg( like1 , theta=attr(like1, "theta") , Y = Y , pid=dat$idstud )
summary(mod2)
# plausible value imputation
pv2 <- tam.pv( mod2 )
# create list of imputed datasets
Y <- dat[ , c("idstud" , "idschool" , "female" , "hisei" , "migra") ]
pvnames <- c("PVREAD")
datlist <- tampv2datalist( pv2, pvnames = pvnames , Y=Y , Y.pid="idstud")
## Not run:
# #--- fit some models
# library(mice)
# library(miceadds)
# # convert data list into a mice object
# mids1 <- miceadds::datalist2mids( datlist )
# # perform an ANOVA
# mod3a <- with( mids1 , stats::lm(PVREAD ~ hisei*migra) )
# summary( pool( mod3a ))
# mod3b <- miceadds::mi.anova( mids1 , "PVREAD ~ hisei*migra" )
#
# #############################################################################
# # EXAMPLE 2: data.pisaRead - fitted IRT model in mirt package
# #############################################################################
#
# library(sirt)
# library(mirt)
#
# data(data.pisaRead, package="sirt")
# dat <- data.pisaRead$data
#
# # define dataset with item responses
# items <- grep("R4" , colnames(dat) , value=TRUE )
# resp <- dat[,items]
# # define dataset with covariates
# X <- dat[ , c("female","hisei","migra") ]
#
# # fit 2PL model in mirt
# mod <- mirt::mirt( resp , 1 , itemtype="2PL" , verbose=TRUE)
# print(mod)
# # extract coefficients
# sirt::mirt.wrapper.coef(mod)
#
# # extract likelihood
# like <- IRT.likelihood(mod)
# str(like)
#
# # fit latent regression model in TAM
# mod2 <- tam.latreg( like , Y = X , pid=dat$idstud )
# summary(mod2)
# # plausible value imputation
# pv2 <- tam.pv( mod2 , samp.regr=TRUE , nplausible=5 )
# # create list of imputed datasets
# X <- dat[ , c("idstud" , "idschool" , "female" , "hisei" , "migra") ]
# pvnames <- c("PVREAD")
# datlist <- tampv2datalist( pv2, pvnames = pvnames , Y=X , Y.pid="idstud")
# str(datlist)
#
# # regression using semTools package
# library(semTools)
# lavmodel <- "
# PVREAD ~ hisei + female
# "
# mod1a <- semTools::sem.mi( lavmodel , datlist)
# summary(mod1a , standardized=TRUE, rsquare=TRUE)
#
# #############################################################################
# # EXAMPLE 3: data.Students - fitted confirmatory factor analysis in lavaan
# #############################################################################
#
# library(CDM)
# library(sirt)
# library(lavaan)
#
# data(data.Students, package="CDM")
# dat <- data.Students
# vars <- scan(what="character" , nlines=1)
# urban female sc1 sc2 sc3 sc4 mj1 mj2 mj3 mj4
# dat <- dat[ , vars]
# dat <- na.omit(dat)
#
# # fit confirmatory factor analysis in lavaan
# lavmodel <- "
# SC =~ sc1__sc4
# SC ~~ 1*SC
# MJ =~ mj1__mj4
# MJ ~~ 1*MJ
# SC ~~ MJ
# "
# # process lavaan syntax
# res <- lavaanify.IRT( lavmodel , dat )
# # fit lavaan CFA model
# mod1 <- lavaan::cfa( res$lavaan.syntax , dat , std.lv=TRUE)
# summary(mod1 , standardized=TRUE , fit.measures=TRUE )
# # extract likelihood
# like1 <- IRTLikelihood.cfa( dat , mod1 )
# str(like1)
# # fit latent regression model in TAM
# X <- dat[ , c("urban","female") ]
# mod2 <- tam.latreg( like1 , Y = X )
# summary(mod2)
# # plausible value imputation
# pv2 <- tam.pv( mod2 , samp.regr=TRUE , normal.approx=TRUE )
# # create list of imputed datasets
# Y <- dat[ , c("urban" , "female" ) ]
# pvnames <- c("PVSC" , "PVMJ")
# datlist <- tampv2datalist( pv2, pvnames = pvnames , Y=Y )
# str(datlist)
# ## End(Not run)
Run the code above in your browser using DataLab