1  Exemplo

Exemplo de cálculo de matriz de Covariâncias e de Correlações amostrais, além da distância de Mahalanobis.

Fonte dos dados: Weights of Cork Boring (in Centigrams) in Four Directions for 28 trees. Applied Multivariate Statistics with SAS Software. Khattree & Naik(2003) - p. 11.

1.1 Vetores e Matriz

Para criar vetores no R, definimos um nome para cada vetor (y1, y2, y3 e y4), em seguida, utilizamos o operador <- e a função c() para atribuir valores a cada um dos objetos (vetores). Dentro de c(), declaramos seus valores, separados por vírgula.

y1 <- c(72,60,56,41,32,30,39,42,37,33,32,63,54,47,91,56,79,81,78,46,39,32,60,35,39,50,43,48)

y2 <- c(66,53,57,29,32,35,39,43,40,29,30,45,46,51,79,68,65,80,55,38,35,30,50,37,36,34,37,54)

y3 <- c(76,66,64,36,35,34,31,31,31,27,34,74,60,52,100,47,70,68,67,37,34,30,67,48,39,37,39,57)

y4 <- c(77,63,58,38,36,26,27,25,25,36,28,63,52,43,75,50,61,58,60,38,37,32,54,39,31,40,50,43)

Com a função cbind() juntamos os vetores y1, y2, y3 e y4, salvando-os em um objeto chamado Y. Utilizando a função colnames(), alteramos os nomes dos vetores ("North", "East", "South", "West").

Y <- cbind(y1, y2, y3, y4)
colnames(Y) <- c("North", "East", "South", "West")
Y
      North East South West
 [1,]    72   66    76   77
 [2,]    60   53    66   63
 [3,]    56   57    64   58
 [4,]    41   29    36   38
 [5,]    32   32    35   36
 [6,]    30   35    34   26
 [7,]    39   39    31   27
 [8,]    42   43    31   25
 [9,]    37   40    31   25
[10,]    33   29    27   36
[11,]    32   30    34   28
[12,]    63   45    74   63
[13,]    54   46    60   52
[14,]    47   51    52   43
[15,]    91   79   100   75
[16,]    56   68    47   50
[17,]    79   65    70   61
[18,]    81   80    68   58
[19,]    78   55    67   60
[20,]    46   38    37   38
[21,]    39   35    34   37
[22,]    32   30    30   32
[23,]    60   50    67   54
[24,]    35   37    48   39
[25,]    39   36    39   31
[26,]    50   34    37   40
[27,]    43   37    39   50
[28,]    48   54    57   43

Com a função class(), constatamos que o objeto Y é uma matriz (matrix).

[1] "matrix" "array" 
proc iml;

y1 = {72,60,56,41,32,30,39,42,37,33,32,63,54,47, 91,56,79,81,78,46, 39,32,60,35,39,50,43,48};

y2 = {66,53,57,29,32,35,39,43,40,29,30,45,46,51, 79,68,65,80,55,38, 35,30,50,37,36,34,37,54};

y3 = {76,66,64,36,35,34,31,31,31,27,34,74,60,52,100,47,70,68,67,37, 34,30,67,48,39,37,39,57};

y4 = {77,63,58,38,36,26,27,25,25,36,28,63,52,43, 75,50,61,58,60,38, 37,32,54,39,31,40,50,43};
Y = y1||y2||y3||y4;
create Cork var {North East South West};
append from Y;
Close Cork;

1.2 Matriz de Variâncias e Covariâncias

Para obtermos a matriz de variâncias e covariâncias, precisamos dos seguintes objetos:

  • n: número de observações \(n\);

  • In: matriz identidade \(\mathbf{I}\);

  • jn: vetor coluna de 1’s \(\mathbf{j}\);

  • Jnn: matriz de 1’s \(\mathbf{J}\).

As funções nrow() e ncol() nos retornam o número de linhas e colunas de um objeto, respectivamente.

