Я сравнил ?prcomp
и ?princomp
нашел кое-что о анализе главных компонентов Q-режима и R-режима (PCA). Но, честно говоря, я этого не понимаю. Кто-нибудь может объяснить разницу и, возможно, даже объяснить, когда применять какие?
Я сравнил ?prcomp
и ?princomp
нашел кое-что о анализе главных компонентов Q-режима и R-режима (PCA). Но, честно говоря, я этого не понимаю. Кто-нибудь может объяснить разницу и, возможно, даже объяснить, когда применять какие?
Ответы:
Разница между ними не имеет ничего общего с типом PCA, который они выполняют, а только с методом, который они используют. Как говорит страница справки для prcomp
:
Расчет выполняется путем разложения по сингулярным значениям (центрированной и, возможно, масштабированной) матрицы данных, а не с использованием
eigen
ковариационной матрицы. Как правило, это предпочтительный метод для численной точности.
С другой стороны, princomp
страница справки гласит:
Расчет выполняется с использованием
eigen
корреляционной или ковариационной матрицы, как определеноcor
. Это сделано для совместимости с результатом S-PLUS. Предпочтительный метод расчета состоит в использованииsvd
наx
, как это делается вprcomp
«.
Таким образом, prcomp
это предпочтительнее , хотя на практике вы вряд ли увидите большую разницу (например, если вы запустите примеры на страницах справки, вы должны получить идентичные результаты).
prcomp
, является предпочтительным методом.
Обычно многомерный анализ (вычисление корреляции, извлечение latents и т.д.) делаются из столбцов данных , которые являются функцией или вопросами, - в то время как единицы выборки, строки, являются г espondents. Следовательно, этот путь называется R- анализом пути. Иногда, однако, вы можете сделать многомерный анализ responsents, а д ОПРОСЫ рассматриваются в качестве единиц выборки. Это был бы Q способ анализа.
Между этими двумя понятиями нет формальной разницы, поэтому вы можете управлять обоими с помощью одной и той же функции, а только транспонировать свои данные. Однако существуют различия в вопросах стандартизации и интерпретации результатов.
Это общий ответ: я не касаюсь конкретно функций R prcomp
и princomp
потому что я не пользователь R и не знаю о возможных различиях между ними.
Полезная и конкретная документация от Грегори Б. Андерсона под названием « 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 ). Кроме того, результаты функций сравниваются с использованием процедуры моделирования, чтобы увидеть, отличаются ли разные методы по собственным значениям, собственным векторам и оценкам, полученным из выходных данных.
Ниже приведены результаты моего теста:
> 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