Pensando en multivariante: primeros pasos

Introducción al análisis multivariante

Reflexiones previas

Antes de sumergirnos en el análisis multivariante con R y ver algunas de las técnicas más habituales, su fundamento e implementación, sería conveniente hacernos algunas preguntas para situarnos y sacar el máximo partido posible a nuestro trabajo.

Lo deseable sería hacernos estas preguntas antes de recopilar los datos e incluso antes de diseñar el experimento. Saber qué estamos buscando y dónde queremos llegar, es fundamental para entender qué tipo de datos recopilar y qué tipo de técnica estadística emplear.

¿Dónde estamos?

Si por desgracia ya tenemos los datos antes de habernos hecho estas preguntas, tenemos que ver en qué punto estamos. Es decir, de qué clase de información disponemos. ¿Son los datos cuantitativos, cualitativos, mixtos?, ¿son medidas directas o nos servirán para inferir algo de naturales más abstracta?. Estas preguntas nos van a permitir saber de dónde partimos y la técnica o técnicas estadísticas que podremos aplicar.

¿Dónde vamos?

Qué queremos obtener de los datos. Queremos una simple descripción de las variables, queremos estudiar las relaciones entre las distintas variables o bien las utilizaremos como predictores elaborando con ellas modelos predictivos más complejos. Igual que en el caso anterior, esto determinará el tipo o tipos de análisis que realizaremos con nuestros datos.

¿Cómo llegaremos?

Esta pregunta esta condicionada por el tipo de datos de que disponemos y nuestro objetivo, por ello es la última pregunta que deberíamos hacernos y que nos servirá definitivamente para tomar conciencia del análisis a realizar.

Introducción

¿Qué podemos hacer cuando tenemos un conjunto de observaciones de las que hemos tomado una serie de medidas?.

  • Podríamos ver si existe correlación entre las variables que nos permita, de alguna manera, agruparlas.
  • Probar distintos modelos que expliquen su comportamiento.
  • Encargarle a alguien que lo hago por nosotros
  • O quizá lo más lógico, intentar hacer los datos más manejables seleccionando menos variables.

Esto último nos llevaría a la siguiente pregunta: ¿qué variables?

Para esto están (entre otras cosas) las técnicas multivariantes. Un grupo de técnicas estadísticas principal aunque no exclusivamente descriptivas cuya misión es reducir las dimensiones de nuestros datos con la menor perdida de información posible, facilitando su representación gráfica e interpretación.

La matriz de datos

\[X = \begin{bmatrix} x_{11} & x_{12} & ... & x_{1p}\\ x_{21} & ... & ... & x_{22}&\\ ... & ... & ... & ...&\\ x_{n1} & x_{n2} &... & x_{np}& \end{bmatrix}\]

Donde la variable \(V_1\)

\[V._1 = [ x_{11}, x_{21}, ..., x_{n1} ]\]

y la observación \(w_1.\)

\[w_1. = [ x_{11}, x_{12}, ..., x_{1p} ]\]

Ejemplo con datos reales

osos <- read.table( "http://www.stat.sc.edu/~habing/courses/data/bears.txt", head = T )
( df <- head( osos[  , c( 1, 3:6 ) ], 6 ) )
  Age Head.L Head.W Neck.G Length
1  70   15.0    6.5     28   78.0
2   8   10.0    4.5     10   43.5
3  19   10.0    5.0     15   45.0
4  45   13.0    6.5     21   60.0
5  19   11.0    6.5     20   47.5
6  21   14.5    5.5     20   61.0

El concepto de distancia

En la escuela de filosofía de Atenas, en la antigua Grecia rezaba la inscripción:

Ἀγεωμέτρητος   μηδείς   εἰσίτω

Que vendría a traducirse como: Aquí no entra nadie que no sepa geometría

Lo que refleja la importancia que le daban en la Grecia clásica a las mátemáticas. Y en definitiva las técnicas multivariantes son una cuestión de geometría, concretamente de distancias entre variables y entre individuos. Aunque aquí el concepto de distancia no sólo se podría referir a la distancia euclídea que todos tenemos en mente

