f1d.irt | R Documentation |
Estimates the functional unidimensional item response model for dichotomous data (Ip, Molenberghs, Chen, Goegebeur & De Boeck, 2013). Either the IRT model is estimated using a probit link and employing tetrachoric correlations or item discriminations and intercepts of a pre-estimated multidimensional IRT model are provided as input.
f1d.irt(dat=NULL, nnormal=1000, nfactors=3, A=NULL, intercept=NULL,
mu=NULL, Sigma=NULL, maxiter=100, conv=10^(-5), progress=TRUE)
dat |
Data frame with dichotomous item responses |
nnormal |
Number of |
nfactors |
Number of dimensions to be estimated |
A |
Matrix of item discriminations (if the IRT model is already estimated) |
intercept |
Vector of item intercepts (if the IRT model is already estimated) |
mu |
Vector of estimated means. In the default it is assumed that all means are zero. |
Sigma |
Estimated covariance matrix. In the default it is the identity matrix. |
maxiter |
Maximum number of iterations |
conv |
Convergence criterion |
progress |
Display progress? The default is |
The functional unidimensional item response model (F1D model)
for dichotomous item responses is based on a multidimensional model with a
link function g
(probit or logit):
P( X_{pi}=1 | \bold{\theta}_p )=
g( \sum_d a_{id} \theta_{pd} - d_i )
It is assumed that \bold{\theta}_p
is multivariate normally
distribution with a zero mean vector and identity covariance matrix.
The F1D model estimates unidimensional item response functions such that
P( X_{pi}=1 | \theta_p^\ast ) \approx
g \left( a_{i}^\ast \theta_{p}^\ast - d_i^\ast \right)
The optimization function F
minimizes the deviations of
the approximation equations
a_{i}^\ast \theta_{p}^\ast - d_i^\ast
\approx \sum_d a_{id} \theta_{pd} - d_i
The optimization function F
is defined by
F( \{ a_i^\ast, d_i^\ast \}_i, \{ \theta_p^\ast \}_p )=
\sum_p \sum_i w_p ( a_{id} \theta_{pd} - d_i-
a_{i}^\ast \theta_{p}^\ast + d_i^\ast )^2 \rightarrow Min!
All items i
are equally weighted whereas the ability
distribution of persons p
are weighted according to the
multivariate normal distribution (using weights w_p
).
The estimation is conducted using an alternating least squares algorithm
(see Ip et al. 2013 for a different algorithm). The ability distribution
\theta_p^\ast
of the functional unidimensional model is assumed
to be standardized, i.e. does have a zero mean and a standard deviation of one.
A list with following entries:
item |
Data frame with estimated item parameters: Item intercepts
for the functional unidimensional |
person |
Data frame with estimated |
A |
Estimated or provided item discriminations |
intercept |
Estimated or provided intercepts |
dat |
Used dataset |
tetra |
Object generated by |
Ip, E. H., Molenberghs, G., Chen, S. H., Goegebeur, Y., & De Boeck, P. (2013). Functionally unidimensional item response models for multivariate binary data. Multivariate Behavioral Research, 48, 534-562.
For estimation of bifactor models and Green-Yang reliability
based on tetrachoric correlations see greenyang.reliability
.
For estimation of bifactor models based on marginal maximum likelihood
(i.e. full information maximum likelihood) see the
TAM::tam.fa
function in the TAM package.
#############################################################################
# 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 <- sirt::f1d.irt( dat=dat, nfactors=3)
#++ (2) plot results
par(mfrow=c(1,2))
# 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 )
# 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 )
par(mfrow=c(1,1))
#++ (3) estimate bifactor model and Green-Yang reliability
gy1 <- sirt::greenyang.reliability( mod1$tetra, nfactors=3 )
## Not run:
#****
# 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 <- sirt::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 <- sirt::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 <- sirt::f1d.irt( A=mod1$B[,2,], intercept=intercept, Sigma=mod1$variance)
fumod1$item
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.