Quais variáveis ​​explicam quais componentes do PCA e vice-versa?


14

Usando estes dados:

head(USArrests)
nrow(USArrests)

Eu posso fazer um PCA da seguinte maneira:

plot(USArrests)
otherPCA <- princomp(USArrests)

Eu posso obter os novos componentes em

otherPCA$scores

ea proporção de variância explicada pelos componentes com

summary(otherPCA)

Mas e se eu quiser saber quais variáveis ​​são explicadas principalmente por quais componentes principais? E vice-versa: por exemplo, PC1 ou PC2 é explicado principalmente por murder? Como posso fazer isso?

Posso dizer, por exemplo, que PC1 é 80% explicado por murderou assault?

Acho que as cargas me ajudam aqui, mas mostram a direcionalidade e não a variação explicada como eu a entendo, por exemplo

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
Observe que os sinais das cargas são arbitrários. As três variáveis ​​criminais estão todas correlacionadas positivamente umas com as outras, mas você seria inteligente em trabalhar isso a partir dos sinais das cargas acima.
Nick Cox

Infelizmente, acredito que a resposta aceita para esta pergunta está incorreta. Eu postei minha própria resposta abaixo.
Ameba diz Reinstate Monica

Respostas:


10

Você está certo, as cargas podem ajudá-lo aqui. Eles podem ser usados ​​para calcular a correlação entre as variáveis ​​e os principais componentes. Além disso, a soma das cargas quadradas de uma variável sobre todos os componentes principais é igual a 1. Portanto, as cargas quadradas informam a proporção de variação de uma variável explicada por um componente principal.

O problema com o princomp é que ele mostra apenas as cargas "muito altas". Mas como os carregamentos são apenas os autovetores da matriz de covariância, é possível obter todos os carregamentos usando o eigencomando em R:

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

Agora, você tem as informações desejadas na matriz explvar.


obrigado cara aleatório, você poderia me mostrar por exemplo assaultou urban poppoderíamos fazer isso? parcialmente confuso porque existe apenas uma correlação presente na matriz paraassault
user1320502

1
Desculpe, melhorei minha resposta e não percebi que você já comentou minha postagem. cargas de assalto com -0,995 no PC1. Assim, pode-se concluir após a quadratura desse valor PC1 explicar 99% da variação da variável assalto. Depois de quadrar os valores do pop urbano, você pode concluir que PC3 explica 4% e PC2 95,5% da variação do pop urbano.
random_guy

1
O OP não pergunta quanto do PCA pode ser atribuído a uma variável? Sua resposta é sobre o quanto de uma variável pode ser explicada por um CPA
Heisenberg

2
Voltando a esta pergunta, acho que esta resposta está errada. Considere 10 variáveis ​​altamente (99%) correlacionadas entre si e todas dimensionadas para variação de unidade. O primeiro PC será basicamente a média entre eles. Assim, o primeiro autovetor vai ser com comprimento 1 , eo primeiro valor próprio é quase 10 , dizem 9.9 . Agora, cada variável é quase totalmente explicada pelo primeiro PC. E o primeiro PC é quase totalmente explicado porcadavariável. Mas como você vai concluir um ou outro dos elementos quadrados dew=(0.3,0.3,...0.3)1109.9 quais são todos os 0,1 ? w0.1
ameba diz Restabelecer Monica

2
Desculpe insistir, mas você acha que estou errado no meu comentário acima? Caso contrário, você pode editar sua resposta para remover a confusão em potencial, isso seria muito útil para futuros leitores. Acabei de postar uma resposta, tentando explicar esses problemas com mais detalhes.
ameba diz Restabelecer Monica

9

Eu acho que a resposta aceita pode ser perigosamente enganosa (-1). Há pelo menos quatro perguntas diferentes misturadas no OP. Vou considerá-los um após o outro.


  • Q1 Quanto da variação de um determinado PC é explicada por uma determinada variável original? Quanto da variação de uma dada variável original é explicada por um determinado PC?

r2riVisiLiLi=(si)1/2Vi. Seus elementos são correlações deste PC com as respectivas variáveis ​​originais.

ViLi

Além disso, se o PCA for feito em covariâncias (e não em correlações), os carregamentos também fornecerão covariâncias, não correlações. Para obter correlações, é necessário calculá-las manualmente, seguindo o PCA. [A resposta atualmente aceita não é clara sobre isso.]

  • 80%

Como os PCs são ortogonais (isto é, não correlacionados), pode-se simplesmente somar individuaisr2R2

r2R2

  • 80%

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

Como selecionar um subconjunto explicando determinada quantidade de variação, foi sugerido por @FrankHarrell (+1).


+1, essa deve ser a resposta aceita.
gented 28/02/19


6

Os dados de detenções nos EUA empacotados com R são apenas um exemplo aqui, mas observo que os cálculos de carregamento na pergunta vêm de um PCA do matriz de covariância . Isso é algo entre arbitrário e sem sentido, pois as variáveis ​​são medidas em diferentes escalas.

A população urbana parece um percentual. A Califórnia é 91% e mais alta.

As três variáveis ​​criminais parecem ser o número de detenções por crimes expressos em relação ao tamanho da população (presumivelmente por algum período). Presumivelmente, está documentado em algum lugar, sejam prisões por 1.000 ou 10000 ou o que for.

A média da variável de assalto nas unidades fornecidas é de cerca de 171 e o assassinato médio é de 8. Portanto, a explicação de suas cargas é que, em grande parte, o padrão é um artefato: depende da variabilidade muito diferente das variáveis.

Portanto, embora haja sentido nos dados de que há muito mais detenções por agressões do que por assassinatos etc., esse fato conhecido (ou não surpreendente) domina a análise.

Isso mostra que, como em qualquer outro lugar nas estatísticas, você precisa pensar no que está fazendo em um PCA.

Se você levar isso adiante:

  1. Eu diria que a porcentagem urbana é melhor deixada de fora da análise. Não é crime ser urbano; é claro que pode servir como proxy para variáveis ​​que influenciam o crime.

  2. Um PCA baseado em uma matriz de correlação faria mais sentido na minha opinião. Outra possibilidade é trabalhar com logaritmos de taxas de parada, e não taxas de parada (todos os valores são positivos; veja abaixo).

Nota: a resposta de @ random_guy usa deliberadamente a matriz de covariância.

Aqui estão algumas estatísticas resumidas. Eu usei Stata, mas isso é imaterial.

    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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.