#############################################################################
# EXAMPLE 1: Dataset Mathematics data.math | Exploratory multidimensional model
#############################################################################
data(data.math)
dat <- ( data.math$data )[ , -c(1,2) ] # select Mathematics items
#****
# Model 1: Functional unidimensional model based on original data
#++ (1) estimate model with 3 factors
mod1 <- f1d.irt( dat =dat , nfactors=3)
#++ (2) plot results
par(mfrow=c(1,2))
library(MASS)
# Intercepts
plot( mod1$item$di0 , mod1$item$di.ast , pch=16 , main="Item Intercepts" ,
xlab= expression( paste( d[i] , "(Unidimensional Model)" )) ,
ylab= expression( paste( d[i] , "(Functional Unidimensional Model)" )))
abline( lm(mod1$item$di.ast ~ mod1$item$di0) , col=2 , lty=2 )
abline( MASS::rlm(mod1$item$di.ast ~ mod1$item$di0) , col=3 , lty=3 )
# Discriminations
plot( mod1$item$ai0 , mod1$item$ai.ast , pch=16 , main="Item Discriminations" ,
xlab= expression( paste( a[i] , "(Unidimensional Model)" )) ,
ylab= expression( paste( a[i] , "(Functional Unidimensional Model)" )))
abline( lm(mod1$item$ai.ast ~ mod1$item$ai0) , col=2 , lty=2 )
abline( MASS::rlm(mod1$item$ai.ast ~ mod1$item$ai0) , col=3 , lty=3 )
par(mfrow=c(1,1))
#++ (3) estimate bifactor model and Green-Yang reliability
gy1 <- greenyang.reliability( mod1$tetra , nfactors = 3 )
#****
# Model 2: Functional unidimensional model based on estimated multidimensional
# item response model
#++ (1) estimate 2-dimensional exploratory factor analysis with 'smirt'
I <- ncol(dat)
Q <- matrix( 1, I,2 )
Q[1,2] <- 0
variance.fixed <- cbind( 1,2,0 )
mod2a <- smirt( dat , Qmatrix=Q , irtmodel="comp" , est.a="2PL" ,
variance.fixed=variance.fixed , maxiter=50)
#++ (2) input estimated discriminations and intercepts for
# functional unidimensional model
mod2b <- f1d.irt( A = mod2a$a , intercept = mod2a$b )
#############################################################################
# EXAMPLE 2: Dataset Mathematics data.math | Confirmatory multidimensional model
#############################################################################
data(data.math)
library(TAM)
# dataset
dat <- data.math$data
dat <- dat[ , grep("M" , colnames(dat) ) ]
# extract item informations
iteminfo <- data.math$item
I <- ncol(dat)
# define Q-matrix
Q <- matrix( 0 , nrow=I , ncol=3 )
Q[ grep( "arith" , iteminfo$domain ) , 1 ] <- 1
Q[ grep( "Meas" , iteminfo$domain ) , 2 ] <- 1
Q[ grep( "geom" , iteminfo$domain ) , 3 ] <- 1
# fit three-dimensional model in TAM
mod1 <- TAM::tam.mml.2pl( dat , Q=Q , control=list(maxiter=40 , snodes=1000) )
summary(mod1)
# specify functional unidimensional model
intercept <- mod1$xsi[ , c("xsi") ]
names(intercept) <- rownames(mod1$xsi)
fumod1 <- f1d.irt( A = mod1$B[,2,] , intercept=intercept , Sigma= mod1$variance)
fumod1$item
Run the code above in your browser using DataLab