This function is a convenience wrapper function for
several item response models in TAM. Using the
tamaanify framework, multidimensional item response models,
latent class models, located and ordered latent class models
and mixture item response models can be estimated.
Usage
tamaan(tammodel, resp, tam.method = NULL, control = list(), doparse=TRUE, ...)
## S3 method for class 'tamaan'
summary(object,file=NULL,...)
## S3 method for class 'tamaan'
print(x,...)
Arguments
tammodel
String for specification in TAM, see also tamaanify.
resp
Dataset with item responses
tam.method
One of the TAM methods tam.mml, tam.mml.2pl
or tam.mml.3pl.
control
List with control arguments. See tam.mml.
doparse
Optional logical indicating whether lavmodel
should be parsed for DO statements, see doparse.
...
Further arguments to be passed to
tam.mml, tam.mml.2pl
or tam.mml.3pl.
object
Object of class tamaan
file
A file name in which the summary output will be written
x
Object of class tamaan
Value
Values generated by tam.mml, tam.mml.2pl
or tam.mml.3pl. In addition, the list also contains the (optional) entries
tamaanify
Output produced by tamaanify
lcaprobs
Matrix with probabilities for latent class models
locs
Matrix with cluster locations (for TYPE="LOCLCA")
probs_MIXTURE
Class probabilities (for TYPE="MIXTURE")
moments_MIXTURE
Distribution parameters (for TYPE="MIXTURE")
itempartable_MIXTURE
Item parameters (for TYPE="MIXTURE")
See Also
See tamaanify for more details about model specification
using tammodel.
See tam.mml or tam.mml.3pl
for more examples.
Examples
#############################################################################
# EXAMPLE 1: Examples dichotomous data data.read
#############################################################################
library(sirt)
data(data.read,package="sirt")
dat <- data.read
#*********************************************************************
#*** Model 1: Rasch model
tammodel <- "
LAVAAN MODEL:
F1 =~ A1__C4
F1 ~~ F1
ITEM TYPE:
ALL(Rasch);
"
# estimate model
mod1 <- tamaan( tammodel , resp=dat)
summary(mod1)
## Not run:
#*********************************************************************
#*** Model 2: 2PL model with some selected items
tammodel <- "
LAVAAN MODEL:
F1 =~ A1__B1 + B3 + C1__C3
F1 ~~ F1
"
mod2 <- tamaan( tammodel , resp=dat)
summary(mod2)
#*********************************************************************
#*** Model 3: Multidimensional IRT model
tammodel <- "
LAVAAN MODEL:
G =~ A1__C4
F1 =~ A1__B4
F2 =~ C1__C4
F1 ~~ F2
# specify fixed entries in covariance matrix
F1 ~~ 1*F1
F2 ~~ 1*F2
G ~~ 0*F1
G ~~ 0.3*F2
G ~~ 0.7*G
"
mod3 <- tamaan( tammodel , resp=dat , control=list(maxiter=30))
summary(mod3)
#*********************************************************************
#*** Model 4: Some linear constraints for item slopes and intercepts
tammodel <- "
LAVAAN MODEL:
F =~ lam1__lam10*A1__C2
F =~ 0.78*C3
F ~~ F
A1 | a1*t1
A2 | a2*t1
A3 | a3*t1
A4 | a4*t1
B1 | b1*t1
B2 | b2*t1
B3 | b3*t1
C1 | t1
MODEL CONSTRAINT:
# defined parameters
# only linear combinations are permitted
b2 == 1.3*b1 + (-0.6)*b3
a1 == q1
a2 == q2 + t
a3 == q1 + 2*t
a4 == q2 + 3*t
# linear constraints for loadings
lam2 == 1.1*lam1
lam3 == 0.9*lam1 + (-.1)*lam0
lam8 == lam0
lam9 == lam0
"
mod4 <- tamaan( tammodel , resp=dat , control=list(maxiter=5) )
summary(mod4)
#*********************************************************************
#*** Model 5: Latent class analysis with three classes
tammodel <- "
ANALYSIS:
TYPE=LCA;
NCLASSES(3); # 3 classes
NSTARTS(5,20); # 5 random starts with 20 iterations
LAVAAN MODEL:
F =~ A1__C4
"
mod5 <- tamaan( tammodel , resp=dat , control=list(maxiter=100) )
summary(mod5)
#*********************************************************************
#*** Model 6: Ordered latent class analysis with three classes
tammodel <- "
ANALYSIS:
TYPE=OLCA;
NCLASSES(3); # 3 classes
NSTARTS(20,40); # 20 random starts with 40 iterations
LAVAAN MODEL:
F =~ A1__C4
"
mod6 <- tamaan( tammodel , dat )
summary(mod6)
#*********************************************************************
#*** Model 7: Unidimensional located latent class model with three classes
tammodel <- "
ANALYSIS:
TYPE=LOCLCA;
NCLASSES(3)
NSTARTS(10,40)
LAVAAN MODEL:
F =~ A1__C4
B2 | 0*t1
"
mod7 <- tamaan( tammodel , resp=dat)
summary(mod7)
#*********************************************************************
#*** Model 8: Two-dimensional located latent class analysis with some
# priors and equality constraints among thresholds
tammodel <- "
ANALYSIS:
TYPE=LOCLCA;
NCLASSES(4);
NSTARTS(10,20);
LAVAAN MODEL:
AB =~ A1__B4
C =~ C1__C4
A1 | a1diff*t1
B2 | 0*t1
C2 | 0*t1
B1 | a1diff*t1
MODEL PRIOR:
# prior distributions for cluster locations
DO2(1,4,1,1,2,1)
Cl%1_Dim%2 ~ N(0,2);
DOEND
"
# estimate model
mod8 <- tamaan( tammodel , resp=dat )
summary(mod8)
#*********************************************************************
#*** Model 9: Two-dimensional model with constraints on parameters
tammodel <- "
LAVAAN MODEL:
FA =~ A1+b*A2+A3+d*A4
FB =~ B1+b*B2+B3+d*B4
FA ~~ 1*FA
FA ~~ FB
FB ~~ 1*FB
A1 | c*t1
B1 | c*t1
A2 | .7*t1
"
# estimate model
mod9 <- tamaan( tammodel , resp=dat , control=list(maxiter=30) )
summary(mod9)
#############################################################################
# EXAMPLE 2: Examples polytomous data | data.Students
#############################################################################
library(CDM)
data( data.Students , package="CDM")
dat <- data.Students[,3:13]
## > colnames(dat)
## [1] "act1" "act2" "act3" "act4" "act5" "sc1" "sc2" "sc3" "sc4" "mj1" "mj2"
#*********************************************************************
#*** Model 1: Two-dimensional generalized partial credit model
tammodel <- "
LAVAAN MODEL:
FA =~ act1__act5
FS =~ sc1__sc4
FA ~~ 1*FA
FS ~~ 1*FS
FA ~~ FS
"
# estimate model
mod1 <- tamaan( tammodel , dat , control=list(maxiter=10) )
summary(mod1)
#*********************************************************************
#*** Model 2: Two-dimensional model, some constraints
tammodel <- "
LAVAAN MODEL:
FA =~ a1__a4*act1__act4 + 0.89*act5
FS =~ 1*sc1 + sc2__sc4
FA ~~ FA
FS ~~ FS
FA ~~ FS
# some equality constraints
act1 + act3 | a13_t1 * t1
act1 + act3 | a13_t2 * t2
"
# only create design matrices with tamaanify
mod2 <- tamaanify( tammodel , dat )
mod2$lavpartable
# estimate model (only few iterations as a test)
mod2 <- tamaan( tammodel , dat , control=list(maxiter=10) )
summary(mod2)
#*********************************************************************
#*** Model 3: Two-dimensional model, some more linear constraints
tammodel <- "
LAVAAN MODEL:
FA =~ a1__a5*act1__act5
FS =~ b1__b4*sc1__sc4
FA ~~ 1*FA
FA ~~ FS
FS ~~ 1*FS
act1 + act3 | a13_t1 * t1
act1 + act3 | a13_t2 * t2
MODEL CONSTRAINT:
a1 == q0
a2 == q0
a3 == q0 + q1
a4 == q2
a5 == q2 + q1
"
# estimate
mod3 <- tamaan( tammodel , dat , control=list(maxiter=300 ) )
summary(mod3)
#*********************************************************************
#*** Model 4: Latent class analysis with three latent classes
tammodel <- "
ANALYSIS:
TYPE=LCA;
NCLASSES(3); # 3 classes
NSTARTS(10,30); # 10 random starts with 30 iterations
LAVAAN MODEL:
F =~ act1__act5
"
# estimate model
mod4 <- tamaan( tammodel , resp=dat)
summary(mod4)
#*********************************************************************
#*** Model 5: Partial credit model with "PCM2" parametrization
# select data
dat1 <- dat[, paste0("act",1:5) ]
# specify tamaan model
tammodel <- "
LAVAAN MODEL:
F =~ act1__act5
F ~~ F
# use DO statement as shortages
DO(1,5,1)
act% | b%_1 * t1
act% | b%_2 * t2
DOEND
MODEL CONSTRAINT:
DO(1,5,1)
b%_1 == delta% + tau%_1
b%_2 == 2*delta%
DOEND
ITEM TYPE:
ALL(PCM)
"
# estimate model
mod5 <- tamaan( tammodel , dat1 )
summary(mod5)
# compare with PCM2 parametrization in tam.mml
mod5b <- tam.mml( dat1 , irtmodel="PCM2" )
summary(mod5b)
#*********************************************************************
#*** Model 6: Rating scale model
# select data
dat1 <- dat[, paste0("sc",1:4) ]
psych::describe(dat1)
# specify tamaan model
tammodel <- "
LAVAAN MODEL:
F =~ sc1__sc4
F ~~ F
# use DO statement as shortages
DO(1,4,1)
sc% | b%_1 * t1
sc% | b%_2 * t2
sc% | b%_3 * t3
DOEND
MODEL CONSTRAINT:
DO(1,4,1)
b%_1 == delta% + step1
b%_2 == 2*delta% + step1 + step2
b%_3 == 3*delta%
DOEND
ITEM TYPE:
ALL(PCM)
"
# estimate model
mod6 <- tamaan( tammodel , dat1 )
summary(mod6)
# compare with RSM in tam.mml
mod6b <- tam.mml( dat1 , irtmodel="RSM" )
summary(mod6b)
#*********************************************************************
#*** Model 7: Partial credit model with Fourier basis for
# item intercepts (Thissen, Cai & Bock, 2010)
# see ?tamaanify manual
# define tamaan model
tammodel <- "
LAVAAN MODEL:
mj =~ mj1__mj4
mj ~~ 1*mj
ITEM TYPE:
mj1(PCM,2)
mj2(PCM,3)
mj3(PCM)
mj4(PCM,1)
"
# estimate model
mod7 <- tamaan( tammodel , dat )
summary(mod7)
# -> This function can also be applied for the generalized partial credit
# model (GPCM).
## End(Not run)