1. Análisis de matrices aleatorias simuladas:

Generación de las matrices:

xu <- matrix( runif( 57*6 ), ncol = 6 ) # Uniforme
xn <- matrix( rnorm( 57*6 ), ncol = 6 ) # Normal

Visualización de los datos mediante histogramas para comprobar que siguen las distribuciones propuestas:

hist(xu)

hist(xn)

Empleo de la función PCA para analizar ambas matrices:

library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 3.3.3
pca_xu <- PCA(xu)

pca_xn <- PCA(xn)

c(pca_xu$eig[c(1,2),2], pca_xn$eig[c(1,2),2])
## [1] 23.07361 19.84746 23.91726 19.97852
  1. ¿Cuánta varianza esperas que explique cada eje?

En el caso de la distribución uniforme, espero la varianza se reparta de forma casi equitativa entre las 6 dimensiones existentes. Dado que las dos primeras componentes (representadas en los ejes x e y) explican siempre más varianza que las siguientes espero que la varianza de cada eje sea ligeramente superior al 17%.

  1. ¿Cuánto explican en tu simulación?

Un 25.8% y un 18.9% en el caso de los datos generados siguiendo una distribución uniforme, y un 22.1% y 20.2% en el caso de los datos generados siguiendo una distribución normal (en una de ellas, cada vez que ejecuto o genero un nuevo fichero .html a partir del .Rmd varía, obviamente).

  1. ¿Cuánto varían en las distintas simulaciones realizadas?
simulations <- matrix(ncol=4, nrow = 20)
colnames(simulations) <- c("Dim1 xu", "Dim2 xu ", "Dim1 xn", "Dim2 xn")

for(n in 1:20){
  xu <- matrix( runif( 57*6 ), ncol = 6 )
  xn <- matrix( rnorm( 57*6 ), ncol = 6 )
  pca_xu <- PCA(xu, graph = F)
  pca_xn <- PCA(xn, graph = F)
  simulations[n, ] <- c(pca_xu$eig[c(1,2),2], pca_xn$eig[c(1,2),2])
}

summary(simulations)
##     Dim1 xu         Dim2 xu         Dim1 xn         Dim2 xn     
##  Min.   :21.23   Min.   :18.79   Min.   :21.51   Min.   :18.37  
##  1st Qu.:22.50   1st Qu.:20.00   1st Qu.:23.78   1st Qu.:19.96  
##  Median :23.70   Median :20.45   Median :24.93   Median :20.54  
##  Mean   :24.12   Mean   :20.41   Mean   :24.87   Mean   :20.56  
##  3rd Qu.:25.55   3rd Qu.:20.88   3rd Qu.:26.35   3rd Qu.:21.07  
##  Max.   :28.06   Max.   :21.86   Max.   :27.79   Max.   :23.11

La tabla resumen incluye la información relativa a la varianza explicada por cada una de las dos dimensiones (Dim1 y Dim2) en los PCAs aplicados a conjuntos de datos con una distribución normal (xn) o uniforme (xu) generados en 20 simulaciones diferentes.

Dim1 está en torno a 24 y Dim2 en torno a 20. Dim1 oscila entre el 28,7% y el 19.8%, mientras que Dim2 oscila entre el 23% y el 17.7%.

  1. ¿Cabría esperar unos resultados muy diferentes al considerar distintas distribuciones en las variables?

No parece, el algoritmo de análisis de componentes principales es muy robusto y las cada componente explica un porcentaje de la variable muy similar aunque se use una distribución diferente.

  1. ¿Son muy distintos los resultados para las matrices simuladas con variables uniformes y las que se simulan con variables normales ?

Como puede observarse, no hay una diferencia grande en las varianzas explicadas por ambas dimensiones sigan los datos una distribución uniforme o una distribución normal.

2. Análisis de la matriz http://gauss.inf.um.es/datos/mundodes.dat que contiene datos demográficoeconómicos de 91 países de todo el mundo.

  1. Utiliza la función read.table para cargar los datos.
