logo

Matriz de varianzas y covarianzas

Como hemos comentado, para variables escalares la variabilidad respecto a la media se mide habitualmente por la varianza, o su raíz cuadrada, la desviación estándar. La relación lineal entre dos variables se mide por la covarianza. La covarianza entre dos variables \((x_j, x_k)\) se calcula como: \[ s_{jk} = \dfrac{1}{n-1} \sum_{i=1}^n (x_{ij}-\overline{x}_j)(x_{ik}-\overline{x}_k) \] la cual mide su dependencia lineal. Esta información para una variable multivariada puede presentarse de forma compacta en la matriz de varianzas y covarianzas. Definimos esta matriz como: \[ S = \dfrac{1}{n-1} \sum_{i=1}^n ({\bf x}_i - \overline{\bf x})({\bf x}_i - \overline{\bf x})^t \] que es una matriz cuadrada y simétrica que contiene en la diagonal principal las varianzas y fuera de la diagonal las covarianzas entre las variables. La matriz de varianzas y covarianzas, que llamaremos para simplificar simplemente matriz de covarianzas, es la matriz simétrica de orden \(p\) con forma: \[ S = \begin{pmatrix} s_1^2 & s_{12} & \cdots & s_{1p} \\ s_{21} & s_{2}^2 & \cdots & s_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ s_{p1} & s_{p2} & \cdots & s_p^2 \end{pmatrix} \]

Matriz de correlaciones

En estadística el coeficiente de correlación también juega un papel muy importante a la hora de medir relaciones entre variables. La correlación entre dos variables \((x_j,x_k)\) se calcula como: \[ r_{jk} = \dfrac{s_{jk}}{s_j\, s_k} \] la cual mide su relación linea. Esta información para una variable multivariada puede presentarse de forma compacta en la matriz de correlaciones. Esta matriz también es simétrica, donde en la diagonal principal será siempre 1, que es la correlación de cada variable consigo misma y los demás valores serán las correlaciones entre variables. \[ R = \begin{pmatrix} 1 & r_{12} & \cdots & r_{1p} \\ r_{21} & 1 & \cdots & r_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ r_{p1} & r_{p2} & \cdots & 1 \end{pmatrix} \] Las matrices de covarianza y correlación las podemos escribir de forma matricial de la siguiente manera: \[ S = DRD, \quad R = D^{-1}SD^{-1} \] donde \(D\) es la matriz diagonal con las desviaciones estándar de las variables.

Ejemplo 1:

Para este ejemplo trabajaremos nuevamente con la base de datos acciones . Esta base presenta 34 observaciones y 3 variables. Las observaciones corresponden a distintas acciones que cotizan en el mercado y las variables a tres medidas de rentabilidad de estas acciones durante un período de tiempo. Las variables son : \(x_1\) es la rentabilidad efectiva por dividendos, \(x_2\) es la proporción de beneficios que va a dividendos y \(x_3\) el cociente entre precio por acción y beneficios.

Para calcular la matriz de covarianzas en R se usa el siguiente código:

acciones <- read.csv("acciones.csv")
X        <- data.matrix(acciones[,-1])
# Matriz de covarianzas
S <- cov(X)
round(S,2)
##        X1     X2     X3
## X1  29.10 100.44 -15.70
## X2 100.44 576.23 -18.55
## X3 -15.70 -18.55  22.57
# Histogramas
par(mfrow=c(2,2))
hist(X[,1], main = "Rentabilidad por dividendos",xlab=" ")
hist(X[,2], main = "Proporción de beneficios que va a dividendos",xlab=" ")
hist(X[,3], main = "Cociente entre precio por acción y beneficios",xlab=" ")

Los elementos de la diagonal principal de esta matriz son las varianzas y los demás valores corresponden a las covarianzas. 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. Una posibilidad, que estudiaremos con más detalle en el próximo módulo, es transformar las variables para facilitar su interpretación. Tomando logaritmo en los datos, la matriz de covarianzas de las variables transformadas es:

log_S <- cov(log(X))
round(log_S,2)
##       X1    X2    X3
## X1  0.36  0.15 -0.19
## X2  0.15  0.14 -0.03
## X3 -0.19 -0.03  0.16

