Learn R Programming

TAM (version 1.995-0)

tamaan: Wrapper Function for TAM Language

Description

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, ...)
"summary"(object,file=NULL,...)
"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

Run this code
#############################################################################
# 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)	

Run the code above in your browser using DataLab