File: fscores.R

package info (click to toggle)
r-cran-sem 3.1.16-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 936 kB
  • sloc: ansic: 2,241; cpp: 1,646; sh: 4; makefile: 2
file content (23 lines) | stat: -rw-r--r-- 729 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# last modified 2011-08-06 by J. Fox

fscores <- function(model, ...){
	UseMethod("fscores")
}

fscores.sem <- function(model, data=model$data, center=TRUE, scale=FALSE, ...){
	m <- model$m
	P <- model$P
	A <- model$A
	var.names <- model$var.names
	observed <- var.names %in% rownames(model$C)
	if (all(observed)) stop("there are no latent variables")
	IAinv <- solve(diag(m) - A)
	Sigma <- IAinv %*% P %*% t(IAinv)
	B <- solve(Sigma[observed, observed]) %*% Sigma[observed, !observed]
	rownames(B) <- var.names[observed]
	colnames(B) <- var.names[!observed]
	if (is.null(data)) return(B)
	X <- as.matrix(data[,var.names[observed]])
	if (center || scale) X <- scale(X, center=center, scale=scale)
	X %*% B
}