Si observamos con cuidado, notamos que los logaritmos modifican dramáticamente los resultados. Los datos ahora son más homogéneos y la variable de mayor varianza pasa a ser \(x_1\), el logaritmo de la rentabilidad efectiva, mientras que la menor es \(x_2\), el logaritmo de la proporción de beneficios que va a dividendos. Por otra parte, la relación entre \(x_3\) y \(x_1\) es negativa, mientras que la relación entre \(x_1\) y \(x_2\) es positiva. La otra relación \(x_2\) y \(x_3\) es bastante débil. Una ventaja adicional de los logaritmos es que hace las variables independientes de la escala de medida. Por tanto, al tomar logaritmos en las variables las varianzas pueden compararse aunque los datos tengan distintas dimensiones.

Otra manera de analizarlo como mencionamos, es por medio de la matriz de correlaciones. Esta se calcula así:

R <- cor(X)
round(R,2)
##       X1    X2    X3
## X1  1.00  0.78 -0.61
## X2  0.78  1.00 -0.16
## X3 -0.61 -0.16  1.00

Podemos destacar una buena relación positiva entre las variables \(x_1\) y \(x_2\), una relación aceptable negativa entre \(x_1\) y \(x_3\) y una relación débil entre \(x_2\) y \(x_3\).

Matriz de datos centrados

Definimos la matriz de datos centrados como la matriz resultante de restar cada dato su media: \[ \widetilde{X} = X-{\bf 1}\cdot \overline{\bf x} \] la cual con ayuda de la definición del vector de medias, se puede reescribir como:

\[\begin{align*} \widetilde{X} & = X-\dfrac{1}{n} {\bf 1}\cdot {\bf 1}^t \cdot X \\ & = \left(I-\dfrac{1}{n} {\bf 1}\cdot {\bf 1}^t\right)X \\ & = H X \end{align*}\]

donde, si definimos a \(J\) como la matriz de unos,\((J={\bf 1}\cdot {\bf 1}^t)\), podemos definir la matriz \(H\) como:

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

Ciertas características multivariadas se expresan muy bien a partir de la matriz de datos centrados. Por ejemplo, a partir de esta matriz podemos definir la matriz de covarianzas \(S\) como se muestra a continuación: \[ S = \dfrac{1}{n-1} \widetilde{X}^t \widetilde{X}= \dfrac{1}{n-1} X^t H X \]

Ejemplo 2:

Continuando con la base de datos acciones , podemos corroborar que la matriz \(S\) se pueda escribir a partir de la matriz de datos centrados.

En R será necesario el siguiente código:

# Construimos la matriz H
n <- 34
I <- diag(n)
J <- matrix(1,ncol=n,nrow=n)
H <- I-(1/(n))*J

# Construimos la matriz S por medio de matriz de datos centrados
X_tilde <- H%*%X
S_tilde <- (1/(n-1))*(t(X_tilde)%*%X_tilde)
identical(round(S,2),round(S_tilde,2))
## [1] TRUE
# Construimos la matriz S por medio de H
S_H <- (1/(n-1))*(t(X)%*% H %*%X)
identical(round(S,2),round(S_H,2))
## [1] TRUE

Propiedades de la matriz de datos centrados:

  1. Es simétrica: \(H^t H\).

  2. Es idempotente: \(H^2=H\).

  3. Los valores propios de \(H\) siempre son 0 o 1.

  4. \(H\cdot {\bf 1}={\bf 0}\) o \({\bf 1}^t \cdot H= {\bf 0}\).

Ejemplo 3:

A modo de ejemplo, podemos tomar una matriz \(H\) cualquiera y ver si se cumplen las propiedades. Pero recuerden que para hacer la prueba de cada propiedad se debería hacer de forma general.

El código en R sería:

# Ejemplo de H
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 
identical(t(H),H)
## [1] TRUE
# 2. Idempotente
H2 <- H%*%H
identical(H%*%H,H)
## [1] TRUE
# 3. Valores propios de H
round(eigen(H)$values)
## [1] 1 1 1 0
# 4. H*1=0 o t(1)*H=0
uno <- rep(1,4)
H%*% uno
##      [,1]
## [1,]    0
## [2,]    0
## [3,]    0
## [4,]    0
t(uno)%*%H
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
\[ \]