Как вы используете корреляционную матрицу в качестве входных данных для 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
Другие вопросы по тегам