## Not run:
# library(TAM)
# library(mirt)
#
# #############################################################################
# # EXAMPLE 1: Estimations in TAM for data.read dataset
# #############################################################################
#
# data(data.read)
# dat <- data.read
#
# #**************************************
# #*** Model 1: Rasch model
# #**************************************
#
# # estimation in TAM package
# mod <- TAM::tam.mml( dat )
# summary(mod)
# # conversion to mirt
# res <- tam2mirt(mod)
# # generated lavaan syntax
# cat(res$lavaan.syntax.fixed)
# cat(res$lavaan.syntax.freed)
# # extract object of class mirt
# mres <- res$mirt
# # print and parameter values
# print(mres)
# mirt::mod2values(mres)
# # model fit
# mirt::M2(mres)
# # residual statistics
# mirt::residuals(mres , type="Q3")
# mirt::residuals(mres , type="LD")
# # item fit
# mirt::itemfit(mres)
# # person fit
# mirt::personfit(mres)
# # compute several types of factor scores (quite slow)
# f1 <- mirt::fscores(mres, method='WLE',response.pattern=dat[1:10,])
# # method = MAP and EAP also possible
# # item plot
# mirt::itemplot(mres,"A3") # item A3
# mirt::itemplot(mres,4) # fourth item
# # some more plots
# plot(mres,type="info")
# plot(mres,type="score")
# plot(mres,type="trace")
# # compare estimates with estimated Rasch model in mirt
# mres1 <- mirt::mirt(dat,1,"Rasch" )
# print(mres1)
# mirt.wrapper.coef(mres1)
#
# #**************************************
# #*** Model 2: 2PL model
# #**************************************
#
# # estimation in TAM
# mod <- TAM::tam.mml.2pl( dat )
# summary(mod)
# # conversion to mirt
# res <- tam2mirt(mod)
# mres <- res$mirt
# # lavaan syntax
# cat(res$lavaan.syntax.fixed)
# cat(res$lavaan.syntax.freed)
# # parameter estimates
# print(mres)
# mod2values(mres)
# mres@nest # number of estimated parameters
# # some plots
# plot(mres,type="info")
# plot(mres,type="score")
# plot(mres,type="trace")
# # model fit
# mirt::M2(mres)
# # residual statistics
# mirt::residuals(mres , type="Q3")
# mirt::residuals(mres , type="LD")
# # item fit
# mirt::itemfit(mres)
#
# #**************************************
# #*** Model 3: 3-dimensional Rasch model
# #**************************************
#
# # define Q-matrix
# Q <- matrix( 0 , nrow=12 , ncol=3 )
# Q[ cbind(1:12 , rep(1:3,each=4) ) ] <- 1
# rownames(Q) <- colnames(dat)
# colnames(Q) <- c("A","B","C")
# # estimation in TAM
# mod <- TAM::tam.mml( resp=dat , Q=Q , control=list(snodes=1000,maxiter=30) )
# summary(mod)
# # mirt conversion
# res <- tam2mirt(mod)
# mres <- res$mirt
# # mirt syntax
# cat(res$mirt.syntax)
# ## Dim01=1,2,3,4
# ## Dim02=5,6,7,8
# ## Dim03=9,10,11,12
# ## COV = Dim01*Dim01,Dim02*Dim02,Dim03*Dim03,Dim01*Dim02,Dim01*Dim03,Dim02*Dim03
# ## MEAN = Dim01,Dim02,Dim03
# # lavaan syntax
# cat(res$lavaan.syntax.freed)
# ## Dim01 =~ 1*A1+1*A2+1*A3+1*A4
# ## Dim02 =~ 1*B1+1*B2+1*B3+1*B4
# ## Dim03 =~ 1*C1+1*C2+1*C3+1*C4
# ## A1 | t1_1*t1
# ## A2 | t1_2*t1
# ## A3 | t1_3*t1
# ## A4 | t1_4*t1
# ## B1 | t1_5*t1
# ## B2 | t1_6*t1
# ## B3 | t1_7*t1
# ## B4 | t1_8*t1
# ## C1 | t1_9*t1
# ## C2 | t1_10*t1
# ## C3 | t1_11*t1
# ## C4 | t1_12*t1
# ## Dim01 ~ 0*1
# ## Dim02 ~ 0*1
# ## Dim03 ~ 0*1
# ## Dim01 ~~ Cov_11*Dim01
# ## Dim02 ~~ Cov_22*Dim02
# ## Dim03 ~~ Cov_33*Dim03
# ## Dim01 ~~ Cov_12*Dim02
# ## Dim01 ~~ Cov_13*Dim03
# ## Dim02 ~~ Cov_23*Dim03
# # model fit
# mirt::M2(mres)
# # residual statistics
# residuals(mres,type="LD")
# # item fit
# mirt::itemfit(mres)
#
# #**************************************
# #*** Model 4: 3-dimensional 2PL model
# #**************************************
#
# # estimation in TAM
# mod <- TAM::tam.mml.2pl( resp=dat , Q=Q , control=list(snodes=1000,maxiter=30) )
# summary(mod)
# # mirt conversion
# res <- tam2mirt(mod)
# mres <- res$mirt
# # generated lavaan syntax
# cat(res$lavaan.syntax.fixed)
# cat(res$lavaan.syntax.freed)
# # write lavaan syntax on disk
# sink( "mod4_lav_freed.txt" , split=TRUE )
# cat(res$lavaan.syntax.freed)
# sink()
# # some statistics from mirt
# print(mres)
# summary(mres)
# mirt::M2(mres)
# mirt::residuals(mres)
# mirt::itemfit(mres)
#
# # estimate mirt model by using the generated lavaan syntax with freed parameters
# res2 <- lavaan2mirt( dat , res$lavaan.syntax.freed ,
# technical=list(NCYCLES=3) , verbose=TRUE)
# # use only few cycles for illustrational purposes
# mirt.wrapper.coef(res2$mirt)
# summary(res2$mirt)
# print(res2$mirt)
#
# #############################################################################
# # EXAMPLE 4: mirt conversions for polytomous dataset data.big5
# #############################################################################
#
# data(data.big5)
# # select some items
# items <- c( grep( "O" , colnames(data.big5) , value=TRUE )[1:6] ,
# grep( "N" , colnames(data.big5) , value=TRUE )[1:4] )
# # O3 O8 O13 O18 O23 O28 N1 N6 N11 N16
# dat <- data.big5[ , items ]
# library(psych)
# psych::describe(dat)
#
# library(TAM)
# #******************
# #*** Model 1: Partial credit model in TAM
# mod1 <- TAM::tam.mml( dat[,1:6] )
# summary(mod1)
# # convert to mirt object
# mmod1 <- tam2mirt( mod1 )
# rmod1 <- mmod1$mirt
# # coefficients in mirt
# coef(rmod1)
# mirt.wrapper.coef(rmod1)
# # model fit
# mirt::M2(rmod1)
# # item fit
# mirt::itemfit(rmod1)
# # plots
# plot(rmod1,type="trace")
# plot(rmod1, type = "trace", which.items = 1:4 )
# mirt::itemplot(rmod1,"O3")
#
# #******************
# #*** Model 2: Generalized partial credit model in TAM
# mod2 <- TAM::tam.mml.2pl( dat[,1:6] , irtmodel="GPCM" )
# summary(mod2)
# # convert to mirt object
# mmod2 <- tam2mirt( mod2 )
# rmod2 <- mmod2$mirt
# # coefficients in mirt
# mirt.wrapper.coef(rmod2)
# # model fit
# mirt::M2(rmod2)
# # item fit
# mirt::itemfit(rmod2)
# ## End(Not run)
Run the code above in your browser using DataLab