как я могу получить/вменить базовую матрицу вращения (rotmat) из psych::principal?

Я использую psych::principal в другой функции, при этом различные функции rotate передаются в principal. (principal предлагает множество вариантов поворота и передает их другим функциям).

Мне нужно получить матрицу вращения, которая была бы найдена и реализована в зависимости от используемой процедуры вращения.

Все нижестоящие процедуры ротации предлагают это, но, похоже, это не return()ed by principal.

Например:

randomcor <- cor(matrix(data = rnorm(n = 100), nrow = 10))
library(psych)
principalres <- principal(r = randomcor, nfactors = 3, rotate = "none")
unrot.loa <- unclass(principalres$loadings)

principalrot <- principal(r = randomcor, nfactors = 3, rotate = "varimax") # there is no way to retrieve the rot.mat from principal

# but this CAN be done from the underlying varimax!
varimaxres <- varimax(x = unrot.loa)
varimaxres$rotmat # see, THIS is what I want!

Мне не хочется заново реализовывать все процедуры ротации из principal. (Не повторяйте себя или кого-то еще, как говорится).

Кто-нибудь знает, как:

  • Я мог бы элегантно, каким-то волшебным образом извлечь rotmat из principal(), хотя, похоже, не вернуть его?
  • В качестве альтернативы я мог бы приписать то, что rotmat должно было "произойти", потому что я знаю повернутую и неповернутую загрузку?

person maxheld    schedule 22.08.2015    source источник
comment
автор пакета psych, Уильям Ревелл, только что сказал мне, что: › Я добавлю эту функцию в следующем выпуске. (будет примерно через 2 недели). Я обновлю пост, как только эта функция выйдет.   -  person maxheld    schedule 22.08.2015


Ответы (1)


как и обещал Уильям Ревелл, начиная с 1.5.8, psych также возвращает матрицы вращения для факторного анализа и анализа основных компонентов.

Это решает проблему, продолжая приведенный выше пример:

principalrot$rot.mat == varimaxres$rotmat  # it works!
person maxheld    schedule 31.08.2015