Existen otras muchas medidas de distancias basadas en criterios más geométricos o en criterios más relacionados con la similaridad o disimilaridad entre individuos

Distancias. Otras distancias y disimilaridades

  • Distancia euclídea entre dos puntos

    \[d_{E}(i,j) = \sqrt{ (x_i - x_j)^2 + (y_i - y_j)^2 }\]

  • Distancia de Manhattan

    \[d_{M}(i,j) = \sum_{k=1}^{n}{\left | i_k-j_k \right |}\]

  • Distancia de Mahalanobis

    \[d_{m}(i,j) = \sqrt{ (i - j)^{T}\sum{}^-1(i - j) }\]

Medidas de disimilaridades

  • Covarianza

    \[\mathrm{cov}(x,y) = \frac{\sum_{i=1}^{n} (x_i - \bar{x}) (y_i - \bar{y})}{n}\]

  • Correlación

    \[r_{xy} = \frac{\mathrm{cov}(x,y)}{s_x ~ s_y}\]

  • Correlación convertido a distancia

    \[\mathrm{dist}(x,y) = 1 - \frac{r_{xy} + 1}{2}\]

  • Índice de Jaccard

    \[I_J = \frac{a}{a+b+c}\]

La matriz de covarianzas

Como hemos visto, la covarianza puede ser una medida de similaridad o disimiliaridad entre variables o individuos. Podemos calcular la matriz de varianzas - covarianzas en R de la siguiente manera:

round( var( osos[ , c( 4:8 ) ] ), 2 )
        Head.W Neck.G  Length Chest.G   Weight
Head.W    2.10   6.34   10.49    9.86   125.60
Neck.G    6.34  29.94   50.01   46.11   582.97
Length   10.49  50.01  112.75   86.57  1063.51
Chest.G   9.86  46.11   86.57   84.01  1011.26
Weight  125.60 582.97 1063.51 1011.26 13077.67
( paste( "Varianza total: ", sum( diag( var(osos[,c(4:8) ] ) ) ) ) )
[1] "Varianza total:  13306.4762662338"

La diagonal de la matriz representa la varianza de cada variable, y la suma de la diagonal sería la varianza total contenida en la tabla. Fuera de la diagonal los valores representan la covarianza entre pares de variables y podría entenderse como la información redundante. Si la \(covarianza \neq 0\) existe redundacia.

A mayor covarianza, mayor redundancia, es decir, mayor cantidad de información común aportan esas variables.

Pero puede verse que las variables con valores muy altos en general tienen mayor covarianza con otras variables, que las de valores bajos. Esto no significa necesariamente que sean éstas más similares al resto. Se esta produciendo un sesgo.

Para evitar esto es conveniente normalizar o tipificar los datos.

Normalización

La normalización más común es \(\frac{x_i - \overline{x}}{\sigma}\). Si aplicamos esa normalización ahora las varaibles tendrán media 0 y desviación típica 1. Aplicando la normalización a los datos anteriores tendríamos:

media <- apply( osos[ , 4:8 ], 2, mean )
desv <- apply( osos[ , 4:8 ], 2, sd )
dfN <- t( ( t( osos[,4:8] ) - media ) / desv )
head( round( dfN, 2 ) , 5 )
     Head.W Neck.G Length Chest.G Weight
[1,]   0.21   1.36   1.79    1.04   1.34
[2,]  -1.17  -1.93  -1.46   -1.25  -1.32
[3,]  -0.83  -1.02  -1.31   -1.36  -1.01
[4,]   0.21   0.08   0.10   -0.10   0.01
[5,]   0.21  -0.11  -1.08   -1.25  -0.97

Y calculando las covarianzas sobre los datos tipificados resultaría

round( var( dfN[ , 1:5 ] ), 2 )
        Head.W Neck.G Length Chest.G Weight
Head.W    1.00   0.80   0.68    0.74   0.76
Neck.G    0.80   1.00   0.86    0.92   0.93
Length    0.68   0.86   1.00    0.89   0.88
Chest.G   0.74   0.92   0.89    1.00   0.96
Weight    0.76   0.93   0.88    0.96   1.00

