Яка різниця між R функціями prcomp і princomp?


69

Я порівняв ?prcompі ?princompзнайшов щось про аналіз основних компонентів Q-mode та R-mode (PCA). Але якщо чесно - я цього не розумію. Чи може хтось пояснити різницю, а може навіть пояснити, коли застосовувати яку?


4
О, це справді засмучує. :)
Роман Луштрик

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

Зазвичай багатоваріантний аналіз (обчислювальні кореляції, вилучення запізнювачів тощо) робиться з стовпців даних, які є ознаками або питаннями, - тоді як вибіркові одиниці, рядки, є r -спосібниками. Звідси цей спосіб називається аналізом R- шляху. Іноді, однак, вам може знадобитися зробити багатоваріантний аналіз респондентів, тоді як питання q розглядаються як одиниці вибірки. Це був би 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-режим [також відомий як eigendecomposition]) і (2) сингулярне розкладання значення (Q-mode; R Development Core Team 2011). Обидва ці способи можна виконувати на великій відстані, використовуючи функції eigen (R-режим) і svd (Q-режим) відповідно, або можна виконувати за допомогою багатьох функцій PCA, знайдених у пакеті статистики та інших додаткових доступних пакетах. Метод спектрального розкладання аналізує коваріації та кореляції між змінними, тоді як метод декомпозиції сингулярного значення розглядає коваріації та кореляції між зразками. Хоча обидва способи легко виконуватись у межах 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

prcompн-1princompн

Нижче наведені мої результати тесту:

> 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.