Пользуясь SPSS в течение многих лет, я теперь хочу перейти на R. Для согласованности результатов я хочу повторить предыдущие результаты SPSS в R. Я не статистик, и я довольно новичок в изучении R. Я сталкиваюсь с некоторыми трудностями, когдаэто сводится к получению тех же результатов PCA с ротацией Equamax в SPSS и R. Желаемый результат должен включать:
«хорошая» повернутая матрица компонентов (без оценок вне диагонали)
баллов за каждое наблюдение.
Чтобы воссоздать пример, я сделал следующее:
#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 сделал это позже только с диагональю (предложения о том, как изменить, которые, конечно, приветствуются).Мне неясны две вещи:
Почему отрицательная нагрузка для «продвижения» по диагонали, а в SPSS нет?
Как получить индивидуальные оценки регрессии для каждого наблюдения, как в SPSS, потому что оценки PCA0 $ не соответствуют оценкам FAC в SPSS?