Анализ главных компонент на корреляционной матрице - PullRequest
0 голосов
/ 17 ноября 2018

Многие функции могут выполнять анализ основных компонентов (PCA) для необработанных данных в R. Под необработанными данными я понимаю любой фрейм или матрицу данных, строки которых проиндексированы наблюдениями, а столбцы идентифицированы с измерениями. Можем ли мы провести PCA на корреляционной матрице в R? Какая функция может принимать корреляционную матрицу в качестве входных данных в R?

1 Ответ

0 голосов
/ 17 ноября 2018

Как уже упоминалось в комментариях, вы можете использовать

ii <- as.matrix(iris[,1:4])
princomp(covmat=cor(ii))

Это даст вам эквивалентные результаты для princomp(iris,cor=TRUE) (то есть не , что вы хотите - последний использует полныйматрица данных, но возвращает значение, вычисленное при преобразовании ковариационной матрицы в корреляцию).


Вы также можете выполнить все соответствующие вычисления вручную, если у вас есть матрица корреляции:

cc <- cor(ii)
e1 <- eigen(cc)

Стандартные отклонения:

sqrt(e1$values)
[1] 1.7083611 0.9560494 0.3830886 0.1439265

Отношение отклонений:

e1$values/sum(e1$values)
[1] 0.729624454 0.228507618 0.036689219 0.005178709

Вы можете получить нагрузки через e1$vectors.Вычислите баллы (в соответствии с этот вопрос CV ) с помощью as.matrix(iris) %*% e1$vectors) (это будет не дать численно идентичные ответы на princomp()$scores - собственные векторы масштабируются по-разному - но это дает эквивалентные результаты).

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