Вы спрашивали, как использовать нагрузки для построения партитур.Ваше решение, хотя и правильное, не делает этого.Он использует метод регрессии (в качестве альтернативы вы также можете использовать метод Бартлетта), и это использует ограничение, что оценки некоррелированы, сосредоточены вокруг 0 и с дисперсией = 1. Следовательно, это не те факторы, которые можно было бы получить, используя F= ML с F фактор-матрицей, M исходной матрицей и L матрицей загрузки.
Демонстрация с примером из файлов справки:
v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6)
v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5)
v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6)
v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4)
v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5)
v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4)
m1 <- cbind(v1,v2,v3,v4,v5,v6)
fa <- factanal(m1, factors=3,scores="regression")
fa$scores # the correct solution
fac <- m1 %*% loadings(fa) # the answer on your question
Это явно разные значения.
Редактировать: Это связано с тем, что оценки регрессии Томсона основаны на масштабированных переменных и учитывают матрицу корреляции.Если бы вы рассчитывали баллы вручную, вы бы сделали:
> fac2 <- scale(m1) %*% solve(cor(m1)) %*% loadings(fa)
> all.equal(fa$scores,as.matrix(fac2))
[1] TRUE
Для получения дополнительной информации см. этот обзор
И чтобы показать вам, почему это важно: Если вы рассчитываете баллы «наивным» способом, ваши баллы фактически коррелируют.И это то, от чего вы хотели избавиться в первую очередь:
> round(cor(fac),2)
Factor1 Factor2 Factor3
Factor1 1.00 0.79 0.81
Factor2 0.79 1.00 0.82
Factor3 0.81 0.82 1.00
> round(cor(fac2),2)
Factor1 Factor2 Factor3
Factor1 1 0 0
Factor2 0 1 0
Factor3 0 0 1