Análisis de Componentes Principales (con SPSS)
El objetivo del Análisis de Componentes Principales es identificar a partir de un conjunto de p variables,
otro conjunto de k (k<p) variables no directamente observables, denominadas factores, tal que:
- k sea un número pequeño
- se pierda la menor cantidad posible de información
- la solución obtenida sea interpretable.
Pasos en el Análisis de Componentes Principales:
- Evaluación de lo apropiado de realizar el análisis.
- Extracción de los factores.
- Cálculo de las puntuaciones factoriales para cada caso.
Se obtienen las medias y desviaciones estándar de cada variable:
Estadísticos descriptivos
Media Desviación típica N del análisis
Temp 55,7634 7,22772 41
Emp 463,0976 563,47395 41
Pob 608,6098 579,11302 41
Viento 9,4439 1,42864 41
Precip 36,7690 11,77155 41
Dias 113,9024 26,50642 41
Se calcula la matriz de correlaciones con la significación de cada componente:
Matriz de correlaciones(a)
Temp Emp Pob Viento Precip Dias
Temp 1,000 -,190 -,063 -,350 ,386 -,430
Emp -,190 1,000 ,955 ,238 -,032 ,132
Pob -,063 ,955 1,000 ,213 -,026 ,042
Correlación
Viento -,350 ,238 ,213 1,000 -,013 ,164
Precip ,386 -,032 -,026 -,013 1,000 ,496
Dias -,430 ,132 ,042 ,164 ,496 1,000
Temp ,117 ,349 ,012 ,006 ,002
Emp ,117 ,000 ,067 ,420 ,206
Pob ,349 ,000 ,091 ,436 ,397
Sig. (Unilateral)
Viento ,012 ,067 ,091 ,468 ,153
Precip ,006 ,420 ,436 ,468 ,000
Dias ,002 ,206 ,397 ,153 ,000
a Determinante = ,014
Para que se pueda realizar el PCA, es necesario que las variables presenten factores comunes. Es decir,
que estén muy correlacionadas entre sí. Los coeficientes de la matriz de correlaciones deben ser grandes
en valor absoluto.
Test de esfericidad de Barlett:
Para comprobar que las correlaciones entre las variables son distintas de cero de modo significativo, se
comprueba si el determinante de la matriz es distinto de uno, es decir, si la matriz de correlaciones es
distinta de la matriz identidad.
Si las variables están correlacionadas hay muchos valores altos en valor absoluto fuera de la diagonal
principal de la matriz de correlaciones, además, el determinante es menor que 1 (el máximo valor del
determinante es 1 si las variables están incorrelacionadas).
El test de Barlett realiza el contraste:
H0: |R| = 1
H1: |R| 1
El determinante de la matriz da una idea de la correlación generalizada entre todas las variables.
Se basa el test en la distribución chi cuadrado donde valores altos llevan a rechazar H0, así, la prueba de
esfericidad de Bartlett contrasta si la matriz de correlaciones es una matriz identidad, que indicaría que el
modelo factorial es inadecuado. Por otro lado, la medida de la adecuación muestral de Kaiser-Meyer-
Olkin contrasta si las correlaciones parciales entre las variables son pequeñas:
KMO y prueba de Bartlett
Medida de adecuación muestral de Kaiser-Meyer-Olkin. ,365
Chi-cuadrado aproximado 159,231
Prueba de esfericidad de Bartlett Gl 15
Sig. ,000
La comunalidad asociada a la variable j-ésima es la proporción de variabilidad de dicha variable
explicada por los k factores considerados
Equivale a la suma de la fila j-ésima de la matriz factorial. Sería igual a 0 si los factores comunes no
explicaran nada la variabilidad de una variable, y sería igual a 1 si quedase totalmente explicada.
Comunalidades
Inicial Extracción
Temp 1,000 ,892
Emp 1,000 ,968
Pob 1,000 ,979
Viento 1,000 ,424
Precip 1,000 ,941
Dias 1,000 ,888
Método de extracción: Análisis de Componentes principales.
Varianza total explicada
Sumas de las saturaciones al cuadrado de la
Autovalores iniciales
extracción
Componente
% de la %
Total Total % de la varianza % acumulado
varianza acumulado
1 2,196 36,603 36,603 2,196 36,603 36,603
2 1,500 24,999 61,602 1,500 24,999 61,602
3 1,395 23,244 84,846 1,395 23,244 84,846
4 ,760 12,670 97,516
5 ,115 1,910 99,426
6 ,034 ,574 100,000
Método de extracción: Análisis de Componentes principales.
Gráfico de la varianza asociada a cada factor. Se utiliza para determinar cuántos factores deben retenerse.
Típicamente el gráfico muestra la clara ruptura entre la pronunciada pendiente de los factores más
importantes y el descenso gradual de los restantes (los sedimentos).
Otra opción es usar el criterio de Kaiser: consiste en conservar aquellos factores cuyo autovalor asociado
sea mayor que 1.
Saturaciones factoriales:
Matriz de componentes(a)
Componente
1 2 3
Temp -,489 -,156 ,793
Emp ,906 -,206 ,322
Pob ,856 -,272 ,414
Viento ,524 ,160 -,351
Precip -,060 ,763 ,596
Dias ,353 ,867 -,110
Método de extracción: Análisis de componentes principales.
a 3 componentes extraídos
Matriz de correlaciones estimada a partir de la solución factorial. También se muestran las correlaciones
residuales (la diferencia entre la correlación observada y la reproducida).
Correlaciones reproducidas
Temp Emp Pob Viento Precip Dias
Temp ,892(b) -,155 -,048 -,560 ,383 -,395
Emp -,155 ,968(b) ,965 ,329 -,020 ,106
Pob -,048 ,965 ,979(b) ,260 -,013 ,020
Correlación reproducida
Viento -,560 ,329 ,260 ,424(b) -,119 ,362
Precip ,383 -,020 -,013 -,119 ,941(b) ,574
Dias -,395 ,106 ,020 ,362 ,574 ,888(b)
Temp -,035 -,015 ,210 ,003 -,035
Emp -,035 -,010 -,091 -,013 ,026
Pob -,015 -,010 -,047 -,013 ,022
Residual(a)
Viento ,210 -,091 -,047 ,106 -,198
Precip ,003 -,013 -,013 ,106 -,078
Dias -,035 ,026 ,022 -,198 -,078
Método de extracción: Análisis de Componentes principales.
a Los residuos se calculan entre las correlaciones observadas y reproducidas. Hay 5 (33,0%) residuales no
redundantes con valores absolutos mayores que 0,05.
b Comunalidades reproducidas
Representación tridimensional de las saturaciones factoriales para los tres primeros factores.
El cálculo de las puntuaciones factoriales consiste en pasar de la matriz original con las variables x1, ..., xp
a la de los valores según los k factores
Estas puntuaciones factoriales se pueden guardar y utilizar en análisis posteriores como técnicas de
regresión múltiple o en análisis de cluster.
Regresión de la variable SO2 frente a los tres factores
Resumen del modelo
Modelo R R cuadrado R cuadrado corregida Error típ. de la estimación
1 ,647(a) ,418 ,371 18,61510
a Variables predictoras: (Constante), REGR factor score 3 for analysis 1, REGR factor score 2 for analysis 1,
REGR factor score 1 for analysis 1
ANOVA(b)
Modelo Suma de cuadrados gl Media cuadrática F Sig.
Regresión 9216,590 3 3072,197 8,866 ,000(a)
1 Residual 12821,313 37 346,522
Total 22037,902 40
a Variables predictoras: (Constante), REGR factor score 3 for analysis 1, REGR factor score 2 for analysis 1,
REGR factor score 1 for analysis 1
b Variable dependiente: SO2
Coeficientes(a)
Coeficientes no Coeficientes
estandarizados estandarizados
Modelo Beta t Sig.
B Error típ.
(Constante) 30,049 2,907 10,336 ,000
REGR factor score 1 for
14,917 2,943 ,635 5,068 ,000
analysis 1
1 REGR factor score 2 for
2,777 2,943 ,118 ,943 ,352
analysis 1
REGR factor score 3 for
,448 2,943 ,019 ,152 ,880
analysis 1
a Variable dependiente: SO2
Análisis con dos factores
Matriz de componentes(a)
Componente
1 2
Temp -,489 -,156
Emp ,906 -,206
Pob ,856 -,272
Viento ,524 ,160
Precip -,060 ,763
Dias ,353 ,867
Método de extracción: Análisis de componentes principales.
a 2 componentes extraídos
Comunalidades
Extracción
Temp ,263
Emp ,864
Pob ,807
Viento ,301
Precip ,586
Dias ,876
Método de extracción: Análisis de Componentes principales.
Varianza total explicada
Sumas de las saturaciones al cuadrado de la extracción
Componente
Total % de la varianza % acumulado
1 2,196 36,603 36,603
2 1,500 24,999 61,602
Método de extracción: Análisis de Componentes principales.
Correlaciones reproducidas
Temp Emp Pob Viento Precip Dias
Temp ,263(b) -,411 -,376 -,281 -,090 -,308
Emp -,411 ,864(b) ,832 ,442 -,212 ,141
Pob -,376 ,832 ,807(b) ,405 -,260 ,066
Correlación reproducida
Viento -,281 ,442 ,405 ,301(b) ,090 ,324
Precip -,090 -,212 -,260 ,090 ,586(b) ,640
Dias -,308 ,141 ,066 ,324 ,640 ,876(b)
Temp ,221 ,313 -,069 ,476 -,123
Emp ,221 ,123 -,204 ,179 -,009
Pob ,313 ,123 -,193 ,233 -,024
Residual(a)
Viento -,069 -,204 -,193 -,103 -,160
Precip ,476 ,179 ,233 -,103 -,144
Dias -,123 -,009 -,024 -,160 -,144
Método de extracción: Análisis de Componentes principales.
a Los residuos se calculan entre las correlaciones observadas y reproducidas. Hay 13 (86,0%) residuales no
redundantes con valores absolutos mayores que 0,05.
b Comunalidades reproducidas
Análisis de Componentes Principales (con R)
# Leo los datos
aire.dat <- read.table("c:\\... \\datPCA.txt",header=T)
attach(aire.dat)
dimnames(aire.dat)[[1]] <- c("Phoenix", "Little Rock", "San Francisco",
"Denver", "Hartford", "Wilmington", "Washington", "Jacksonville", "Miami",
"Atlanta", "Chicago", "Indianapolis", "Des Moines", "Wichita", "Louisville",
"New Orleans", "Baltimore", "Detroit", "Minneapolis-St. Paul", "Kansas City",
"St. Louis", "Omaha", "Alburquerque", "Albany", "Buffalo", "Cincinnati",
"Cleveland", "Columbus", "Philadelphia", "Pittsburgh", "Providence",
"Memphis", "Nashville", "Dallas", "Houston", "Salt Lake City", "Norfolk",
"Richmond", "Seattle", "Charleston", "Milwaukee")
# Hago un análisis descriptivo
summary(aire.dat)
SO2 Neg.Temp Empresas Poblacion
Min. : 8.00 Min. :-75.50 Min. : 35.0 Min. : 71.0
1st Qu.: 13.00 1st Qu.:-59.30 1st Qu.: 181.0 1st Qu.: 299.0
Median : 26.00 Median :-54.60 Median : 347.0 Median : 515.0
Mean : 30.05 Mean :-55.76 Mean : 463.1 Mean : 608.6
3rd Qu.: 35.00 3rd Qu.:-50.60 3rd Qu.: 462.0 3rd Qu.: 717.0
Max. :110.00 Max. :-43.50 Max. :3344.0 Max. :3369.0
Viento Precip Dias
Min. : 6.000 Min. : 7.05 Min. : 36.0
1st Qu.: 8.700 1st Qu.:30.96 1st Qu.:103.0
Median : 9.300 Median :38.74 Median :115.0
Mean : 9.444 Mean :36.77 Mean :113.9
3rd Qu.:10.600 3rd Qu.:43.11 3rd Qu.:128.0
Max. :12.700 Max. :59.80 Max. :166.0
library(TeachingDemos)
faces(aire.dat)
faces2(aire.dat,nrows=7)
panel.hist <- function(x, ...)
{
usr <- par("usr"); on.exit(par(usr))
par(usr = c(usr[1:2], 0, 1.5) )
h <- hist(x, plot = FALSE)
breaks <- h$breaks; nB <- length(breaks)
y <- h$counts; y <- y/max(y)
rect(breaks[-nB], 0, breaks[-1], y, col="blue", ...)
}
pairs(aire.dat,diag.panel=panel.hist)
# Calculo la matriz de correlaciones
cor(aire.dat[,-1])
Temp Emp Pob Viento Precip Dias
Temp 1.00000000 -0.19004216 -0.06267813 -0.34973963 0.38625342 -0.43024212
Emp -0.19004216 1.00000000 0.95526935 0.23794683 -0.03241688 0.13182930
Pob -0.06267813 0.95526935 1.00000000 0.21264375 -0.02611873 0.04208319
Viento -0.34973963 0.23794683 0.21264375 1.00000000 -0.01299438 0.16410559
Precip 0.38625342 -0.03241688 -0.02611873 -0.01299438 1.00000000 0.49609671
Dias -0.43024212 0.13182930 0.04208319 0.16410559 0.49609671 1.00000000
# Calculo los componentes principales basados en la matriz de correlaciones
aire.pc<-princomp(aire.dat[,-1],cor=TRUE)
summary(aire.pc,loadings=TRUE)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
Standard deviation 1.4819456 1.2247218 1.1809526 0.8719099 0.33848287
Proportion of Variance 0.3660271 0.2499906 0.2324415 0.1267045 0.01909511
Cumulative Proportion 0.3660271 0.6160177 0.8484592 0.9751637 0.99425879
Comp.6
Standard deviation 0.185599752
Proportion of Variance 0.005741211
Cumulative Proportion 1.000000000
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6
Temp 0.330 -0.128 0.672 -0.306 -0.558 -0.136
Emp -0.612 -0.168 0.273 0.137 0.102 -0.703
Pob -0.578 -0.222 0.350 0.695
Viento -0.354 0.131 -0.297 -0.869 -0.113
Precip 0.623 0.505 -0.171 0.568
Dias -0.238 0.708 0.311 -0.580
# Es lo mismo que calcular los autovalores y autovectores de S
S = cor(aire.dat[,-1])
eigen(S)
$values
[1] 2.19616264 1.49994343 1.39464912 0.76022689 0.11457065 0.03444727
$vectors
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0.32964613 -0.1275974 0.67168611 -0.30645728 0.55805638 -0.13618780
[2,] -0.61154243 -0.1680577 0.27288633 0.13684076 -0.10204211 -0.70297051
[3,] -0.57782195 -0.2224533 0.35037413 0.07248126 0.07806551 0.69464131
[4,] -0.35383877 0.1307915 -0.29725334 -0.86942583 0.11326688 -0.02452501
[5,] 0.04080701 0.6228578 0.50456294 -0.17114826 -0.56818342 0.06062222
[6,] -0.23791593 0.7077653 -0.09308852 0.31130693 0.58000387 -0.02196062
# Las puntuaciones se obtienen mediante la orden
aire.pc$scores[,1:3]
par(pty="s")
plot(aire.pc$scores[,1],aire.pc$scores[,2],
ylim=range(aire.pc$scores[,1]),
xlab="PC1",ylab="PC2",type="n",lwd=2)
text(aire.pc$scores[,1],aire.pc$scores[,2],
labels=abbreviate(row.names(aire.dat)),cex=0.7,lwd=2)
par(pty="s")
plot(aire.pc$scores[,1],aire.pc$scores[,3],
ylim=range(aire.pc$scores[,1]),
xlab="PC1",ylab="PC3",type="n",lwd=2)
text(aire.pc$scores[,1],aire.pc$scores[,3],
labels=abbreviate(row.names(aire.dat)),cex=0.7,lwd=2)
par(pty="s")
plot(aire.pc$scores[,2],aire.pc$scores[,3],
ylim=range(aire.pc$scores[,2]),
xlab="PC2",ylab="PC3",type="n",lwd=2)
text(aire.pc$scores[,2],aire.pc$scores[,3],
labels=abbreviate(row.names(aire.dat)),cex=0.7,lwd=2)
par(mfrow=c(1,3))
plot(aire.pc$scores[,1],SO2,xlab="PC1")
plot(aire.pc$scores[,2],SO2,xlab="PC2")
plot(aire.pc$scores[,3],SO2,xlab="PC3")
summary(lm(SO2~aire.pc$scores[,1]+aire.pc$scores[,2]+
aire.pc$scores[,3]))
Call:
lm(formula = SO2 ~ aire.pc$scores[, 1] + aire.pc$scores[, 2] +
aire.pc$scores[, 3])
Residuals:
Min 1Q Median 3Q Max
-36.420 -10.981 -3.184 12.087 61.273
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.049 2.907 10.336 1.85e-12 ***
aire.pc$scores[, 1] -9.942 1.962 -5.068 1.14e-05 ***
aire.pc$scores[, 2] 2.240 2.374 0.943 0.352
aire.pc$scores[, 3] 0.375 2.462 0.152 0.880
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 18.62 on 37 degrees of freedom
Multiple R-Squared: 0.4182, Adjusted R-squared: 0.371
F-statistic: 8.866 on 3 and 37 DF, p-value: 0.0001473
plot(aire.pc$scores[,1],SO2,xlab="PC1",ylab="SO2")
Análisis de Componentes Principales (con SAS)