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 haga 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\) —que correspondería a la primera columna—

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

y la observación \(w_1.\) —que correspondería a la primera fila—

\[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

Por ejemplo, en esta tabla, la variable Age está formada por los valores de esa columna [70, 8, 19, 45, 19, 21], mientras que la observación 1 está formada por los valores de todas las variables en esa posición [70, 15.0, 6.5, 28, 78.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 matemá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, sino a otro tipos de medidas de distancias y similitudes (o disimilitudes) que nos sirvan para establecer relaciones de semejanza entre observaciones.

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 en las fórmulas anteriores, 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
[1] "Varianza total:  13306.476"

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, es decir la varianza compartida. Por lo que si la \(covarianza \neq 0\) existe un cierto grado de redundancia.

A mayor covarianza, mayor redundancia, 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. Lo que está pasando, es que esta produciendo un sesgo. Las variables con valores más altos (porque se midan en determinadas unidades) están “pesando” más, que aquellas con valores más bajos.

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}\). Esto significa que a cada valor de la tabla de datos le restaré su media (la media de la columna normalmente) y lo dividiré por su desviación típica.

Si aplicamos esa normalización, ahora las variables 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

Esta sería la tabla de datos normalizados. Si calculamos sobre ella la matriz de varianzas/covarianzas 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álisis 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

Manos a la obra

Es un buen momento para parar y hacernos unas preguntas que nos ayuden a saber si hemos entendido estos sencillos pero importantes conceptos (acceso).

Resumen

  • Es muy importante, antes de diseñar un experimento, pararnos a reflexionar sobre lo que pretendemos encontrar y tener clara nuestra hipótesis de trabajo.

  • Es también importante tener idea a priori del tipo de análisis que vamos a hacer. Esto nos ayudará a saber qué tipo de datos tenemos que recabar.

  • Finalmente, si uno no va a analizar sus propios datos, debería hablar con la persona o grupo que los vayan a analizar antes de empezar el experimento y contar ellos en el diseño. Al fin y al cabo son ellos los que analizarán y sabrán cómo deben ser nuestros datos.