Calculate factor scores or factor-score coefficients for the latent variables in a structural-equation model.
## S3 method for class 'sem'fscores(model, data=model$data, center=TRUE, scale=FALSE,...)## S3 method for class 'msem'fscores(model, data=model$data, center=TRUE, scale=FALSE,...)
Arguments
model: an object of class "sem" or "msem", produced by the sem
function.
data: an optional numeric data frame or matrix containing the observed variables in the model; if not NULL, the estimated factor scores are returned; if NULL, the factor-score coefficients are returned. The default is the data element of model, which is non-NULL if the model was fit to a data set rather than a covariance or moment matrix.
center: if TRUE, the default, the means of the observed variables are subtracted prior to computing factor scores. One would normally use this option if the model is estimated from a covariance or correlation matrix among the observed variables.
scale: if TRUE, the possibly centered variables are divided by their root-mean-squares; the default is FALSE. One would normally use this option if the model is estimated from a correlation matrix among the observed variables. Centering and scaling are performed by the scale function.
...: arguments to pass down.
Details
Factor-score coefficients are computed by the regression method as C−1C∗, where C is the model-implied covariance or moment matrix among the observed variables and C∗ is the matrix of model-implied covariances or moments between the observed and latent variables.
Returns
Either a matrix of estimated factor scores (if the data argument is supplied) or a matrix of factor-score coefficients (otherwise). In the case of an "msem"
argument, a list of matrices is returned.
References
Bollen, K. A. (1989) Structural Equations With Latent Variables. Wiley.
# In the first example, readMoments() and specifyModel() read from the# input stream. This example cannot be executed via example() but can be entered# at the command prompt. The example is repeated using file input;# this example can be executed via example(). ## Not run:S.wh <- readMoments(names=c('Anomia67','Powerless67','Anomia71','Powerless71','Education','SEI'))11.8346.9479.3646.8195.09112.5324.7835.0287.4959.986-3.839-3.889-3.841-3.6259.610-21.899-18.831-21.748-18.77535.522450.288# This model in the SAS manual for PROC CALISmodel.wh.1<- specifyModel() Alienation67 -> Anomia67,NA,1 Alienation67 -> Powerless67,NA,0.833 Alienation71 -> Anomia71,NA,1 Alienation71 -> Powerless71,NA,0.833 SES -> Education,NA,1 SES -> SEI, lamb,NA SES -> Alienation67, gam1,NA Alienation67 -> Alienation71, beta,NA SES -> Alienation71, gam2,NA Anomia67 <-> Anomia67, the1,NA Anomia71 <-> Anomia71, the1,NA Powerless67 <-> Powerless67, the2,NA Powerless71 <-> Powerless71, the2,NA Education <-> Education, the3,NA SEI <-> SEI, the4,NA Anomia67 <-> Anomia71, the5,NA Powerless67 <-> Powerless71, the5,NA Alienation67 <-> Alienation67, psi1,NA Alienation71 <-> Alienation71, psi2,NA SES <-> SES, phi,NAsem.wh.1<- sem(model.wh.1, S.wh,932)fscores(sem.wh.1)## End(Not run)# The following example can be executed via example():etc <- system.file(package="sem","etc")# path to data and model files(S.wh <- readMoments(file=file.path(etc,"S-Wheaton.txt"), names=c('Anomia67','Powerless67','Anomia71','Powerless71','Education','SEI')))(model.wh.1<- specifyModel(file=file.path(etc,"model-Wheaton-1.txt")))(sem.wh.1<- sem(model.wh.1, S.wh,932))fscores(sem.wh.1)