Learn R Programming

TAM (version 1.6-0)

IRT.linearCFA: Linear Approximation of a Confirmatory Factor Analysis

Description

This function approximates a fitted item response model by a linear confirmatory factor analysis. I.e., given item response functions, the expectation $E(X_i | \theta_1 , \ldots , \theta_D)$ is linearly approximated by $a_{i1} \theta _1 + \ldots + a_{iD} \theta_D$. See Vermunt and Magidson (2005) for details.

Usage

IRT.linearCFA( object , group=1)
	
## S3 method for class 'IRT.linearCFA':
summary(object,  \dots)

Arguments

object
Fitted item response model for which the IRT.expectedCounts method is defined.
group
Group identifier which defines the selected group.
...
Further arguments to be passed.

Value

  • A list with following entries
  • loadingsData frame with factor loadings. Mlat and SDlat denote the model-implied item mean and standard deviation. The values ResidVar and h2 denote residual variances and item communality.
  • stand.loadingsData frame with standardized factor loadings.
  • M.traitMean of factors
  • SD.traitStandard deviations of factors

References

Vermunt, J. K., & Magidson, J. (2005). Factor Analysis with categorical indicators: A comparison between traditional and latent class approaches. In A. Van der Ark, M.A. Croon & K. Sijtsma (Eds.), New Developments in Categorical Data Analysis for the Social and Behavioral Sciences (pp. 41-62). Mahwah: Erlbaum

See Also

See tam.fa for confirmatory factor analysis in TAM.

Examples

Run this code
library(lavaan)	
	
#############################################################################
# EXAMPLE 1: Two-dimensional confirmatory factor analysis data.Students
#############################################################################

data(data.Students, package="CDM")
# select variables
vars <- scan(nlines=1 , what="character")
    sc1 sc2 sc3 sc4 mj1 mj2 mj3 mj4
dat <- data.Students[ , vars]

# define Q-matrix
Q <- matrix( 0 , nrow=8 , ncol=2 )
Q[1:4,1] <- Q[5:8,2] <- 1

#*** Model 1: Two-dimensional 2PL model
mod1 <- tam.mml.2pl( dat , Q=Q  , control=list( nodes=seq(-4,4,len=12) ) )
summary(mod1)

# linear approximation CFA
cfa1 <- IRT.linearCFA(mod1)
summary(cfa1)

# linear CFA in lavaan package
lavmodel <- "
    sc =~ sc1+sc2+sc3+sc4
    mj =~ mj1+mj2+mj3+mj4
    sc1 ~ 1
    sc ~~ mj
    "
mod1b <- lavaan::sem( lavmodel , data = dat , missing="fiml" , std.lv=TRUE)    
summary(mod1b , standardized=TRUE , fit.measures=TRUE )

#############################################################################
# EXAMPLE 2: Unidimensional confirmatory factor analysis data.Students
#############################################################################

data(data.Students, package="CDM")
# select variables
vars <- scan(nlines=1 , what="character")
    sc1 sc2 sc3 sc4
dat <- data.Students[ , vars]

#*** Model 1: 2PL model
mod1 <- tam.mml.2pl( dat )
summary(mod1)

# linear approximation CFA
cfa1 <- IRT.linearCFA(mod1)
summary(cfa1)

# linear CFA
lavmodel <- "
    sc =~ sc1+sc2+sc3+sc4
    "
mod1b <- lavaan::sem( lavmodel , data = dat , missing="fiml" , std.lv=TRUE)    
summary(mod1b , standardized=TRUE , fit.measures=TRUE )

Run the code above in your browser using DataLab