n <- nrow(Y)
p <- ncol(Y)

n; p
[1] 28
[1] 4

No caso da matriz Y, apresenta dimensão \(28 \times 4\).

A função diag() cria uma matriz identidade. Basta inserir dentro da função a dimensão da matriz.

In <- diag(n)
In
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
 [1,]    1    0    0    0    0    0    0    0    0     0     0     0     0
 [2,]    0    1    0    0    0    0    0    0    0     0     0     0     0
 [3,]    0    0    1    0    0    0    0    0    0     0     0     0     0
 [4,]    0    0    0    1    0    0    0    0    0     0     0     0     0
 [5,]    0    0    0    0    1    0    0    0    0     0     0     0     0
 [6,]    0    0    0    0    0    1    0    0    0     0     0     0     0
 [7,]    0    0    0    0    0    0    1    0    0     0     0     0     0
 [8,]    0    0    0    0    0    0    0    1    0     0     0     0     0
 [9,]    0    0    0    0    0    0    0    0    1     0     0     0     0
[10,]    0    0    0    0    0    0    0    0    0     1     0     0     0
[11,]    0    0    0    0    0    0    0    0    0     0     1     0     0
[12,]    0    0    0    0    0    0    0    0    0     0     0     1     0
[13,]    0    0    0    0    0    0    0    0    0     0     0     0     1
[14,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[15,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[16,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[17,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[18,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[19,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[20,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[21,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[22,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[23,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[24,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[25,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[26,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[27,]    0    0    0    0    0    0    0    0    0     0     0     0     0
[28,]    0    0    0    0    0    0    0    0    0     0     0     0     0
      [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
 [1,]     0     0     0     0     0     0     0     0     0     0     0     0
 [2,]     0     0     0     0     0     0     0     0     0     0     0     0
 [3,]     0     0     0     0     0     0     0     0     0     0     0     0
 [4,]     0     0     0     0     0     0     0     0     0     0     0     0
 [5,]     0     0     0     0     0     0     0     0     0     0     0     0
 [6,]     0     0     0     0     0     0     0     0     0     0     0     0
 [7,]     0     0     0     0     0     0     0     0     0     0     0     0
 [8,]     0     0     0     0     0     0     0     0     0     0     0     0
 [9,]     0     0     0     0     0     0     0     0     0     0     0     0
[10,]     0     0     0     0     0     0     0     0     0     0     0     0
[11,]     0     0     0     0     0     0     0     0     0     0     0     0
[12,]     0     0     0     0     0     0     0     0     0     0     0     0
[13,]     0     0     0     0     0     0     0     0     0     0     0     0
[14,]     1     0     0     0     0     0     0     0     0     0     0     0
[15,]     0     1     0     0     0     0     0     0     0     0     0     0
[16,]     0     0     1     0     0     0     0     0     0     0     0     0
[17,]     0     0     0     1     0     0     0     0     0     0     0     0
[18,]     0     0     0     0     1     0     0     0     0     0     0     0
[19,]     0     0     0     0     0     1     0     0     0     0     0     0
[20,]     0     0     0     0     0     0     1     0     0     0     0     0
[21,]     0     0     0     0     0     0     0     1     0     0     0     0
[22,]     0     0     0     0     0     0     0     0     1     0     0     0
[23,]     0     0     0     0     0     0     0     0     0     1     0     0
[24,]     0     0     0     0     0     0     0     0     0     0     1     0
[25,]     0     0     0     0     0     0     0     0     0     0     0     1
[26,]     0     0     0     0     0     0     0     0     0     0     0     0
[27,]     0     0     0     0     0     0     0     0     0     0     0     0
[28,]     0     0     0     0     0     0     0     0     0     0     0     0
      [,26] [,27] [,28]
 [1,]     0     0     0
 [2,]     0     0     0
 [3,]     0     0     0
 [4,]     0     0     0
 [5,]     0     0     0
 [6,]     0     0     0
 [7,]     0     0     0
 [8,]     0     0     0
 [9,]     0     0     0
[10,]     0     0     0
[11,]     0     0     0
[12,]     0     0     0
[13,]     0     0     0
[14,]     0     0     0
[15,]     0     0     0
[16,]     0     0     0
[17,]     0     0     0
[18,]     0     0     0
[19,]     0     0     0
[20,]     0     0     0
[21,]     0     0     0
[22,]     0     0     0
[23,]     0     0     0
[24,]     0     0     0
[25,]     0     0     0
[26,]     1     0     0
[27,]     0     1     0
[28,]     0     0     1

\[ \mathbf{I}_{(28)} = \begin{bmatrix} 1 & 0 & 0 & \dots & 0 \\ 0 & 1 & 0 & \dots & 0 \\ 0 & 0 & 1 &\dots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \dots & 1 \end{bmatrix} \]

Com a função matrix(), podemos criar qualquer tipo de matriz, vetor ou escalar. Para isso, utilizamos três argumentos dentro da função:

  • data =: os elementos que compõem a matriz;

  • nrow =: número de linhas da matriz;

  • ncol =: número de colunas da matriz.

jn <- matrix(data = 1, nrow = n, ncol = 1)
jn
      [,1]
 [1,]    1
 [2,]    1
 [3,]    1
 [4,]    1
 [5,]    1
 [6,]    1
 [7,]    1
 [8,]    1
 [9,]    1
[10,]    1
[11,]    1
[12,]    1
[13,]    1
[14,]    1
[15,]    1
[16,]    1
[17,]    1
[18,]    1
[19,]    1
[20,]    1
[21,]    1
[22,]    1
[23,]    1
[24,]    1
[25,]    1
[26,]    1
[27,]    1
[28,]    1
Jnn <- matrix(data = 1, nrow = n, ncol = n)
Jnn
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
 [1,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [2,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [3,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [4,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [5,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [6,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [7,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [8,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [9,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[10,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[11,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[12,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[13,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[14,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[15,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[16,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[17,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[18,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[19,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[20,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[21,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[22,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[23,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[24,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[25,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[26,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[27,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[28,]    1    1    1    1    1    1    1    1    1     1     1     1     1
      [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
 [1,]     1     1     1     1     1     1     1     1     1     1     1     1
 [2,]     1     1     1     1     1     1     1     1     1     1     1     1
 [3,]     1     1     1     1     1     1     1     1     1     1     1     1
 [4,]     1     1     1     1     1     1     1     1     1     1     1     1
 [5,]     1     1     1     1     1     1     1     1     1     1     1     1
 [6,]     1     1     1     1     1     1     1     1     1     1     1     1
 [7,]     1     1     1     1     1     1     1     1     1     1     1     1
 [8,]     1     1     1     1     1     1     1     1     1     1     1     1
 [9,]     1     1     1     1     1     1     1     1     1     1     1     1
[10,]     1     1     1     1     1     1     1     1     1     1     1     1
[11,]     1     1     1     1     1     1     1     1     1     1     1     1
[12,]     1     1     1     1     1     1     1     1     1     1     1     1
[13,]     1     1     1     1     1     1     1     1     1     1     1     1
[14,]     1     1     1     1     1     1     1     1     1     1     1     1
[15,]     1     1     1     1     1     1     1     1     1     1     1     1
[16,]     1     1     1     1     1     1     1     1     1     1     1     1
[17,]     1     1     1     1     1     1     1     1     1     1     1     1
[18,]     1     1     1     1     1     1     1     1     1     1     1     1
[19,]     1     1     1     1     1     1     1     1     1     1     1     1
[20,]     1     1     1     1     1     1     1     1     1     1     1     1
[21,]     1     1     1     1     1     1     1     1     1     1     1     1
[22,]     1     1     1     1     1     1     1     1     1     1     1     1
[23,]     1     1     1     1     1     1     1     1     1     1     1     1
[24,]     1     1     1     1     1     1     1     1     1     1     1     1
[25,]     1     1     1     1     1     1     1     1     1     1     1     1
[26,]     1     1     1     1     1     1     1     1     1     1     1     1
[27,]     1     1     1     1     1     1     1     1     1     1     1     1
[28,]     1     1     1     1     1     1     1     1     1     1     1     1
      [,26] [,27] [,28]
 [1,]     1     1     1
 [2,]     1     1     1
 [3,]     1     1     1
 [4,]     1     1     1
 [5,]     1     1     1
 [6,]     1     1     1
 [7,]     1     1     1
 [8,]     1     1     1
 [9,]     1     1     1
[10,]     1     1     1
[11,]     1     1     1
[12,]     1     1     1
[13,]     1     1     1
[14,]     1     1     1
[15,]     1     1     1
[16,]     1     1     1
[17,]     1     1     1
[18,]     1     1     1
[19,]     1     1     1
[20,]     1     1     1
[21,]     1     1     1
[22,]     1     1     1
[23,]     1     1     1
[24,]     1     1     1
[25,]     1     1     1
[26,]     1     1     1
[27,]     1     1     1
[28,]     1     1     1

Nos casos anteriores, criamos o vetor coluna de 1’s jn de dimensão \(28 \times 1\) e a matriz de 1’s Jnn de dimensão \(28 \times 28\).

\[ j_n = \mathbf{j}_{(28 \times 1)} = [1,1,...,1]' \]

\[ Jnn = \mathbf{J}_{(28 \times 28)} = \begin{bmatrix} 1 & 1 & 1 & \dots & 1 \\ 1 & 1 & 1 & \dots & 1 \\ 1 & 1 & 1 &\dots & 1 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & 1 & \dots & 1 \end{bmatrix} \]

Além disso, note que a matriz \(\mathbf{J}\) (Jnn) pode ser obtida por \(\mathbf{J} = \mathbf{j} \space \mathbf{j}'\), ou seja, a multiplicação do vetor coluna \(\mathbf{j}\) (jn) pela sua transposta.

No R, utilizamos a função t() para realizar a transposição de uma matriz ou vetor.

Jnn <- jn %*% t(jn)
Jnn
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
 [1,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [2,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [3,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [4,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [5,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [6,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [7,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [8,]    1    1    1    1    1    1    1    1    1     1     1     1     1
 [9,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[10,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[11,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[12,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[13,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[14,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[15,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[16,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[17,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[18,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[19,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[20,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[21,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[22,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[23,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[24,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[25,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[26,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[27,]    1    1    1    1    1    1    1    1    1     1     1     1     1
[28,]    1    1    1    1    1    1    1    1    1     1     1     1     1
      [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25]
 [1,]     1     1     1     1     1     1     1     1     1     1     1     1
 [2,]     1     1     1     1     1     1     1     1     1     1     1     1
 [3,]     1     1     1     1     1     1     1     1     1     1     1     1
 [4,]     1     1     1     1     1     1     1     1     1     1     1     1
 [5,]     1     1     1     1     1     1     1     1     1     1     1     1
 [6,]     1     1     1     1     1     1     1     1     1     1     1     1
 [7,]     1     1     1     1     1     1     1     1     1     1     1     1
 [8,]     1     1     1     1     1     1     1     1     1     1     1     1
 [9,]     1     1     1     1     1     1     1     1     1     1     1     1
[10,]     1     1     1     1     1     1     1     1     1     1     1     1
[11,]     1     1     1     1     1     1     1     1     1     1     1     1
[12,]     1     1     1     1     1     1     1     1     1     1     1     1
[13,]     1     1     1     1     1     1     1     1     1     1     1     1
[14,]     1     1     1     1     1     1     1     1     1     1     1     1
[15,]     1     1     1     1     1     1     1     1     1     1     1     1
[16,]     1     1     1     1     1     1     1     1     1     1     1     1
[17,]     1     1     1     1     1     1     1     1     1     1     1     1
[18,]     1     1     1     1     1     1     1     1     1     1     1     1
[19,]     1     1     1     1     1     1     1     1     1     1     1     1
[20,]     1     1     1     1     1     1     1     1     1     1     1     1
[21,]     1     1     1     1     1     1     1     1     1     1     1     1
[22,]     1     1     1     1     1     1     1     1     1     1     1     1
[23,]     1     1     1     1     1     1     1     1     1     1     1     1
[24,]     1     1     1     1     1     1     1     1     1     1     1     1
[25,]     1     1     1     1     1     1     1     1     1     1     1     1
[26,]     1     1     1     1     1     1     1     1     1     1     1     1
[27,]     1     1     1     1     1     1     1     1     1     1     1     1
[28,]     1     1     1     1     1     1     1     1     1     1     1     1
      [,26] [,27] [,28]
 [1,]     1     1     1
 [2,]     1     1     1
 [3,]     1     1     1
 [4,]     1     1     1
 [5,]     1     1     1
 [6,]     1     1     1
 [7,]     1     1     1
 [8,]     1     1     1
 [9,]     1     1     1
[10,]     1     1     1
[11,]     1     1     1
[12,]     1     1     1
[13,]     1     1     1
[14,]     1     1     1
[15,]     1     1     1
[16,]     1     1     1
[17,]     1     1     1
[18,]     1     1     1
[19,]     1     1     1
[20,]     1     1     1
[21,]     1     1     1
[22,]     1     1     1
[23,]     1     1     1
[24,]     1     1     1
[25,]     1     1     1
[26,]     1     1     1
[27,]     1     1     1
[28,]     1     1     1

\[ \mathbf{J} = \mathbf{j} \space \mathbf{j}' = \begin{bmatrix} 1 \\ 1 \\ \vdots \\1 \end{bmatrix} \begin{bmatrix} 1 & 1 & \dots & 1 \end{bmatrix} = \begin{bmatrix} 1 & 1 & \dots & 1 \\ 1 & 1 & \dots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \dots & 1 \end{bmatrix} \]

A seguir, calcularemos a matriz de variâncias e covariâncias amostrais, dada pela equação:

\[\mathbf{\Sigma} = \frac{1}{n-1} \mathbf{Y}'(\mathbf{I} - \frac{1}{n}J) \mathbf{Y}\]

Sigma <- (1 / (n - 1)) * t(Y) %*% (In - (1/n) * Jnn) %*% Y
Sigma
         North     East    South     West
North 290.4061 223.7526 288.4378 226.2712
East  223.7526 219.9299 229.0595 171.3743
South 288.4378 229.0595 350.0040 259.5410
West  226.2712 171.3743 259.5410 226.0040

A função t() realiza a transposição de uma matriz ou vetor. Já o operador %*% realiza a multiplicação entre duas matrizes ou vetores conformes.

No R, temos a função cov() que realiza o cálculo da matriz de variâncias e covariâncias. Para isso, basta declarar dentro da função a matriz desejada.

cov(Y)
         North     East    South     West
North 290.4061 223.7526 288.4378 226.2712
East  223.7526 219.9299 229.0595 171.3743
South 288.4378 229.0595 350.0040 259.5410
West  226.2712 171.3743 259.5410 226.0040

\[ \mathbf{\Sigma} = \begin{bmatrix} \sigma^2_1 & \sigma_{12} & \sigma_{13} & \dots & \sigma_{1p} \\ \sigma_{21} & \sigma^2_2 & \sigma_{23} & \dots & \sigma_{2p} \\ \sigma_{31} & \sigma_{32} & \sigma^2_3 &\dots & \sigma_{p3} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \sigma_{p1} & \sigma_{p2} & \sigma_{p3} & \dots & \sigma^2_p \end{bmatrix} \]

Os elementos da diagonal principal são as variâncias e os demais elementos, as covariâncias. Note que a matriz de variâncias e covariâncias é simétrica.

1.3 Matriz de Correlações

Para calcular a matriz de correlação (\(\mathbf{\rho}_{ij}\)), utilizamos a seguinte expressão:

\[\mathbf{\rho}_{ij} = \mathbf{D}_{\sigma}^{-1} \mathbf{\Sigma} \mathbf{D}_{\sigma}^{-1}\]

em que \(\mathbf{D}_{\sigma}\) é uma matriz diagonal com a raiz quadrada das variâncias, ou seja, a raiz quadrada da diagonal da matriz de variâncias e covariâncias (\(\mathbf{\Sigma}\)).

D <- sqrt(diag(Sigma))
D
   North     East    South     West 
17.04131 14.83003 18.70839 15.03343 
corr <- solve(diag(D)) %*% Sigma %*% solve(diag(D))
corr
          [,1]      [,2]      [,3]      [,4]
[1,] 1.0000000 0.8853667 0.9047173 0.8832188
[2,] 0.8853667 1.0000000 0.8256001 0.7686801
[3,] 0.9047173 0.8256001 1.0000000 0.9228082
[4,] 0.8832188 0.7686801 0.9228082 1.0000000

A função sqrt() realiza a operação raiz quadrada. Já a solve(), calcula a inversa de uma matriz.

No R, temos a função cor() que realiza o cálculo da matriz de correlação. Novamente, basta declarar a matriz dentro da função.

cor(Y)
          North      East     South      West
North 1.0000000 0.8853667 0.9047173 0.8832188
East  0.8853667 1.0000000 0.8256001 0.7686801
South 0.9047173 0.8256001 1.0000000 0.9228082
West  0.8832188 0.7686801 0.9228082 1.0000000

\[ \mathbf{\rho} = \begin{bmatrix} 1 & \rho_{12} & \rho_{13} & \dots & \rho_{1p} \\ \rho_{21} & 1 & \rho_{23} & \dots & \rho_{2p} \\ \rho_{31} & \rho_{32} & 1 &\dots & \rho_{p3} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \rho_{p1} & \rho_{p2} & \rho_{p3} & \dots & 1 \end{bmatrix} \]

Por fim, a partir da matriz de correlação (\(\mathbf{\rho}_{ij}\)), podemos retornar para a matriz de variâncias e covariâncias (\(\mathbf{\Sigma}\)) a partir da seguinte equação:

\[ \mathbf{\Sigma} = \mathbf{D}_{\sigma} \mathbf{\rho}_{ij} \mathbf{D}_{\sigma} \]

Verifica <- diag(D) %*% corr %*% diag(D)
Verifica
         [,1]     [,2]     [,3]     [,4]
[1,] 290.4061 223.7526 288.4378 226.2712
[2,] 223.7526 219.9299 229.0595 171.3743
[3,] 288.4378 229.0595 350.0040 259.5410
[4,] 226.2712 171.3743 259.5410 226.0040
p = ncol(Y);
n = nrow(Y);
In = I(n);
jn = j(n,1,1);
Jnn = J(n,n,1);
Sigma = (1/(n-1))*t(Y)*(In-(1/n)*Jnn)*Y;
D = sqrt(diag(Sigma));
corr = inv(D)*Sigma*inv(D);
Verifica = D*corr*D;
title 'Matriz de variâncias e covariâncias amostrais utilizando proc iml';
print ,,Sigma[format=8.4],, 'Matriz de correlações:' ,, corr[format=8.5],, Verifica[format=8.4];

1.4 Distância de Mahalanobis (Distância padronizada)

Primeiramente, calcularemos o vetor de médias (\(\mathbf{\mu}\)) da matriz \(\mathbf{Y}\).

\[\mathbf{\mu} = \frac{1}n \mathbf{j}' \mathbf{Y}\]

mi <- (1/n) * t(jn) %*% Y
mi
        North     East    South     West
[1,] 50.53571 46.17857 49.67857 45.17857

Com o vetor de médias (\(\mathbf{\mu}\)), calcularemos a distância de Mahalanobis (\(DM\)), dada pela seguinte expressão:

\[ DM = (\mathbf{y} - \mathbf{\mu})' \mathbf{\Sigma} (\mathbf{y} - \mathbf{\mu}) \]

DM2 <- rep(0, n)
for (i in 1:n) {
  yi <- Y[i,]
  DM <- as.numeric((yi - mi) %*% solve(Sigma) %*% t(yi - mi))
  DM2[i] <- DM
}
DM2
 [1]  7.619457  2.509622  2.714316  2.521244  1.744186  3.069220  2.212975
 [8]  4.114008  2.800802  3.315503  2.099698  5.891095  1.062421  1.691059
[15]  8.996903 10.409160  4.075630  8.576964  7.124169  1.434898  1.086315
[22]  1.372791  2.110873  3.913168  1.647245  4.667263  5.412107  3.806908

No R, podemos utilizar a função mahalanobis() para calcular a distância de Mahalanobis. Como argumentos, temos:

  • x =: matriz utilizada para o cálculo;

  • center =: o vetor de médias (\(\mu\));

  • cov =: a matriz de variâncias e covariâncias (\(\Sigma\)).

mahalanobis(x = Y, center = mi, cov = Sigma)
 [1]  7.619457  2.509622  2.714316  2.521244  1.744186  3.069220  2.212975
 [8]  4.114008  2.800802  3.315503  2.099698  5.891095  1.062421  1.691059
[15]  8.996903 10.409160  4.075630  8.576964  7.124169  1.434898  1.086315
[22]  1.372791  2.110873  3.913168  1.647245  4.667263  5.412107  3.806908

Ordenando os valores do vetor da distância de Mahalanobis, temos:

rank <- rank(DM2)
data.frame(Y, DM2, rank)
   North East South West       DM2 rank
1     72   66    76   77  7.619457   25
2     60   53    66   63  2.509622   11
3     56   57    64   58  2.714316   13
4     41   29    36   38  2.521244   12
5     32   32    35   36  1.744186    7
6     30   35    34   26  3.069220   15
7     39   39    31   27  2.212975   10
8     42   43    31   25  4.114008   20
9     37   40    31   25  2.800802   14
10    33   29    27   36  3.315503   16
11    32   30    34   28  2.099698    8
12    63   45    74   63  5.891095   23
13    54   46    60   52  1.062421    1
14    47   51    52   43  1.691059    6
15    91   79   100   75  8.996903   27
16    56   68    47   50 10.409160   28
17    79   65    70   61  4.075630   19
18    81   80    68   58  8.576964   26
19    78   55    67   60  7.124169   24
20    46   38    37   38  1.434898    4
21    39   35    34   37  1.086315    2
22    32   30    30   32  1.372791    3
23    60   50    67   54  2.110873    9
24    35   37    48   39  3.913168   18
25    39   36    39   31  1.647245    5
26    50   34    37   40  4.667263   21
27    43   37    39   50  5.412107   22
28    48   54    57   43  3.806908   17

A observação 13 apresenta a menor distância, enquanto a 16, a maior distância de Mahalanobis.

mi = (1/n)*t(jn)*y;
print 'Vetor de médias:' mi[format=5.2],,;
DM2 = j(n,1,0);
i=1;
do while (i<=n);
yi= Y[i,];
DM = (yi-mi)*inv(Sigma)*t(yi-mi);
DM2[i] = DM;
i=i+1;
end;

rank = rank(DM2);
print
'-----------------------------------------------------------------',
'Distância de Mahalanobis de cada ponto (y) ao vetor de médias(mi)',
'-----------------------------------------------------------------';
print ,,Y ' ' DM2[format=8.4] ' ' rank;
quit;

proc corr cov data=cork;
title 'Matriz de variâncias e covariâncias utilizando proc corr';
var north east south west;
run;