df <- read.table("http://gauss.inf.um.es/datos/mundodes.dat", sep = " ", dec = ".", header = T)
head(df)
##   TN1000 TM1000 MortInfan EspHom EspMuj PNBpCapita
## 1   24.7    5.7      30.8   69.6   75.5        600
## 2   12.5   11.9      14.4   68.3   74.7       2250
## 3   13.4   11.7      11.3   71.8   77.7       2980
## 4   11.6   13.4      14.8   65.4   73.8       2780
## 5   14.3   10.2      16.0   67.2   75.7       1690
## 6   13.6   10.7      26.9   66.5   72.4       1640
  1. Realiza un PCA con todas las variables. Utiliza preferiblemente el paquete FactomineR
pca_df <- PCA(df)

  1. ¿Que porcentaje de la varianza acumula la primera componente?

Un 78.80%

  1. ¿Cuántas dimensiones crees que serían necesarias para explicar razonablemente bien nuestros datos?
pca_df$eig
##        eigenvalue percentage of variance cumulative percentage of variance
## comp 1 4.72777908             78.7963180                          78.79632
## comp 2 0.72609661             12.1016101                          90.89793
## comp 3 0.36095040              6.0158401                          96.91377
## comp 4 0.11730278              1.9550464                          98.86881
## comp 5 0.05404608              0.9007680                          99.76958
## comp 6 0.01382505              0.2304174                         100.00000

Con una dimensión ya se explica en 78.80% de la varianza, por lo que pueda explicar razonablemente bien los datos. Si se quiere más resolución se pueden usar hasta 3, pero intentar interpretarlo con más de tres dimensiones parece innecesario.

  1. Indica cuál es la variable que más contribuye a la primera componente.
pca_df$var$contrib
##               Dim.1      Dim.2       Dim.3      Dim.4      Dim.5
## TN1000     17.33296  3.8220714 26.35018334 46.6081523  5.4365186
## TM1000     11.65406 46.2692307 27.49758748  9.4351010  5.0494719
## MortInfan  19.35324  0.2696861  4.94867380 39.9654582 33.3606115
## EspHom     20.42687  0.7282982  0.08274044  1.2963121 40.8876499
## EspMuj     20.59995  0.1172287  1.69969008  2.5403662 14.2684003
## PNBpCapita 10.63292 48.7934849 39.42112486  0.1546101  0.9973478

EspMuj (esperanza de vida para las mujeres) es la variable que más contribuye a la primera componente (20.59995% de la Dim 1). Aunque otras variables influyen en un nivel muy similar.

  1. ¿Qué variable contribuye, justificadamente, más a la primera componente TN1000 o PNBpCapita?

Claramente TN1000 contribuye más a la primera componente (17.33296%) que PNBpCapita (10.63292%). Sin embargo, puede observarse, que mientras que la correlación de TN1000 con la primera componente es negativa, la de PNBpCapita es positiva.

  1. Representa gráficamente los resultados.
PCA(df)

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 91 individuals, described by 6 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
  1. Interpretación de los resultados:

El primer eje podría medir el grado de desarrollo de un país. La relación con la esperanza de vida y el PIB per cápita sería directa, es decir, indicarían un mayor desarrollo, mientras que la relación con las tasas de natalidad y mortalidad (incluyendo la infantil) sería inversa (a mayor desarrollo menor natalidad y mortalidad).

Los países menos desarrollados. Como sabemos, un país del tercer mundo (con un PIB per cápita pequeño) generalmente posee esperanzas de vida bajas y tasa de mortalidad infantil elevada debido a condiciones de higiene y sanidad malas, esto está directamente relacionado con una tasa de mortalidad general mayor. Como consecuencia, es necesario que la tasa de natalidad sea elevada para que la población crezca o se mantenga.

Los países más ricos, con bajas tasas de mortalidad y natalidad pero una población envejecida.

plot.PCA( pca_df, choix = "ind" )

#Si España es el punto 34 para hallar sus coordenadas exactas:
x <- pca_df$ind$coord[34,1]
y <- pca_df$ind$coord[34,2]

points(x, y, pch = 20, cex = 2, col = "blue")

El resultado concuerda completamente con la interpretación: España es un país desarrollado y por tanto se encuentra en el cuadrante superior derecho.