Bifactor Model and Exploratory Factor Analysis
Estimates the bifactor model and exploratory factor analysis with marginal maximum likelihood estimation.
This function is simply a wrapper to tam.mml
or
tam.mml.2pl
.
tam.fa(resp, irtmodel, dims=NULL, nfactors=NULL, pid=NULL, pweights=NULL, verbose=TRUE, control=list(), ...)
resp |
Data frame with polytomous item responses k=0,...,K.
Missing responses must be declared as |
irtmodel |
A string which defines the IRT model to be estimated. Options
are |
dims |
A numeric or string vector which only applies in case of
|
nfactors |
A numerical value which indicates the number of factors in exploratory factor analysis. |
pid |
An optional vector of person identifiers |
pweights |
An optional vector of person weights |
verbose |
Logical indicating whether output should
be printed during iterations. This argument replaces |
control |
See |
... |
Further arguments to be passed. These arguments are used in
|
The exploratory factor analysis (irtmodel="efa"
is estimated using an echelon form of the loading matrix and uncorrelated factors.
The obtained standardized loading matrix is rotated using oblimin rotation.
In addition, a Schmid-Leimann transformation (see Revelle & Zinbarg, 2009)
is employed.
The bifactor model (irtmodel="bifactor2"
; Reise 2012)
for dichotomous responses is defined as
logit P(X_{pi}=1 | θ_{pg}, u_{p1}, …, u_{pD} )= a_{i0} θ_{pg} + a_{i1} u_{pd(i) }
Items load on the general factor θ_{pg} and a specific (nested) factor u_{pd(i) }. All factors are assumed to be uncorrelated.
In the Rasch testlet model (irtmodel="bifactor1"
),
all item slopes are set to 1 and variances are
estimated.
For polytomous data, the generalized partial credit model is used. The loading structure is defined in the same way as for dichotomous data.
The same list entries as in tam.mml
but in addition the
following statistics are included:
B.stand |
Standardized factor loadings of the bifactor model or the exploratory factor analysis. |
B.SL |
In case of exploratory factor analysis ( |
efa.oblimin |
Output from oblimin rotation in exploratory factor analysis which is produced by the GPArotation package |
meas |
Vector of dimensionality and reliability statistics. Included are the ECV measure (explained common variation; Reise, Moore & Haviland, 2010; Reise, 2012), ω_t (Omega Total), ω_a (Omega asymptotic) and ω_h (Omega hierarchical) (Revelle & Zinbarg, 2009). The reliability of the sum score based on the bifactor model for dichotomous item responses is also included (Green & Yang, 2009). |
Green, S. B., & Yang, Y. (2009). Reliability of summed item scores using structural equation modeling: An alternative to coefficient alpha. Psychometrika, 74, 155-167. doi: 10.1007/s11336-008-9099-3
Reise, S. P. (2012). The rediscovery of bifactor measurement models. Multivariate Behavioral Research, 47(5), 667-696. doi: 10.1080/00273171.2012.715555
Reise, S. P., Moore, T. M., & Haviland, M. G. (2010). Bifactor models and rotations: Exploring the extent to which multidimensional data yield univocal scale scores. Journal of Personality Assessment, 92(6), 544-559. doi: 10.1080/00223891.2010.496477
Revelle, W., & Zinbarg, R. E. (2009). Coefficients alpha, beta, omega and the glb: Comments on Sijtsma. Psychometrika, 74(1), 145-154. doi: 10.1007/s11336-008-9102-z
Wang, W.-C., & Wilson, M. (2005). The Rasch testlet model. Applied Psychological Measurement, 29(2), 126-149. doi: 10.1177/0146621604271053
For more details see tam.mml
because tam.fa
is just
a wrapper for tam.mml.2pl
and tam.mml
.
## Not run: ############################################################################# # EXAMPLE 1: Dataset reading from sirt package ############################################################################# data(data.read,package="sirt") resp <- data.read #*** # Model 1a: Exploratory factor analysis with 2 factors mod1a <- TAM::tam.fa( resp=resp, irtmodel="efa", nfactors=2 ) summary(mod1a) # varimax rotation stats::varimax(mod1a$B.stand) # promax rotation stats::promax(mod1a$B.stand) # more rotations are included in the GPArotation package library(GPArotation) # geomin rotation oblique GPArotation::geominQ( mod1a$B.stand ) # quartimin rotation GPArotation::quartimin( mod1a$B.stand ) #*** # Model 1b: Rasch testlet model with 3 testlets dims <- substring( colnames(resp),1,1 ) # define dimensions mod1b <- TAM::tam.fa( resp=resp, irtmodel="bifactor1", dims=dims ) summary(mod1b) #*** # Model 1c: Bifactor model mod1c <- TAM::tam.fa( resp=resp, irtmodel="bifactor2", dims=dims ) summary(mod1c) #*** # Model 1d: reestimate Model 1c but assume that items 3 and 5 do not load on # specific factors dims1 <- dims dims1[c(3,5)] <- NA mod1d <- TAM::tam.fa( resp=resp, irtmodel="bifactor2", dims=dims1 ) summary(mod1d) ############################################################################# # EXAMPLE 2: Polytomous data ############################################################################# data(data.timssAusTwn.scored, package="TAM") dat <- data.timssAusTwn.scored resp <- dat[, grep("M0", colnames(dat))] #*** # Model 1a: Rasch testlet model with 2 testlets dims <- c( rep(1,5), rep(2,6)) mod1a <- TAM::tam.fa( resp=resp, irtmodel="bifactor1", dims=dims ) summary(mod1a) #*** # Model 1b: Bifactor model mod1b <- TAM::tam.fa( resp=resp, irtmodel="bifactor2", dims=dims ) summary(mod1b) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.