Motivación

En Álgebra matricial, se presentó la base matemática para el estudio del análisis multivariado y que es el requisito para iniciar con el tema.

Se describirá un conjunto de datos multivariantes y se describirá su estructura de dependencia. El análisis descriptivo es el primer paso para el análisis de grandes cantidade de datos, los conceptos utilizados para el desarrollo pertenecen principalmente a Cuadras (2014) y Peña (2013).

Datos multivariantes

Tipos de variables

Las variables pueden ser cuantitativas, cuando su valor se exprese numéricamente, como la edad de una persona, su estatura o su renta, o cualitativas, cuando su valor sea un atributo o categoría, como el género, el color de los ojos o el municipio de nacimiento. Las variables cuantitativas pueden a su vez clasiÞcarse en continuas o de intervalo, cuando pueden tomar cualquier valor real en un intervalo, como la estatura, o discretas, cuando sólo toman valores enteros, como el número de hermanos. Las variables cualitativas pueden clasiÞcarse en binarias, cuando toman únicamente dos valores posibles, como el género (mujer, hombre) o generales, cuando toman muchos valores posibles, como el municipio de residencia.

Matrices de datos

Suponiendo que sobre los individuos \(w_{1}, ... , w_{n}\) se han observado las variables \(X_{1},...,X_{p}\). Sea \(x_{ij} = X_{j}(w_{i})\) la observación de la variable \(X_{j}\) sobre el individuo \(w_{i}\) La matriz de datos multivariantes es

\[ X = \begin{bmatrix} x_{11} & \cdots & x_{1j} & \cdots & x_{1p}\\ \vdots & \ddots & \vdots & \ddots & \vdots\\ x_{i1} & \cdots & x_{ij} & \cdots & x_{ip}\\ \vdots & \ddots & \vdots & \ddots & \vdots\\ x_{n1} & \cdots & x_{nj} & \cdots & x_{np} \end{bmatrix} \]

