In [1]:
# rm(list=ls()) 
options(OutDec = ",")
#==============================================================================
# Exemplo
#==============================================================================
SIGMA  <- matrix(c( 1,-2,0,-2,5,0,0,0,2),3,3,T)
print(SIGMA ) # matriz simetrica e positiva definida
     [,1] [,2] [,3]
[1,]    1   -2    0
[2,]   -2    5    0
[3,]    0    0    2
In [2]:
#==============================================================================
# Decomposicao em valores singulares
#==============================================================================
W      <- eigen(SIGMA)   
print(W)
eigen() decomposition
$values
[1] 5,8284271 2,0000000 0,1715729

$vectors
           [,1] [,2]      [,3]
[1,] -0,3826834    0 0,9238795
[2,]  0,9238795    0 0,3826834
[3,]  0,0000000    1 0,0000000

In [3]:
#==============================================================================
# Autovalores
#==============================================================================
lambda <- W$values  
print(diag(lambda))  # matriz diagonal dos autovalores
         [,1] [,2]      [,3]
[1,] 5,828427    0 0,0000000
[2,] 0,000000    2 0,0000000
[3,] 0,000000    0 0,1715729
In [4]:
#==============================================================================
# Autovetores
#==============================================================================
P      <- W$vectors
print(P)            # matriz com autovetores por coluna
           [,1] [,2]      [,3]
[1,] -0,3826834    0 0,9238795
[2,]  0,9238795    0 0,3826834
[3,]  0,0000000    1 0,0000000
In [5]:
#==============================================================================
# Proporcao acumulada da variacao total
#==============================================================================
print(lambda/sum(lambda))
[1] 0,72855339 0,25000000 0,02144661
In [6]:
#==============================================================================
# correlacao de Y_j com as variaveis X's
#==============================================================================
sigma <- sqrt(diag(SIGMA))  #Desvios padrao de X_1, X_2 e X_3
print("==== Correlação de Y_1 com X1, X2 ou X_3 ====")
print(P[,1]*sqrt(lambda[1])/sigma) 
print("==== Correlação de Y_2 com X1, X2 ou X_3 ====")
print(P[,2]*sqrt(lambda[2])/sigma)
print("==== Correlação de Y_3 com X1, X2 ou X_3 ====")
print(P[,3]*sqrt(lambda[3])/sigma)
[1] "==== Correlação de Y_1 com X1, X2 ou X_3 ===="
[1] -0,9238795  0,9974842  0,0000000
[1] "==== Correlação de Y_2 com X1, X2 ou X_3 ===="
[1] 0 0 1
[1] "==== Correlação de Y_3 com X1, X2 ou X_3 ===="
[1] 0,38268343 0,07088902 0,00000000