Получить стандартизированные нагрузки («матрицу паттернов») из объекта psych :: fa - PullRequest
0 голосов
/ 14 сентября 2018

Функция psych :: print.psych () создает прекрасный вывод для объектов факторного анализа, создаваемых psych :: fa ().Я хотел бы получить таблицу, которая следует за текстом «Стандартизированные нагрузки (матрица шаблонов) на основе матрицы корреляции» в качестве фрейма данных без вырезания и вставки.

library(psych)
my.fa <- fa(Harman74.cor$cov, 4)
my.fa  #Equivalent to print.psych(my.fa)

Получает следующее (я показываю здесь первые четыре элемента):

Factor Analysis using method =  minres
Call: fa(r = Harman74.cor$cov, nfactors = 4)
Standardized loadings (pattern matrix) based upon correlation matrix
                         MR1   MR3   MR2   MR4   h2   u2 com
VisualPerception        0.04  0.69  0.04  0.06 0.55 0.45 1.0
Cubes                   0.05  0.46 -0.02  0.01 0.23 0.77 1.0
PaperFormBoard          0.09  0.54 -0.15  0.06 0.34 0.66 1.2
Flags                   0.18  0.52 -0.04 -0.02 0.35 0.65 1.2

Я попытался проверить исходный код для print.psych (Использование View(print.psych) в RStudio), но мог найти только раздел для печати стандартных загрузок для «Факторного анализа по группам».

my.fa$weights не стандартизированы, и в таблице отсутствуют столбцы h2, u2 и com.Если они могут быть стандартизированы, следующий код мог бы работать:

library(data.table)
library(psych)
my.fa <- fa(Harman74.cor$cov,4)
my.fa.table <- data.table(dimnames(Harman74.cor$cov)[[1]],
    my.fa$weights, my.fa$communalities, my.fa$uniquenesses, my.fa$complexity)
setnames(my.fa.table, old = c("V1", "V3", "V4", "V5"), 
                      new = c("item", "h2", "u2", "com"))

Печать my.fa.table дает следующее (я показываю первые четыре строки), что указывает, что $ weights является неправильным:

                     item          MR1         MR3          MR2          MR4        h2        u2      com
 1:       VisualPerception -0.021000973  0.28028576  0.006002429 -0.001855021 0.5501829 0.4498201 1.028593
 2:                  Cubes -0.003545975  0.11022570 -0.009545919 -0.012565221 0.2298420 0.7701563 1.033828
 3:         PaperFormBoard  0.028562047  0.13244895 -0.019162262  0.014448449 0.3384722 0.6615293 1.224154
 4:                  Flags  0.009187032  0.14430196 -0.025374834 -0.033737089 0.3497962 0.6502043 1.246102

Замена $weights на $loadings дает следующее сообщение об ошибке:

Error in as.data.frame.default(x, ...) : 
  cannot coerce class ‘"loadings"’ to a data.frame

Обновление:

Добавление [,] исправило проблему класса:

library(data.table)
library(psych)
my.fa <- fa(Harman74.cor$cov,4)

my.fa.table <- data.table(dimnames(Harman74.cor$cov)[[1]],
    my.fa$loadings[,], my.fa$communalities, my.fa$uniquenesses, my.fa$complexity)
setnames(my.fa.table, old = c("V1", "V3", "V4", "V5"), 
                      new = c("item", "h2", "u2", "com"))
my.fa.table

                      item         MR1          MR3          MR2         MR4        h2        u2      com
 1:       VisualPerception  0.04224875  0.686002901  0.041831185  0.05624303 0.5501829 0.4498201 1.028593
 2:                  Cubes  0.05309628  0.455343417 -0.022143990  0.01372376 0.2298420 0.7701563 1.033828
 3:         PaperFormBoard  0.08733001  0.543848733 -0.147686005  0.05523805 0.3384722 0.6615293 1.224154
 4:                  Flags  0.17641395  0.517235582 -0.038878915 -0.02229273 0.3497962 0.6502043 1.246102

Я все равно был бы рад получить ответ, который делает это более элегантно или объясняет, почему он не встроен.

1 Ответ

0 голосов
/ 23 сентября 2018

Это не встроено, потому что каждый человек хочет чего-то немного другого.Как вы обнаружили, вы можете создать таблицу, объединив четыре объекта из fa: загрузки, сообщества, уникальность и сложность.

   df <- data.frame(unclass(f$loadings), h2=f$communalities, u2= f$uniqueness,com=f$complexity)
 round(df,2)

так, для корреляционной матрицы Терстоуна:

  f <- fa(Thurstone,3)
 df <- data.frame(unclass(f$loadings), h2=f$communalities, u2= f$uniqueness,com=f$complexity)
 round(df,2)

Производит

                    MR1   MR2   MR3   h2   u2  com
Sentences          0.90 -0.03  0.04 0.82 0.18 1.01
Vocabulary         0.89  0.06 -0.03 0.84 0.16 1.01
Sent.Completion    0.84  0.03  0.00 0.74 0.26 1.00
First.Letters      0.00  0.85  0.00 0.73 0.27 1.00
Four.Letter.Words -0.02  0.75  0.10 0.63 0.37 1.04
Suffixes           0.18  0.63 -0.08 0.50 0.50 1.20
Letter.Series      0.03 -0.01  0.84 0.73 0.27 1.00
Pedigrees          0.38 -0.05  0.46 0.51 0.49 1.96
Letter.Group      -0.06  0.21  0.63 0.52 0.48 1.25

Или,вы можете попробовать fa2latex для хорошего форматирования на основе LaTex.

fa2latex(f)

, который создает таблицу LateX в стиле квази APA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...