factor.scores {ltm}R Documentation

Factor Scores

Description

Computation of factor scores for ltm and rasch models.

Usage

factor.scores(object, ...)

# S3 method for class 'ltm':
factor.scores.ltm(object, method=c("Component", "EB", "MI"), B=5, 
                    robust.se=FALSE, ...)

# S3 method for class 'rasch':
factor.scores.rasch(object, method=c("EB", "MI"), B=5, 
                    robust.se=FALSE, ...)

Arguments

object an object inheriting either from class ltm or class rasch.
method a character supplying the scoring method. For ltm objects available methods are: Component scores, Empirical Bayes and Multiple Imputation. For rasch objects available methods are: Empirical Bayes and Multiple Imputation. See Details section for more info.
B the number of multiple imputations to be used if method="MI".
robust.se logical; if TRUE the sandwich estimator is used for the estimation of the covariance matrix of the MLEs. See Details section for more info.
... additional argument; currently none is used.

Details

Factor scores are summary measures of the posterior distribution p(z|x), where z denotes the vector of latent variables and x the vector of manifest variables.

Usually as factor scores we assign the modes of the above posterior distribution evaluated at the MLEs. These Empirical Bayes estimates (use method="EB") and their associated variance are good measures of the posterior distribution while p -> infinity, where p is the number of items. This is based on the result

p(z|x)=p(z|x; hat{theta})(1+O(1/p)),

where hat{theta} are the MLEs. However, in the case of small p we ignore the variability of plugging in estimates and not the true parameter values. A solution to this problem can be given using Multiple Imputation (MI, use method="MI"). In particular, MI is used the other way around, i.e.,

Step 1:
Simulate new parameter values, say theta^*, from N(hat{theta}, C(hat{theta})), where C(hat{theta}) is the large sample covariance matrix of hat{theta} (if robust.se=TRUE C(hat{theta}) is based on the sandwich estimator).
Step 2:
Maximize p(z|x; theta^*) wrt z and also compute the associated variance to this mode.
Step 3:
Repeat steps 1-2 B times and combine the estimates using the known formulas of MI.

This scheme explicitly acknowledges the ignorance of the true parameter values by drawing from their large sample posterior distribution while taking into account the sampling error.

The Component scores (use method="Component") proposed by Bartholomew (1984) is an alternative method to scale the sample units in the latent dimensions identified by the model that avoids the calculation of the posterior mode. However, this method is not valid in the general case where we use nonlinear latent terms.

Value

An object of class fscores with components,

score.dat the data.frame of observed response patterns including, observed and expected frequencies as well as the factor scores.
method a character giving the scoring method used.
B the number of multiple imputations used; relevant only if method="MI".

References

Bartholomew, D. (1984) Scaling binary data using a factor model. Journal of the Royal Statistical Society, Series B, 46, 120–123.

Bartholomew, D. and Knott, M. (1999) Latent Variable Models and Factor Analysis, 2nd ed. London: Arnold.

Bartholomew, D., Steel, F., Moustaki, I. and Galbraith, J. (2002) The Analysis and Interpretation of Multivariate Data for Social Scientists. London: Chapman and Hall.

Rizopoulos, D. and Moustaki, I. (2005) Generalized latent variable models with nonlinear terms. submitted for publication.

See Also

ltm, rasch

Examples


## Factor Scores for the Rasch model
m <- rasch(Wirs)
factor.scores(m) # Empirical Bayes
factor.scores(m, "MI", B=20) # Multiple Imputation with 20 imputations

## Factor Scores for the one-factor model
m <- ltm(Abortion~z1)
factor.scores(m) # Component
factor.scores(m, "EB") # Empirical Bayes
factor.scores(m, "MI") # Multiple Imputation

## Factor Scores for the interaction model
m <- ltm(Wirs~z1*z2)
factor.scores(m, "EB") # Empirical Bayes
factor.scores(m, "MI") # Multiple Imputation


[Package ltm version 0.1-1 Index]