Які змінні пояснюють, які компоненти PCA, і навпаки?


15

Використовуючи ці дані:

head(USArrests)
nrow(USArrests)

Я можу зробити PCA так:

plot(USArrests)
otherPCA <- princomp(USArrests)

Я можу отримати нові компоненти

otherPCA$scores

і частка дисперсії, поясненої компонентами з

summary(otherPCA)

Але що робити, якщо я хочу знати, які змінні в основному пояснюються основними компонентами? І навпаки: пояснюється, наприклад, PC1 або PC2 murder? Як я можу це зробити?

Чи можу я сказати, наприклад, що PC1 на 80% пояснюється murderабо assault?

Я думаю, що завантаження тут мені допомагають, але вони показують спрямованість, а не розбіжність, пояснену так, як я це розумію, наприклад

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   

2
Зверніть увагу, що ознаки навантажень довільні. Ці три змінні злочинності позитивно співвідносяться між собою, але ви б розумно попрацювали над цим ознаками навантажень вище.
Нік Кокс

На жаль, я вважаю, що прийнята відповідь на це питання неправильна. Я розмістив свою власну відповідь нижче.
амеба каже, що поверніть Моніку

Відповіді:


11

Ви маєте рацію, вантажі можуть вам тут допомогти. Вони можуть бути використані для обчислення кореляції між змінними та основними компонентами. Більше того, сума навантажень у квадраті однієї змінної над усіма основними компонентами дорівнює 1. Отже, навантаження в квадраті говорить вам про частку дисперсії однієї змінної, пояснену однією основною складовою.

Проблема з принкомпом полягає в тому, що він показує лише "дуже високі" завантаження. Але оскільки навантаження - це лише власні вектори матриці коваріації, то можна отримати всі навантаження за допомогою eigenкоманди в R:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Тепер у вас є бажана інформація в матриці explvar.


дякую випадковому хлопцю, ви могли б мені показати, наприклад, assaultчи urban popми могли це зробити? частково плутається, оскільки в матриці присутня лише одна кореляція дляassault
user1320502

1
Вибачте, я покращив свою відповідь і не помітив, що ви вже прокоментували мою публікацію. штурмові навантаження з -0,995 на ПК1. Таким чином, можна зробити висновок, після порівняння цього значення PC1 пояснюється 99% дисперсії нападів змінної. Після порівняння значень міської попси можна зробити висновок, що PC3 пояснює 4%, а PC2 95,5% дисперсії міського попсу.
random_guy

1
ОП не запитує про те, яку частину PCA можна віднести до змінної? Ваша відповідь - про те, скільки змінної можна пояснити CPA
Гейзенберг

2
w=(0.3,0.3,...0.3)1109.9w0.1

2
Вибачте, що наполягаєте, але чи вважаєте ви, що я помиляюся в своєму коментарі вище? Якщо ні, то ви можете відредагувати свою відповідь, щоб усунути потенційну плутанину, це буде дуже корисно для майбутніх читачів. Я щойно опублікував відповідь, намагаючись пояснити ці питання більш докладно.
Амеба каже, що повернеться до Моніки

9

Я думаю, що прийнята відповідь може бути небезпечно оманливою (-1). Існує принаймні чотири різні питання, змішані разом в ОП. Я буду розглядати їх один за одним.


  • Q1. Скільки дисперсії даного ПК пояснюється заданою оригінальною змінною? Скільки дисперсії заданої оригінальної змінної пояснюється даним ПК?

r2riVisiLiLi=(si)1/2Vi. Його елементи - кореляції цього ПК з відповідними оригінальними змінними.

ViLi

Крім того, якщо PCA проводиться на коваріаціях (а не на кореляціях), то навантаження також дасть вам коваріації, а не кореляції. Для отримання кореляцій потрібно обчислити їх вручну, дотримуючись PCA. [Зараз прийнята відповідь щодо цього незрозуміла.]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

Як вибрати підмножину, що пояснює задану кількість дисперсії, запропонував @FrankHarrell (+1).


+1, це має бути прийнята відповідь.
позначено


6

Дані про арешти в США в комплекті з R - лише приклад, але зауважу, що розрахунки навантажень у питанні надходять із PCA коваріаційної матриці . Це десь між довільним і безглуздим, оскільки змінні вимірюються в різних масштабах.

Міське населення виглядає як відсоток. Каліфорнія - 91% і найвища.

Три змінні злочину представляються кількістю арештів за злочини, виражені відносно чисельності населення (імовірно, протягом певного періоду часу). Імовірно, це десь задокументовано, чи це арешти на 1000 чи 10000 чи що завгодно.

Середнє значення змінної нападу в даних одиницях становить приблизно 171, а середнє вбивство - приблизно 8. Отже, пояснення ваших навантажень полягає в тому, що значною мірою модель є артефактом: це залежить від дуже різної мінливості змінних.

Отже, хоча в даних є сенс у тому, що за напади існує набагато більше арештів, ніж за вбивства тощо, той відомий (або несподіваний) факт домінує в аналізі.

Це показує, що, як і будь-де в статистиці, ви повинні думати про те, що ви робите в PCA.

Якщо взяти це далі:

  1. Я б заперечив, що відсоток міських краще залишати поза аналізом. Не злочин бути міським; це, звичайно, може служити проксі для змінних, що впливають на злочинність.

  2. PCA на основі кореляційної матриці мав би більше сенсу на мій погляд. Інша можливість - це працювати з логарифмами рівня арешту, а не зі ставками арешту (усі значення позитивні; див. Нижче).

Примітка: У відповіді @ random_guy свідомо використовується матриця коваріації.

Ось деякі зведені статистичні дані. Я використовував Stata, але це зовсім несуттєво.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.