View source: R/fsIndeterminacy.R
fsIndeterminacy | R Documentation |
This function illustrates the algebra of factor score indeterminacy using concepts from finite dimensional vector spaces. Given any factor loading matrix, factor correlation matrix, and desired sample size, the program will compute a matrix of observed scores and multiple sets of factors scores. Each set of (m common and p unique) factors scores will fit the model perfectly.
fsIndeterminacy(
Lambda = NULL,
Phi = NULL,
N = NULL,
X = NULL,
SeedX = NULL,
SeedBasis = NULL,
SeedW = NULL,
SeedT = 1,
DoFCorrection = TRUE,
Print = "short",
Digits = 3,
Example = FALSE
)
Lambda |
(Matrix) A p x m matrix of factor loadings. |
Phi |
(Matrix) An m x m factor correlation matrix. |
N |
(Integer) The desired sample size. |
X |
(Matrix) an optional N x p matrix of observed scores. Note that the observed scores
are expected to fit the factor model (as they will if they are generated
from simFA and Population = TRUE is specified). Default ( |
SeedX |
(Integer) Starting seed for generating the matrix of observed scores, X. |
SeedBasis |
(Integer) Starting seed for generating a basis for all scores. |
SeedW |
(Integer) Starting seed for generating a weight matrix that is used to construct those parts of the factor scores that lie outside of span(X). |
SeedT |
(Integer) Starting seed for generating a rotation matrix that creates a new set of factor scores from an existing set of scores such that the new set also perfectly fits the factor model. |
DoFCorrection |
(Logical) Degrees of freedom correction. If DoFCorrection = TRUE
then var(x) = 1/(N-1) * t(x) %*% x; else var(x) = 1/N * t(x) %*% x.
Default ( |
Print |
(Character) If |
Digits |
(Integer) Sets the number of significant digits to print when printing is requested. |
Example |
(Logical) If Example = TRUE the program will execute the orthogonal two factor model described in Waller (2021). |
"Sigma": The p x p model implied covariance matrix.
"X": An N x p data matrix for the observed variables.
"Fhat": An N x (m + p) matrix of regression factor score estimates.
"Fi": A possible set of common and unique factor scores.
"Fj": The set of factor scores that are minimally correlated with Fi.
"Fk": Another set of common and unique factor scores. Note that in a 1-factor model, Fk = Fi.
"Fl": The set of factor scores that are minimally correlated with Fk. Note that in a 1-factor model, Fj = Fl.
"Ei": Residual scores for Fi.
"Ej": Residual scores for Fj.
"Ek": Residual scores for Fk.
"El": Residual scores for Fl.
"L": The factor loading super matrix.
"C": The factor correlation super matrix.
"V": A (non unique) basis for R^N.
"W": Weight matrix for generating Zi.
"Tmat": The orthogonal transformation matrix used to construct Fk from Fi .
"B: The matrix that takes Ei to Ek (Ek = Ei B).
"Bstar" In an orthogonal factor model, Bstar takes Fi to Fk (Fk = Fi Bstar). In an oblique model the program returns Bstar=NULL.
"P": The matrix that imposes the proper covariance structure on Ei.
"SeedX": Starting seed for X.
"SeedBasis": Starting seed for the basis.
"SeedW": Starting seed for weight matrix W.
"SeedT": Starting seed for rotation matrix T.
"Guttman": Guttman indeterminacy measures for the common and unique factors.
"CovFhat": Covariance matrix of estimated factor scores.
Niels G. Waller (nwaller@umn.edu)
Guttman, L. (1955). The determinacy of factor score matrices with applications for five other problems of common factor theory. British Journal of Statistical Psychology, 8, 65-82.
Ledermann, W. (1938). The orthogonal transformation of a factorial matrix into itself. Psychometrika, 3, 181-187.
Schönemann, P. H. (1971). The minimum average correlation between equivalent sets of uncorrelated factors. Psychometrika, 36, 21-30.
Steiger, J. H. and Schonemann, P. H. (1978). In Shye, S. (Ed.), A history of factor indeterminacy (pp. 136–178). San Francisco: Jossey-Bass.
Waller, N. G. (2021) Understanding factor indeterminacy through the lens of finite dimensional vector spaces. Manuscript under review.
Other Factor Analysis Routines:
BiFAD()
,
Box26
,
GenerateBoxData()
,
Ledermann()
,
SLi()
,
SchmidLeiman()
,
faAlign()
,
faEKC()
,
faIB()
,
faLocalMin()
,
faMB()
,
faMain()
,
faScores()
,
faSort()
,
faStandardize()
,
faX()
,
fals()
,
fapa()
,
fareg()
,
orderFactors()
,
print.faMB()
,
print.faMain()
,
promaxQ()
,
summary.faMB()
,
summary.faMain()
# ---- Example 1: ----
# To run the example in Waller (2021) enter:
out1 <- fsIndeterminacy(Example = TRUE)
# ---- Example 1: Extended Version: ----
N <- 10 # number of observations
# Generate Lambda: common factor loadings
# Phi: Common factor correlation matrix
Lambda <- matrix(c(.8, 0,
.7, 0,
.6, 0,
0, .5,
0, .4,
0, .3), 6, 2, byrow=TRUE)
out1 <- fsIndeterminacy(Lambda,
Phi = NULL, # orthogonal model
SeedX = 1, # Seed for X
SeedBasis = 2, # Seed for Basis
SeedW = 3, # Seed for Weight matrix
SeedT = 5, # Seed for Transformation matrix
N = 10, # Number of subjects
Print = "long",
Digits = 3)
# Four sets of factor scores
Fi <- out1$Fi
Fj <- out1$Fj
Fk <- out1$Fk
Fl <- out1$Fl
# Estimated Factor scores
Fhat <- out1$Fhat
# B wipes out Fhat (in an orthogonal model)
B <- out1$B
round( cbind(Fhat[1:5,1:2], (Fhat %*% B)[1:5,1:2]), 3)
# B takes Ei -> Ek
Ei <- out1$Ei
Ek <- out1$Ek
Ek - (Ei %*% B)
# The Transformation Approach
# Bstar takes Fi --> Fk
Bstar <- out1$Bstar
round( Fk - Fi %*% Bstar, 3)
# Bstar L' = L'
L <- out1$L
round( L %*% t(Bstar), 3)[,1:2]
# ---- Example 3 ----
# We choose a different seed for T
out2 <- fsIndeterminacy(Lambda ,
Phi = NULL,
X = NULL,
SeedX = 1, # Seed for X
SeedBasis = 2, # Seed for Basis
SeedW = 3, # Seed for Weight matrix
SeedT = 4, # Seed for Transformation matrix
N,
Print = "long",
Digits = 3,
Example = FALSE)
Fi <- out2$Fi
Fj <- out2$Fj
Fk <- out2$Fk
Fl <- out2$Fl
X <- out2$X
# Notice that all sets of factor scores are model consistent
round( t( solve(t(Fi) %*% Fi) %*% t(Fi) %*% X) ,3)
round( t( solve(t(Fj) %*% Fj) %*% t(Fj) %*% X) ,3)
round( t( solve(t(Fk) %*% Fk) %*% t(Fk) %*% X) ,3)
round( t( solve(t(Fl) %*% Fl) %*% t(Fl) %*% X) ,3)
# Guttman's Indeterminacy Index
round( (1/N * t(Fi) %*% Fj)[1:2,1:2], 3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.