
confmirt
fits a conditional (i.e., confirmatory)
full-information maximum-likelihood factor analysis model
to dichotomous and polytomous data under the item
response theory paradigm using Cai's (2010)
Metropolis-Hastings Robbins-Monro algorithm. Will fit the
same models as mirt
, in addition to
polynomial and product constructed latent traits. User
defined item classes can also be defined using the
createItem
function. Models may also
contain 'explanatory' person or item level predictors,
though these can only be included by using the
mixedmirt
function.confmirt(data, model, itemtype = NULL, guess = 0, upper =
1, pars = NULL, constrain = NULL, parprior = NULL,
calcNull = TRUE, grsm.block = NULL, rsm.block = NULL,
verbose = TRUE, draws = 5000, rotate = 'oblimin',
Target = NULL, key = NULL, cl = NULL, technical =
list(), ...)
## S3 method for class 'ConfirmatoryClass':
summary(object, suppress =
0, digits = 3, verbose = TRUE, ...)
## S3 method for class 'ConfirmatoryClass':
coef(object, digits = 3,
...)
## S3 method for class 'ConfirmatoryClass':
anova(object, object2)
## S3 method for class 'ConfirmatoryClass':
fitted(object, digits = 3,
...)
## S3 method for class 'ConfirmatoryClass':
plot(x, y, type = 'info',
npts = 50, theta_angle = 45, rot = list(xaxis = -70,
yaxis = 30, zaxis = 10), ...)
## S3 method for class 'ConfirmatoryClass':
residuals(object, restype =
'LD', digits = 3, df.p = FALSE, printvalue = NULL,
verbose = TRUE, ...)
matrix
or data.frame
that
consists of numerically ordered data, with missing data
coded as NA
confmirt.model()
declaring how the factor model is
to be estimated, or a single numeric value indicating the
number of exploratory factors to estimate. See
confm
res='exp'
option. Only prints patterns
that have standardized residuals greater than
abs(printvalue)
. The default (NULL) prints all
response patterns'LD'
for a local dependence matrix (Chen &
Thissen, 1997) or 'exp'
for the expected values
for the frequencies of every response patternmirt
for detailsmirt
for detailsmirt
for detailsmirt
for detailsmirt
for detailsmirt
for detailsmirt
for detailsConfirmatoryClass
ConfirmatoryClass
model
is numeric (indicating an
exploratory item FA) then this rotation is used. Default
is 'oblimin'
parallel
package (set from using makeCluster(ncores)
)mirt
to be plotted or
printed'info'
to
show the test information function, 'infocontour'
for the test information contours, or 'SE'
for the
test standard error functionplot
. If a vector is used then a bubble
plot is created with the summed information across the
angles specified (e.g., theta_angle = seq(0, 90,
by=10)
)Max Change = .2500
values are repeatedly printed to the console too often
(indicating that the parameters were being constrained
since they are naturally moving in steps greater than
0.25) then the model may either be ill defined or have a
very flat likelihood surface, and genuine
maximum-likelihood parameter estimates may be difficult
to find.mirt
, with much of the same
behaviour and specifications. Rotation and target matrix
options will be used in this subroutine and will be
passed to the returned object for use in generic
functions such as summary()
and fscores
.
Again, factor means and variances are fixed to ensure
proper identification. See mirt
for more
details.confmirt
follows a confirmatory and exploratory
item factor analysis strategy that uses a stochastic
version of maximum likelihood estimation described by Cai
(2010a, 2010b). Missing data are treated as 'missing at
random' so that each response vector is included in the
estimation (i.e., full-information). Residuals are
computed using the LD statistic (Chen & Thissen, 1997) in
the lower diagonal of the matrix returned by
residuals
, and Cramer's V above the diagonal. For
computing the log-likelihood more accurately see
calcLogLik
.
coef
displays the item parameters with their
associated standard errors, while use of summary
transforms the slopes into a factor loadings metric and
if the model is exploratory allows for rotating the
parameters. Also, nested models may be compared by using
the anova
function, where a Chi-squared difference
test and AIC/BIC difference values are displayed.expand.table
, key2binary
,
confmirt.model
, mirt
,
confmirt
, bfactor
,
multipleGroup
, mixedmirt
,
wald
, itemplot
,
fscores
, fitIndices
,
extract.item
, iteminfo
,
testinfo
, probtrace
,
boot.mirt
, imputeMissing
,
itemfit
, mod2values
,
read.mirt
, simdata
,
createItem
#Exploratory model estimation, similar to mirt()
data(LSAT7)
fulldata <- expand.table(LSAT7)
(mod1 <- confmirt(fulldata, 1))
#Confirmatory models
#simulate data
a <- matrix(c(
1.5,NA,
0.5,NA,
1.0,NA,
1.0,0.5,
NA,1.5,
NA,0.5,
NA,1.0,
NA,1.0),ncol=2,byrow=TRUE)
d <- matrix(c(
-1.0,NA,NA,
-1.5,NA,NA,
1.5,NA,NA,
0.0,NA,NA,
3.0,2.0,-0.5,
2.5,1.0,-1,
2.0,0.0,NA,
1.0,NA,NA),ncol=3,byrow=TRUE)
sigma <- diag(2)
sigma[1,2] <- sigma[2,1] <- .4
items <- c(rep('dich',4), rep('graded',3), 'dich')
dataset <- simdata(a,d,2000,items,sigma)
#analyses
#CIFA for 2 factor crossed structure
model.1 <- confmirt.model()
F1 = 1-4
F2 = 4-8
COV = F1*F2
#compute model, and use parallel computation of the log-likelihood
library(parallel)
cl <- makeCluster(detectCores())
mod1 <- confmirt(dataset, model.1, cl=cl)
coef(mod1)
summary(mod1)
residuals(mod1)
#####
#bifactor
model.3 <- confmirt.model()
G = 1-8
F1 = 1-4
F2 = 5-8
mod3 <- confmirt(dataset,model.3)
coef(mod3)
summary(mod3)
residuals(mod3)
anova(mod1,mod3)
#####
#polynomial/combinations
data(SAT12)
data <- key2binary(SAT12,
key = c(1,4,5,2,3,1,2,1,3,1,2,4,2,1,5,3,4,4,1,4,3,3,4,1,3,5,1,3,1,5,4,5))
model.quad <- confmirt.model()
F1 = 1-32
(F1*F1) = 1-32
model.combo <- confmirt.model()
F1 = 1-16
F2 = 17-32
(F1*F2) = 1-8
(mod.quad <- confmirt(data, model.quad))
(mod.combo <- confmirt(data, model.combo))
anova(mod.quad, mod.combo)
#non-linear item and test plots
plot(mod.quad)
plot(mod.combo, type = 'SE')
itemplot(mod.quad, 1, type = 'score')
itemplot(mod.combo, 2, type = 'score')
itemplot(mod.combo, 2, type = 'infocontour')
Run the code above in your browser using DataLab