Как вы используете корреляционную матрицу в качестве входных данных для princomp() в R
У меня есть фрейм данных, который представляет корреляционную матрицу большого набора данных:
> data
V1 V2 V3 V4 V5 V6 V7 V8
1 1.000 0.846 0.805 0.859 0.473 0.398 0.301 0.382
2 0.846 1.000 0.881 0.826 0.376 0.326 0.277 0.415
3 0.805 0.881 1.000 0.801 0.380 0.319 0.237 0.345
4 0.859 0.826 0.801 1.000 0.436 0.329 0.327 0.365
5 0.473 0.376 0.380 0.436 1.000 0.762 0.730 0.629
6 0.398 0.326 0.319 0.329 0.762 1.000 0.583 0.577
7 0.301 0.277 0.237 0.327 0.730 0.583 1.000 0.539
8 0.382 0.415 0.345 0.365 0.629 0.577 0.539 1.000
Я хочу провести анализ основных компонентов с помощью princomp() в {stats}. Я попытался прочитать доступную документацию и получил:
myPCA <- princomp(~V1+V2+V3+V4+V5+V6+V7+V8, data=data, covmat=data)
Но это не делает ничего иного, чем когда я остановился на последнем аргументе. Посоветуйте, пожалуйста, правильный способ использования параметров princomp().
2 ответа
Вы можете попробовать использовать principal
функция под psych
пакет. https://personality-project.org/r/html/principal.html.
Ниже приводится выдержка из http://www.statmethods.net/advstats/factor.html
# Principal Axis Factor Analysis
library(psych)
fit <- principal(mydata, nfactors=5, rotate="varimax")
fit # print results
mydata может быть матрицей необработанных данных или ковариационной матрицей.
Вы можете рассмотреть возможность использования eigen
функция, которая будет генерировать как собственные значения матрицы корреляции (эквивалентные квадратам sdevs, производимых princomp), так и собственные векторы (эквивалентные нагрузкам, производимым princomp).
Вызов будет просто:
myPCA <- eigen(data)
myPCA$values
myPCA$vectors