В чем разница между функциями R prcomp и princomp?


70

Я сравнил ?prcompи ?princompнашел кое-что о анализе главных компонентов Q-режима и R-режима (PCA). Но, честно говоря, я этого не понимаю. Кто-нибудь может объяснить разницу и, возможно, даже объяснить, когда применять какие?


2
Есть вопрос о разнице между функциями prcomp и princomp в R или о разнице между «Q-mode» и «R-mode PCA»? Два не связаны.
Бретт

Прошло много времени. Но я проверю, как только у меня будет время. IIRC У меня действительно были некоторые отличия ...
hans0l0

Ответы:


50

Разница между ними не имеет ничего общего с типом PCA, который они выполняют, а только с методом, который они используют. Как говорит страница справки для prcomp:

Расчет выполняется путем разложения по сингулярным значениям (центрированной и, возможно, масштабированной) матрицы данных, а не с использованием eigenковариационной матрицы. Как правило, это предпочтительный метод для численной точности.

С другой стороны, princomp страница справки гласит:

Расчет выполняется с использованием eigenкорреляционной или ковариационной матрицы, как определено cor. Это сделано для совместимости с результатом S-PLUS. Предпочтительный метод расчета состоит в использовании svdна x, как это делается в prcomp«.

Таким образом, prcompэто предпочтительнее , хотя на практике вы вряд ли увидите большую разницу (например, если вы запустите примеры на страницах справки, вы должны получить идентичные результаты).


1
Есть некоторые ужасные технические детали о различных лежащих в основе линейных алгебрах и подпрограммах LAPACK, использованных в моем ответе на вопрос: почему главные компоненты в PCA (собственные векторы ковариационной матрицы) взаимно ортогональны?
Серебряная

1
Также см. Почему PCA данных с помощью SVD данных? для обсуждения того, почему SVD на матрице данных, как реализовано prcomp, является предпочтительным методом.
говорит амеба, восстанови Монику

22

Обычно многомерный анализ (вычисление корреляции, извлечение latents и т.д.) делаются из столбцов данных , которые являются функцией или вопросами, - в то время как единицы выборки, строки, являются г espondents. Следовательно, этот путь называется R- анализом пути. Иногда, однако, вы можете сделать многомерный анализ responsents, а д ОПРОСЫ рассматриваются в качестве единиц выборки. Это был бы Q способ анализа.

Между этими двумя понятиями нет формальной разницы, поэтому вы можете управлять обоими с помощью одной и той же функции, а только транспонировать свои данные. Однако существуют различия в вопросах стандартизации и интерпретации результатов.

Это общий ответ: я не касаюсь конкретно функций R prcompи princompпотому что я не пользователь R и не знаю о возможных различиях между ними.


5

Полезная и конкретная документация от Грегори Б. Андерсона под названием « PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAДала» дала больше информации по этой теме.

Следующие два абзаца были извлечены из введения:

В R есть два основных метода для выполнения PCA без каких-либо пропущенных значений: (1) спектральное разложение (R-режим [также известный как собственное разложение]) и (2) разложение по сингулярным значениям (Q-режим; R Development Core Team 2011). Оба эти метода могут быть выполнены с использованием функций eigen (R-mode) и svd (Q-mode) соответственно, или могут быть выполнены с использованием многих функций PCA, найденных в пакете stats и других дополнительных доступных пакетах. Метод анализа спектральной декомпозиции исследует ковариации и корреляции между переменными, в то время как метод декомпозиции сингулярных значений рассматривает ковариации и корреляции между выборками. Хотя оба метода могут быть легко выполнены в R, метод разложения по сингулярным значениям (т.е.

Этот документ посвящен сравнению различных методов для выполнения PCA в R и предоставляет соответствующие методы визуализации для проверки нормальности в статистическом пакете. Более конкретно, этот документ сравнивает шесть различных функций, созданных для PCA или используемых для них: eigen, princomp, svd, prcomp, PCA и pca. По всему документу необходимый R-код для выполнения этих функций встроен в текст с использованием шрифта Courier New и имеет цветовую кодировку с использованием метода, предоставленного в Tinn-R ( https://sourceforge.net/projects/tinn-r ). Кроме того, результаты функций сравниваются с использованием процедуры моделирования, чтобы увидеть, отличаются ли разные методы по собственным значениям, собственным векторам и оценкам, полученным из выходных данных.


2
Ответы лучше, когда они автономны, потому что ссылки, как правило, становятся неработающими (например, если страница перемещается или удаляется). Не могли бы вы попытаться расширить свой ответ?
Патрик Куломб

@PatrickCoulombe, это было сделано. Спасибо за ваше предложение. Я приму к сведению это в будущем.
Pengchy

1

prcompN-1princompN

Ниже приведены результаты моего теста:

> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
    commun probl_solv    logical      learn   physical appearance
  5.039841   1.689540   2.000000   4.655398   3.770700   4.526689
> pc.cr1$scale
    commun probl_solv    logical      learn   physical appearance
  4.805300   1.610913   1.906925   4.438747   3.595222   4.316028

Тестовые данные:

commun probl_solv logical learn physical appearance 12 52 20 44 48 16 12 57 25 45 50 16 12 54 21 45 50 16 13 52 21 46 51 17 14 54 24 46 51 17 22 52 25 54 58 26 22 56 26 55 58 27 17 52 21 45 52 17 15 53 24 45 53 18 23 54 23 53 57 24 25 54 23 55 58 25

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.