Las filas de \(X\) se identifican con los individuos y las columnas de \(X\) con las variables. Se indica:

  1. \(x_{i}\) la fila i-ésima de \(X\), que se opera como un vector columna.

  2. \(X_{j}\) la columna j-ésima de \(X\).

  3. \(\overline{x} = (\overline{x}_{1},...,\overline{x}_{j},...,\overline{x}_{p})'\) el vector columna de las medias de las variables, siendo

\[ \overline{x}_{j} = \frac{1}{n} \sum_{i=1}^{n} x_{ij} \]

  1. La matriz simétrica p x p de covarianzas muestrales

\[ S = \begin{bmatrix} s_{11} & s_{12} & \cdots & s_{1p}\\ s_{21} & s_{22} & \cdots & s_{2p}\\ \vdots & \vdots & \ddots & \vdots\\ s_{p1} & s_{p2} & \cdots & s_{pp} \end{bmatrix} \]

siendo

\[ \overline{s}_{jj'} = \frac{1}{n} \sum_{i=1}^{n} (x_{ij}-\overline{x}_{j})(x_{ij'}-\overline{x}_{j'}) \]

la covarianza entre las variables j, j’ Naturalmente, \(\overline{x}\) y \(S\) son medidas multivariantes de tendencia central y dispersión, respectivamente.

  1. La matriz simétrica p x p de correlaciones muestrales

\[ R = \begin{bmatrix} 1 & r_{12} & \cdots & r_{1p}\\ r_{21} & 1 & \cdots &r_{2p}\\ \vdots & \vdots & \ddots & \vdots\\ r_{p1} & r_{p2} & \cdots & 1 \end{bmatrix}, \]

siendo \(r_{jj'} = cor(X_{j},X_{j'})\) el coeficiente de correlación (muestral) entre las variables \(X_{j},X_{j'}\). Este coeficiente viene dado por

\[ r_{jj'} = \frac{s_{jj'}}{s_{j} s_{j'}}, \]

donde \(s_{j} , s_{j'}\) son las desviaciones típicas.

Ejemplo 1

Este ejemplo ha sido tomado de Peña (2013) y la solución adaptada a R.

Se tiene el conjunto de datos que presenta 34 observaciones y 3 variables. Las observaciones corresponden a distintas acciones que cotizan en el mercado continuo español y las variables a tres medidas de rentabilidad de estas acciones durante un período de tiempo. Las variables son : X1 es la rentabilidad efectiva por dividendos, X2 es la proporción de beneÞcios que va a dividendos y X3 el ratio entre precio por acción y beneficios.

library(readr)
library(moments)

acciones <- read_delim("acciones.csv", ";", escape_double = FALSE, trim_ws = TRUE)
## Parsed with column specification:
## cols(
##   Obs. = col_double(),
##   X1 = col_double(),
##   X2 = col_double(),
##   X3 = col_double()
## )
head(acciones)
## # A tibble: 6 x 4
##    Obs.    X1    X2    X3
##   <dbl> <dbl> <dbl> <dbl>
## 1     1   3.4  89.7  30.2
## 2     2   5.1  55.7   9.9
## 3     3   4.5  52.3  11.5
## 4     4   3.5  47    11.2
## 5     5   5.9  42.7   7  
## 6     6   5.1  30.6   6.9
a_descriptivo = matrix(
  c(colMeans(acciones[2:4]),
    sd(acciones$X1), sd(acciones$X2), sd(acciones$X3),
    skewness(acciones$X1), skewness(acciones$X2), skewness(acciones$X3),
    kurtosis(acciones$X1), kurtosis(acciones$X2), kurtosis(acciones$X3)
  ), nrow = 4, byrow = T)

colnames(a_descriptivo) <- c("X1", "X2", "X3")
rownames(a_descriptivo) <- c("Medias", "D. Típicas", "Coef. asimetría", "Coef. kurtosis")

a_descriptivo
##                        X1          X2        X3
## Medias          9.4205882 69.52647059  9.096765
## D. Típicas      5.3940360 24.00477615  4.750368
## Coef. asimetría 0.3729966  0.04637396  2.707049
## Coef. kurtosis  1.3828958  1.40013643 12.440638

Las medidas de asimetría y kurtosis indican un alejamiento de la distribución normal para las tres variables: las dos primeras tienen valores muy bajos de la kurtosis, lo que indica alta heterogeneidad, posiblemente por la presencia de dos grupos de datos distintos, y la tercera tiene alta kurtosis, lo que sugiere la presencia de valores atípicos.

Estas características son muy claras en los histogramas de las variables. La primera variable, rentabilidad efectiva por dividendos, x1, muestra dos grupos de acciones con comportamiento distinto. El histograma de la segunda variable, x2, muestra también dos grupos de acciones. Finalmente, la distribución de la tercera variable es muy asimétrica, con un valor atípico muy destacado. La evidencia disponible indica que las acciones pueden proba blemente dividirse en dos grupos más homogéneos. Sin embargo, vamos a ilustrar el análisis de todos los datos.

par(mfrow=c(2,2))
hist(acciones$X1, main = "Histograma de la rentabilidad \n por dividendos")
hist(acciones$X2, main = "Histograma de la proporción \n de beneficios que va a dividendos")
hist(acciones$X3, main = "Histograma del precio por \n acción con relación a los beneficios")

La matriz de varianzas y covarianzas de estas tres variables se presenta como sigue:

cov(acciones[2:4])
##           X1        X2        X3
## X1  29.09562 100.44065 -15.70281
## X2 100.44065 576.22928 -18.54628
## X3 -15.70281 -18.54628  22.56599

Los elementos diagonales de esta matriz son los cuadrados de las desviaciones típicas. Como las dimensiones de las variables son distintas, no tiene sentido calcular medidas promedio. Los histogramas de las tres variables han mostrado una clara falta de normalidad. Tomando logaritmos, la matriz de covarianzas de las variables transformadas, se indica como sigue:

cor(acciones[2:4])
##            X1         X2         X3
## X1  1.0000000  0.7757076 -0.6128248
## X2  0.7757076  1.0000000 -0.1626417
## X3 -0.6128248 -0.1626417  1.0000000

Matriz de centrado

Si \(1 = (1,..., 1)'\) es el vector columna de unos de orden n x 1, y \(J = 11'\) es la matriz n x n de unos, ciertas características multivariantes se expresan mejor a partir de la matriz de centrado \(H\), definida como

\[ H = I - \frac{1}{n}J \]

I = diag(4)
J = matrix(1, 4, 4)
H = I - (1/4) * J 
H
##       [,1]  [,2]  [,3]  [,4]
## [1,]  0.75 -0.25 -0.25 -0.25
## [2,] -0.25  0.75 -0.25 -0.25
## [3,] -0.25 -0.25  0.75 -0.25
## [4,] -0.25 -0.25 -0.25  0.75

Propiedades:

  1. Simétrica: \(H' = H\):
identical(t(H),H)
## [1] TRUE
  1. Idempotente: \(H^2 = H\):
identical(H%*%H,H)
## [1] TRUE
  1. Los valores propios de \(H\) son cero o uno: \(Hv = λv\) implica λ = 0 ó 1:
round(eigen(H)$values,1)
## [1] 1 1 1 0
  1. 1 es vector propio de valor propio cero: \(H1 = 0\), \(1'H = 0'\):
# Primer valor propio
round(eigen(H)$values[1],1)
## [1] 1
# Primer vector propio
round(eigen(H)$vectors[,1],1)
## [1]  0.0 -0.3 -0.5  0.8
  1. El rango de H es n - 1; es decir, rango(H) = n - 1:
qr(H)$rank
## [1] 3

Medias, covarianzas y correlaciones

Sea \(X = (x_{ij})\) la matriz de datos. La matriz de datos centrados se obtiene restando a cada variable su media: \(X = (x_{ij} - \overline{x}_{j}\)). Esta matriz, así como el vector de medias, las matrices de covarianzas y correlaciones, tienen expresiones matriciales simples.

  1. \(x' = \frac{1}{n}1'X\):

  2. Matriz de datos centrados:

\[ \overline{X}= X - 1 \overline{x}' = HX \]

X <- read.csv("familia.csv")
X$n <- NULL
X = as.matrix(X)

H = diag(nrow(X)) - (1/nrow(X)) * matrix(1, nrow(X), nrow(X)) 

X_barra = H %*% X
X_barra
##          x1     x2     y1     y2
##  [1,]   3.6   3.88    2.6  -4.36
##  [2,]   7.6  -2.12   24.6   2.64
##  [3,]  -6.4  -3.12    8.6  -0.36
##  [4,]  -4.4   1.88   11.6  -0.36
##  [5,] -11.4  -7.12   -5.4  -7.36
##  [6,]  20.6   5.88 -157.4   2.64
##  [7,]   1.6  -1.12   13.6  -0.36
##  [8,]   9.6   7.88   12.6   2.64
##  [9,]   0.6   0.88   20.6   9.64
## [10,]   4.6  -1.12   10.6   1.64
## [11,]  -1.4   9.88    2.6   8.64
## [12,]  -8.4  -4.12    6.6  -2.36
## [13,]   7.6   1.88   -2.4   0.64
## [14,]  14.6   8.88   13.6   9.64
## [15,]   6.6   2.88   11.6   1.64
## [16,] -24.4 -14.12  -15.4 -19.36
## [17,]   7.6   3.88    6.6   8.64
## [18,]  -1.4   1.88   -3.4  -1.36
## [19,]  -6.4  -6.12    5.6  -3.36
## [20,] -12.4 -11.12  -11.4 -12.36
## [21,]   4.6   2.88    8.6   2.64
## [22,] -13.4  -8.12    1.6  -2.36
## [23,] -11.4 -12.12   -0.4  -6.36
## [24,]   9.6  15.88   23.6   8.64
## [25,]   2.6   1.88   10.6   0.64
  1. Matriz de covarianzas:

\[ S = \frac{1}{n} \overline{X}'\overline{X} = \frac{1}{n} X'HX \]

S = (1/nrow(X)) * t(X) %*% H %*% X
S
##         x1      x2       y1      y2
## x1  98.720 57.2320  -75.040 50.5760
## x2  57.232 49.7856    1.792 38.5968
## y1 -75.040  1.7920 1123.200 31.3760
## y2  50.576 38.5968   31.376 44.3904
  1. Matriz de correlaciones:

\[ R = D^{-1}SD^{-1}, \ \ \ \ \ \ \ S = DRD, \]

siendo \(D\) la matriz diagonal con las desviaciones típicas de las variables.

colSd <- function(X) {
  desviaciones = c()
  for (i in 1:ncol(X)) {
    desviaciones <- append(desviaciones, sd(X[,i]))
  }
  desviaciones
}

D = diag(colSd(X))

R = solve(D) %*% S %*% solve(D)
R
##            [,1]       [,2]        [,3]      [,4]
## [1,]  0.9600000 0.78371058 -0.21633806 0.7334468
## [2,]  0.7837106 0.96000000  0.00727493 0.7881813
## [3,] -0.2163381 0.00727493  0.96000000 0.1348950
## [4,]  0.7334468 0.78818131  0.13489496 0.9600000
S = D%*%R%*%D
S
##         [,1]    [,2]     [,3]    [,4]
## [1,]  98.720 57.2320  -75.040 50.5760
## [2,]  57.232 49.7856    1.792 38.5968
## [3,] -75.040  1.7920 1123.200 31.3760
## [4,]  50.576 38.5968   31.376 44.3904

Variables compuestas

Una variable compuesta \(Y\) es una combinación lineal de las variables observables con coeficientes \(a = (a_{1},...,a_{p})'\)

\[ Y = a_{1}X_{1} + \cdots + a_{p}X_{p} \]

Si \(X = [X_{1},...,X_{p}]\) es la matriz de datos, también podemos escribir

\[ Y = Xa \]

Si \(Z = b_{1}X_{1} + \cdots + b_{p}X_{p} = Xb\) es otra variable compuesta, se verifica:

  1. \(\overline{Y} = \overline{x}'a, \ \ \ \overline{Z} = \overline{x}'b\)

  2. \(var(Y) = a'Sa, \ \ var(Z) = b'Sb\)

  3. \(cov(Y,Z) = a'Sb\)

Ciertas variables compuestas reciben diferentes nombres según la técnica multivariante: componentes principales, variables canónicas, funciones discriminantes, etc. Uno de los objetivos del Análisis Multivariante es encontrar variables compuestas adecuadas que expliquen aspectos relevantes de los datos.

Tomando el ejemplo 1.11.1 de Cuadras (2014).

X <- read.csv("alcornoques.csv")
X <- as.matrix(X[,2:5])

# Variables compuestas
#y1 = N + S - E - W
y1 = X%*%c(1,-1,1,-1)
y1
##       [,1]
##  [1,]    5
##  [2,]   10
##  [3,]    5
##  [4,]   10
##  [5,]   -1
##  [6,]    3
##  [7,]    4
##  [8,]    5
##  [9,]    3
## [10,]   -5
## [11,]    8
## [12,]   29
## [13,]   16
## [14,]    5
## [15,]   37
## [16,]  -15
## [17,]   23
## [18,]   11
## [19,]   30
## [20,]    7
## [21,]    1
## [22,]    0
## [23,]   23
## [24,]    7
## [25,]   11
## [26,]   13
## [27,]   -5
## [28,]    8
# y2 = N - S
y2 = X%*%c(1,0,-1,0)
y2
##       [,1]
##  [1,]   -4
##  [2,]   -6
##  [3,]   -8
##  [4,]    5
##  [5,]   -3
##  [6,]   -4
##  [7,]    8
##  [8,]   11
##  [9,]    6
## [10,]    6
## [11,]   -2
## [12,]  -11
## [13,]   -6
## [14,]   -5
## [15,]   -9
## [16,]    9
## [17,]    9
## [18,]   13
## [19,]   11
## [20,]    9
## [21,]    5
## [22,]    2
## [23,]   -7
## [24,]  -13
## [25,]    0
## [26,]   13
## [27,]    4
## [28,]   -9
#y3 = E - W
y3 = X%*%c(0,1,0,-1)
y3
##       [,1]
##  [1,]  -11
##  [2,]  -10
##  [3,]   -1
##  [4,]   -9
##  [5,]   -4
##  [6,]    9
##  [7,]   12
##  [8,]   18
##  [9,]   15
## [10,]   -7
## [11,]    2
## [12,]  -18
## [13,]   -6
## [14,]    8
## [15,]    4
## [16,]   18
## [17,]    4
## [18,]   22
## [19,]   -5
## [20,]    0
## [21,]   -2
## [22,]   -2
## [23,]   -4
## [24,]   -2
## [25,]    5
## [26,]   -6
## [27,]  -13
## [28,]   11
# Variables compuestas normalizadas
#Z1 = (N + S - E - W) / 2
z1 = y1/2
z1
##       [,1]
##  [1,]  2.5
##  [2,]  5.0
##  [3,]  2.5
##  [4,]  5.0
##  [5,] -0.5
##  [6,]  1.5
##  [7,]  2.0
##  [8,]  2.5
##  [9,]  1.5
## [10,] -2.5
## [11,]  4.0
## [12,] 14.5
## [13,]  8.0
## [14,]  2.5
## [15,] 18.5
## [16,] -7.5
## [17,] 11.5
## [18,]  5.5
## [19,] 15.0
## [20,]  3.5
## [21,]  0.5
## [22,]  0.0
## [23,] 11.5
## [24,]  3.5
## [25,]  5.5
## [26,]  6.5
## [27,] -2.5
## [28,]  4.0
#Z2 = (N - S) / sqrt(2)
z2 = y2/sqrt(2)
z2
##            [,1]
##  [1,] -2.828427
##  [2,] -4.242641
##  [3,] -5.656854
##  [4,]  3.535534
##  [5,] -2.121320
##  [6,] -2.828427
##  [7,]  5.656854
##  [8,]  7.778175
##  [9,]  4.242641
## [10,]  4.242641
## [11,] -1.414214
## [12,] -7.778175
## [13,] -4.242641
## [14,] -3.535534
## [15,] -6.363961
## [16,]  6.363961
## [17,]  6.363961
## [18,]  9.192388
## [19,]  7.778175
## [20,]  6.363961
## [21,]  3.535534
## [22,]  1.414214
## [23,] -4.949747
## [24,] -9.192388
## [25,]  0.000000
## [26,]  9.192388
## [27,]  2.828427
## [28,] -6.363961
#Z3 = (E - W) / sqrt(2)
z3 = y3/sqrt(2)
z3
##              [,1]
##  [1,]  -7.7781746
##  [2,]  -7.0710678
##  [3,]  -0.7071068
##  [4,]  -6.3639610
##  [5,]  -2.8284271
##  [6,]   6.3639610
##  [7,]   8.4852814
##  [8,]  12.7279221
##  [9,]  10.6066017
## [10,]  -4.9497475
## [11,]   1.4142136
## [12,] -12.7279221
## [13,]  -4.2426407
## [14,]   5.6568542
## [15,]   2.8284271
## [16,]  12.7279221
## [17,]   2.8284271
## [18,]  15.5563492
## [19,]  -3.5355339
## [20,]   0.0000000
## [21,]  -1.4142136
## [22,]  -1.4142136
## [23,]  -2.8284271
## [24,]  -1.4142136
## [25,]   3.5355339
## [26,]  -4.2426407
## [27,]  -9.1923882
## [28,]   7.7781746

Transformaciones lineales

Sea T una matriz p x q Una transformación lineal de la matriz de datos es

\[ Y = XT \]

Las columnas \(Y1,...,Y_{q}\) de Y son las variables transformadas.

X <- read.csv("alcornoques.csv")
X <- as.matrix(X[,2:5])

set.seed(10)
T =matrix(round(rnorm(20,3,2)),4,5)

# Transformacion lineal
Y = X%*%T 
Y
##       [,1] [,2] [,3] [,4] [,5]
##  [1,]  568  782  897 1081  958
##  [2,]  465  644  751  898  801
##  [3,]  455  632  724  883  779
##  [4,]  286  392  428  526  460
##  [5,]  264  363  419  504  447
##  [6,]  247  346  370  479  409
##  [7,]  288  397  368  517  419
##  [8,]  305  421  366  540  426
##  [9,]  281  389  360  510  412
## [10,]  258  347  373  460  399
## [11,]  242  338  370  466  404
## [12,]  450  632  775  899  820
## [13,]  404  564  652  788  700
## [14,]  380  530  577  733  632
## [15,]  660  930 1033 1293 1128
## [16,]  472  643  621  846  695
## [17,]  554  768  785 1025  868
## [18,]  599  828  790 1089  893
## [19,]  519  719  745  957  818
## [20,]  328  449  451  590  497
## [21,]  296  404  425  539  462
## [22,]  250  342  370  462  400
## [23,]  438  615  705  860  761
## [24,]  294  414  509  599  542
## [25,]  287  401  422  546  466
## [26,]  332  453  453  588  497
## [27,]  340  459  519  620  549
## [28,]  392  551  608  771  667

Medidas globales de variabilidad y dependencia

Bibliografía

Cuadras, C. (2014). Métodos de análisis multivariante. Publicaciones ppu.

Peña, D. (2013). Análisis de datos multivariantes. McGraw-Hill España.