¿Qué variables explican qué componentes de PCA y viceversa?

14

Usando estos datos:

head(USArrests)
nrow(USArrests)

Puedo hacer un PCA de esta manera:

plot(USArrests)
otherPCA <- princomp(USArrests)

Puedo obtener los nuevos componentes en

otherPCA$scores

y la proporción de varianza explicada por componentes con

summary(otherPCA)

Pero, ¿qué sucede si quiero saber qué variables se explican principalmente por qué componentes principales? Y viceversa: ¿se explica principalmente por PC1 o PC2 murder? ¿Cómo puedo hacer esto?

¿Puedo decir, por ejemplo, que PC1 se explica en un 80% por murdero assault?

Creo que las cargas me ayudan aquí, pero muestran la direccionalidad, no la varianza explicada tal como la entiendo, por ejemplo

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   
usuario1320502
fuente
2
Tenga en cuenta que los signos de las cargas son arbitrarios. Las tres variables delictivas se correlacionan positivamente entre sí, pero sería inteligente trabajar eso a partir de los signos de las cargas anteriores.
Nick Cox
Desafortunadamente, creo que la respuesta aceptada a esta pregunta es incorrecta. Publiqué mi propia respuesta a continuación.
ameba dice Reinstate Monica

Respuestas:

10

Tienes razón, las cargas pueden ayudarte aquí. Se pueden usar para calcular la correlación entre las variables y los componentes principales. Además, la suma de las cargas al cuadrado de una variable sobre todos los componentes principales es igual a 1. Por lo tanto, las cargas al cuadrado le indican la proporción de varianza de una variable explicada por un componente principal.

El problema con princomp es que solo muestra las cargas "muy altas". Pero dado que las cargas son solo los vectores propios de la matriz de covarianza, uno puede obtener todas las cargas usando el eigencomando en R:

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

Ahora, tiene la información deseada en la matriz explvar.

chico al azar
fuente
gracias chico al azar, ¿podrías mostrarme, por ejemplo, assaulto urban poppodríamos hacer esto? parcialmente confundido porque solo hay una correlación presente en la matriz paraassault
user1320502
1
Lo siento, mejoré mi respuesta y no noté que ya comentaste mi publicación. cargas de asalto con -0.995 en PC1. Por lo tanto, uno puede concluir después de cuadrar este valor PC1 explica el 99% de la varianza del asalto variable. Después de cuadrar los valores del pop urbano, puede concluir que PC3 explica el 4% y PC2 el 95.5% de la varianza del pop urbano.
random_guy
1
¿OP no pregunta cuánto PCA puede atribuirse a una variable? Su respuesta es acerca de cuánto de una variable puede explicarse por un CPA
Heisenberg
2
w=(0.3,0.3,...0.3)1109.9w0.1
2
Lamento insistir, pero ¿crees que estoy equivocado en mi comentario anterior? De lo contrario, podría editar su respuesta para eliminar la posible confusión, esto sería muy útil para futuros lectores. Acabo de publicar una respuesta yo mismo, tratando de explicar estos problemas con más detalle.
ameba dice Reinstate Monica
9

Creo que la respuesta aceptada puede ser peligrosamente engañosa (-1). Hay al menos cuatro preguntas diferentes mezcladas en el OP. Los consideraré uno tras otro.


  • Q1. ¿Qué parte de la varianza de una PC dada se explica por una variable original dada? ¿Qué parte de la varianza de una variable original dada es explicada por una PC determinada?

r2riVisiLiLi=(si)1/2Vi. Sus elementos son correlaciones de esta PC con las respectivas variables originales.

ViLi

Además, si la PCA se realiza en covarianzas (y no en correlaciones), las cargas también le darán covarianzas, no correlaciones. Para obtener correlaciones, es necesario calcularlas manualmente, siguiendo PCA. [La respuesta actualmente aceptada no está clara al respecto].

  • 80%

r2R2

r2R2

  • 80%

¡PCA no responde automáticamente a esta pregunta! Por ejemplo, si todas las variables originales están fuertemente correlacionadas con paresr=0.9r=0.9r2R2=0.90.95>1R2

@FrankHarrell (+1) sugirió cómo seleccionar un subconjunto que explica la cantidad dada de varianza.

ameba dice reinstalar Monica
fuente
+1, esta debería ser la respuesta aceptada.
Gented
8

R2Y

Frank Harrell
fuente
6

Los datos de arrestos de EE. UU. Agrupados con R son solo un ejemplo aquí, pero observo que los cálculos de carga en la pregunta provienen de un PCA de la matriz de covarianza . Eso es algo entre arbitrario y sin sentido, ya que las variables se miden en diferentes escalas.

La población urbana parece un porcentaje. California es 91% y más alto.

Las tres variables delictivas parecen ser el número de arrestos por delitos expresados ​​en relación con el tamaño de la población (presumiblemente por algún período de tiempo). Presumiblemente está documentado en alguna parte, ya sea arrestos por 1000 o 10000 o lo que sea.

La media de la variable de asalto en las unidades dadas es de aproximadamente 171 y la media del asesinato es de aproximadamente 8. Entonces, la explicación de sus cargas es que en gran parte el patrón es un artefacto: depende de la variabilidad muy diferente de las variables.

Entonces, aunque tiene sentido en los datos que hay muchos más arrestos por asaltos que por asesinatos, etc., ese hecho conocido (o no sorprendente) domina el análisis.

Esto muestra que, como en cualquier otro lugar de las estadísticas, debe pensar en lo que está haciendo en un PCA.

Si lleva esto más lejos:

  1. Yo diría que es mejor dejar de lado el porcentaje urbano del análisis. No es un crimen ser urbano; Por supuesto, podría servir como proxy de variables que influyen en la delincuencia.

  2. Un PCA basado en una matriz de correlación tendría más sentido en mi opinión. Otra posibilidad es trabajar con logaritmos de tasas de arresto, no tasas de arresto (todos los valores son positivos; ver más abajo).

Nota: la respuesta de @ random_guy usa deliberadamente la matriz de covarianza.

Aquí hay algunas estadísticas resumidas. Usé Stata, pero eso es bastante irrelevante.

    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
Nick Cox
fuente