TAM (version 1.9-0)

tam.fa: Bifactor Model and Exploratory Factor Analysis

Description

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.

Usage

tam.fa(resp, irtmodel, dims = NULL, nfactors = NULL, pid = NULL, 
    pweights = NULL, control = list())

Arguments

resp
Data frame with polytomous item responses $k=0,...,K$. Missing responses must be declared as NA.
irtmodel
A string which defines the IRT model to be estmated. Options are "efa" (exploratory factor analysis), "bifactor1" (Rasch testlet model in case of dichotomous data; Wang & Wilson, 2005; for polytomous data it assumes item slope
dims
A numeric or string vector which only applies in case of irtmodel="bifactor1" or irtmodel="bifactor2". Different entries in the vector indicate different dimensions of items which should load on the nested factor. If items sho
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
control
See tam.mml for more details. Note that the default is Quasi Monte Carlo integration with 1500 nodes (snodes=1500, QMC=TRUE).

Value

  • The same list entries as in tam.mml but in addition the following statistics are included:
  • B.standStandardized factor loadings of the bifactor model or the exploratory factor analysis.
  • B.SLIn case of exploratory factor analysis (irtmodel="efa"), loadings form the Schmid-Leimann solution of the psych package.
  • efa.obliminOutput from oblimin rotation in exploratory factor analysis which is produced by the GPArotation package
  • measVector of dimensionality and reliability statistics. Included are the ECV measure (Reise, Moore & Haviland, 2010; Reise, 2012), $\omega_t$ (Omega Total), $\omega_a$ (Omega asymptotical) and $\omega_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).

Details

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 | \theta_{pg} , u_{p1} , \ldots , u_{pD} ) = a_{i0} \theta_{pg} + a_{i1} u_{pd(i) }$$ Items load on the general factor $\theta_{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.

References

Green, S. B., & Yang, Y. (2009). Reliability of summed item scores using structural equation modeling: An alternative to coefficient alpha. Psychometrika, 74, 155-167. Reise, S. P. (2012). The rediscovery of bifactor measurement models. Multivariate Behavioral Research, 47, 667-696. 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, 544-559. Revelle, W., & Zinbarg, R. E. (2009). Coefficients alpha, beta, omega and the glb: Comments on Sijtsma. Psychometrika, 74, 145-154. Wang, W.-C., & Wilson, M. (2005). The Rasch testlet model. Applied Psychological Measurement, 29, 126-149.

See Also

For more details see tam.mml because tam.fa is just a wrapper for tam.mml.2pl and tam.mml. logLik.tam, anova.tam

Examples

Run this code
#############################################################################
# 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.fa( resp=resp , irtmodel="efa" , nfactors= 2  )
summary(mod1a)
# varimax rotation
varimax(mod1a$B.stand)
# promax rotation
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.fa( resp=resp , irtmodel="bifactor1" , dims=dims )
summary(mod1b)

#***
# Model 1c: Bifactor model
mod1c <- 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.fa( resp=resp , irtmodel="bifactor2" , dims=dims1 )
summary(mod1d)

Run the code above in your browser using DataLab