Репликация результатов SPSS PCA с вращением Equamax в R - PullRequest
0 голосов
/ 19 февраля 2019

Пользуясь SPSS в течение многих лет, я теперь хочу перейти на R. Для согласованности результатов я хочу повторить предыдущие результаты SPSS в R. Я не статистик, и я довольно новичок в изучении R. Я сталкиваюсь с некоторыми трудностями, когдаэто сводится к получению тех же результатов PCA с ротацией Equamax в SPSS и R. Желаемый результат должен включать:

  1. «хорошая» повернутая матрица компонентов (без оценок вне диагонали)

  2. баллов за каждое наблюдение.

Чтобы воссоздать пример, я сделал следующее:

#Open the Chatterjee-Price Attitude Data
df <- attitude[,-1]
df <- as.data.frame(scale(df))

#Write to SPSS file
library(haven)   
write_sav(df, "Attitude scaled.sav")

#Run SPSS syntax
#* Encoding: UTF-8.
#FACTOR
#  /VARIABLES 
# complaints privileges learning raises critical advance
#  /MISSING
#  LISTWISE /ANALYSIS 
# complaints privileges learning raises critical advance
#  /PRINT ROTATION
#  /FORMAT SORT BLANK(.40)
#  /CRITERIA FACTORS(6) ITERATE(1000)
#  /EXTRACTION PC
#  /CRITERIA ITERATE(1000)
#  /ROTATION EQUAMAX
#  /SAVE REG(ALL)
# /METHOD=CORRELATION .

Это приводит к желаемым значениям матрицы повернутых компонентов и коэффициентов в SPSS.К сожалению, я не могу публиковать изображения, но диагональ гласит:

advance 0.926
privileges 0.931
critical 0.981
complaints 0.873
learning 0.869
raises 0.819

И шесть баллов за первое наблюдение:

FAC1_1  0.55904
FAC2_1  -1.81149
FAC3_1  1.86281
FAC4_1  -0.54449
FAC5_1  -1.26223
FAC6_1 -0.09140

Благодаря это пост, я уже могу получить довольно похожие результаты в R:

library(psych)
library(GPArotation)
PCA0 <- principal(df, rotate='none', nfactors=6) #PCA by psych
PCA.EQ <- cfT(PCA0$loadings, kappa=0.5, normalize=TRUE)
rotmatrix_cft <- PCA.EQ$loadings
rotmatrix_cft[abs(rotmatrix_cft)<0.4] <- "" #Supressing low values for clarity
rotmatrix_cft <- dfOrder(rotmatrix_cft, -(1:6)) #Sorting the diagonal

Я могу понять, почему порядок ПК отличается между SPSS и R, потому что SPSS сортирует во время процесса, используя все оценки и вRI сделал это позже только с диагональю (предложения о том, как изменить, которые, конечно, приветствуются).Мне неясны две вещи:

  1. Почему отрицательная нагрузка для «продвижения» по диагонали, а в SPSS нет?

  2. Как получить индивидуальные оценки регрессии для каждого наблюдения, как в SPSS, потому что оценки PCA0 $ не соответствуют оценкам FAC в SPSS?

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