Calculate factor scores or factor-score coefficients for the latent variables
in a structural-equation model.
Usage
## 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^-1 C*, 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.
Value
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.
Bollen, K. A. (1989)
Structural Equations With Latent Variables. Wiley.
See Also
sem, scale
Examples
# 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.834
6.947 9.364
6.819 5.091 12.532
4.783 5.028 7.495 9.986
-3.839 -3.889 -3.841 -3.625 9.610
-21.899 -18.831 -21.748 -18.775 35.522 450.288
# This model in the SAS manual for PROC CALIS
model.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, NA
sem.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)