R: Factor Scores for Latent Variables

fscores {sem} | R Documentation

## Factor Scores for Latent Variables

### Description

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.

### Author(s)

John Fox jfox@mcmaster.ca

### References

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)

[Package sem version 3.1-13 Index]