Como puede verse, la diagonal (las varianzas) es siempre 1. Siendo la suma varianzas igual al número de variables. Además, podemos ver cómo las covarianzas ahora están todas en el rango -1 a 1 por lo que ninguna variable pesa más que otra por su naturaleza, sino que una mayor covarianza refleja realmente una mayor redundancia entre esas variables.

Matriz de correlaciones

Otra medida de disimilaridad, que hemos visto, es la matriz de correlaciones. Como su propio nombre indica nos dará información del grado de dependencia de una variable con respecto a otra. Es lógico pensar que una variable consigo misma tendrá una correlación máxima (1) y que cuanto más información compartan dos variables mayor será su correlación. Calculando la correlación para los datos del ejemplo sin normalizar

round( cor( osos[ ,c( 4:8 ) ] ), 2 )
        Head.W Neck.G Length Chest.G Weight
Head.W    1.00   0.80   0.68    0.74   0.76
Neck.G    0.80   1.00   0.86    0.92   0.93
Length    0.68   0.86   1.00    0.89   0.88
Chest.G   0.74   0.92   0.89    1.00   0.96
Weight    0.76   0.93   0.88    0.96   1.00

Vemos que la matriz de correlaciones de datos sin tipificar es idéntica a la matriz de covarianzas con los datos tipificados. Por lo que ya sabemos que trabajar con correlaciones nos va a ahorrar el paso de la normalización.

Ordenación y clasificación

En función de cómo se aborda el problema multivariante y los objetivos que se desean alcanzar, se pueden clasificar las técnicas multivariantes en técnicas de ordenación y técnicas de clasificación.

En el primer caso, se busca explicar la mayor parte de la variabilidad existente, reduciendo lo máximo posible el número de dimensiones. Esto supone aplicar combinaciones lineales de las variables que implica una rotación de los ejes y la reordenación de las observaciones a lo largo de los nuevos ejes.

Las técnicas de clasificación, agrupamiento, clustering o conglomerados buscan incluir a las observaciones dentro de clases en las que los individuos sean lo más similares posibles en base a las variables que los definen.

Un ejemplo: supongamos que tenemos una serie de plantas a las que les hemos medido longitud y anchura de pétalos y sépalos. Con las técnicas de clasificación generaremos grupos de plantas que sean similares respecto a estas medidas. A los individuos incluidos en el mismo grupo se les asignará la misma etiqueta que les identifica como miembros del grupo. Veremos esto con más detalle en el apartado del curso de clasificación.

Multivariante en R

En R existen muchos paquetes y funciones orientadas al análisis multivariante. Uno de los más completos y conocidos es el paquete FactoMineR y su complemento para gráficos factoextra. En las siguientes tablas proporcionamos una serie de funciones de estos paquetes para el análsis y representación de datos multivariantes.

Principales funciones de FactoMineR
Funciones Descripción
PCA Análisis de componentes principales
CA Análisis de correspondencias
MCA Análisis de correspondencias múltiples
FAMD Análisis factorial de datos mixtos
MFA Análisis factorial múltiple
HCPC Clustering jerárquico sobre componentes principales
dimdesc Descripción sobre las dimensiones
Principales funciones gráficas de factoextra
Funciones Descripción
fviz_eig Visualizar autovalores
fviz_pca Gráficos para PCA
fviz_ca Gráficos para CA
fviz_mca Gráficos para MCA
fviz_mfa Gráficos para MFA
fviz_famd Gráficos para FAMD
fviz_hmfa Gráficos para HMFA
fviz_ellipses Dibuja elipses alrededor de grupos
fviz_cos2 Visualizar el cos2
fviz_contrib Visualizar las contribuciones
fviz_dend Visualizar dendrograma
fviz_cluster Visualización de clustering iterativo
Principales funciones de acceso a los resultados
Funciones Descripción
get_eigenvalue Acceder a la dimensión de los autovalores
get_pca Acceder a resultados de PCA
get_ca Acceder a resultados de CA
get_mca Acceder a resultados de MCA
get_mfa Accder a resultados de MFA
get_famd Acceder a resultaods de FAMD
get_hmfa Acceder a resultados de HMFA
facto_summarize Resumen del análisis

Febrero de 2018