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 murder
o 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
r
pca
dimensionality-reduction
regression-strategies
usuario1320502
fuente
fuente
Respuestas:
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
eigen
comando en R:Ahora, tiene la información deseada en la matriz
explvar
.fuente
assault
ourban pop
podríamos hacer esto? parcialmente confundido porque solo hay una correlación presente en la matriz paraassault
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.
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].
¡PCA no responde automáticamente a esta pregunta! Por ejemplo, si todas las variables originales están fuertemente correlacionadas con paresr=0.9 r=0.9 r2 R2=0.9⋅0.9⋅5>1 R2
@FrankHarrell (+1) sugirió cómo seleccionar un subconjunto que explica la cantidad dada de varianza.
fuente
fuente
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:
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.
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.
fuente