Какие переменные объясняют, какие компоненты PCA, и наоборот?

14

Используя эти данные:

head(USArrests)
nrow(USArrests)

Я могу сделать PCA следующим образом:

plot(USArrests)
otherPCA <- princomp(USArrests)

Я могу получить новые компоненты в

otherPCA$scores

и доля дисперсии объясняется компонентами с

summary(otherPCA)

Но что, если я хочу знать, какие переменные в основном объясняются какими основными компонентами? И наоборот: например, ПК1 или ПК2 в основном объясняются 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   
user1320502
источник
2
Обратите внимание, что знаки нагрузок являются произвольными. Все три криминальные переменные положительно коррелируют друг с другом, но вы бы сообразили, что по этим признакам вышеупомянутых нагрузок.
Ник Кокс
К сожалению, я считаю, что принятый ответ на этот вопрос неверен. Я отправил свой собственный ответ ниже.
амеба говорит восстановить Монику

Ответы:

10

Вы правы, нагрузки могут помочь вам здесь. Они могут использоваться для вычисления корреляции между переменными и основными компонентами. Более того, сумма квадратов нагрузок одной переменной по всем основным компонентам равна 1. Следовательно, квадрат нагрузок сообщает вам долю дисперсии одной переменной, объясненную одним главным компонентом.

Проблема с princomp в том, что он показывает только «очень высокие» нагрузки. Но поскольку нагрузки являются только собственными векторами ковариационной матрицы, все нагрузки можно получить с помощью eigenкоманды в R:

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

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

случайный парень
источник
спасибо случайный парень, не могли бы вы показать мне, например, assaultили urban popмы могли бы сделать это? Частично запутано, потому что в матрице присутствует только одна корреляция дляassault
user1320502
1
Извините, я улучшил свой ответ и не заметил, что вы уже прокомментировали мой пост. Штурмовая нагрузка с -0,995 на ПК1. Таким образом, можно сделать вывод, что после возведения в квадрат этого значения PC1 объясняет 99% дисперсии переменной атаки. После возведения в квадрат значений городского населения можно сделать вывод, что ПК3 объясняет 4%, а ПК2 - 95,5% дисперсии городского населения.
random_guy
1
OP не спрашивает о том, сколько PCA можно отнести к переменной? Ваш ответ о том, какая часть переменной может быть объяснена CPA
Гейзенберг
2
Возвращаясь к этому вопросу, я думаю, что этот ответ неправильный. Рассмотрим 10 переменных, которые сильно (99%) коррелируют между собой и масштабируются до единичной дисперсии. Первый ПК в основном будет средним между ними. Таким образом, первый собственный вектор будет с длиной 1 , и первыми собственным почти 10 , скажем , 9.9 . Теперь каждая переменная почти полностью объясняется первым ПК. И первый ПК почти полностью объясняется каждымw=(0.3,0.3,...0.3)1109.9 переменной. Но как вы собираетесь сделать вывод о том или ином из квадратов элементов которые все 0,1 ? w0.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, это должен быть принятый ответ.
gented
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
Ник Кокс
источник