In [1]:
# rm(list=ls()) 
options(OutDec = ",")
#==============================================================================
# Exemplo 
#==============================================================================
# Dados socioeconomicos em d06_censitarios.txt
#==============================================================================
dados  <- read.table("../dados/d06_censitarios.txt",header=F,sep="	",# Tab
          col.names=c("pop","prof","emprego","funcpub","casa"))
print(head(dados))
   pop  prof emprego funcpub casa
1 2,67  5,71   69,02    30,3 1,48
2 2,25  4,37   72,98    43,3 1,44
3 3,12 10,27   64,94    32,0 2,11
4 5,14  7,44   71,29    24,5 1,85
5 5,54  9,25   74,94    31,0 2,23
6 5,04  4,84   53,61    48,2 1,60
In [2]:
#==============================================================================
# Estatísticas
#==============================================================================
print("==== Médias ====")
print(round(apply(dados,2,"mean"),digits=2))
print("==== Covariâncias ====")
print(round(cov(dados), digits=3))
print("==== Médias ====")
print(round(cor(dados), digits=2))
[1] "==== Médias ===="
    pop    prof emprego funcpub    casa 
   4,47    3,96   71,42   26,91    1,64 
[1] "==== Covariâncias ===="
           pop   prof emprego funcpub   casa
pop      3,397 -1,102   4,306  -2,078  0,027
prof    -1,102  9,673  -1,513  10,953  1,203
emprego  4,306 -1,513  55,626 -28,937 -0,044
funcpub -2,078 10,953 -28,937  89,067  0,957
casa     0,027  1,203  -0,044   0,957  0,319
[1] "==== Médias ===="
          pop  prof emprego funcpub  casa
pop      1,00 -0,19    0,31   -0,12  0,03
prof    -0,19  1,00   -0,07    0,37  0,69
emprego  0,31 -0,07    1,00   -0,41 -0,01
funcpub -0,12  0,37   -0,41    1,00  0,18
casa     0,03  0,69   -0,01    0,18  1,00
In [3]:
#==============================================================================
# Analise de componentes principais via funcao 'prcomp' do R
#==============================================================================
pcvar  <- prcomp(dados,scale=F)
P      <- pcvar$rotation 
sdev   <- pcvar$sdev  # raiz quadrada dos autovalores
print(pcvar)
print("==== Resumo ====")
print(summary(pcvar))
Standard deviations (1, .., p=5):
[1] 10,3448177  6,2985820  2,8932449  1,6934798  0,3933104

Rotation (n x k) = (5 x 5):
                 PC1         PC2         PC3         PC4          PC5
pop      0,038887287 -0,07114494  0,18789258  0,97713524 -0,057699864
prof    -0,105321969 -0,12975236 -0,96099580  0,17135181 -0,138554092
emprego  0,492363944 -0,86438807  0,04579737 -0,09104368  0,004966048
funcpub -0,863069865 -0,48033178  0,15318538 -0,02968577  0,006691800
casa    -0,009122262 -0,01474342 -0,12498114  0,08170118  0,988637470
[1] "==== Resumo ===="
Importance of components:
                          PC1    PC2     PC3     PC4     PC5
Standard deviation     10,345 6,2986 2,89324 1,69348 0,39331
Proportion of Variance  0,677 0,2510 0,05295 0,01814 0,00098
Cumulative Proportion   0,677 0,9279 0,98088 0,99902 1,00000
In [4]:
#==============================================================================
# Correlacoes de Y_j com as variaveis X's
#==============================================================================
s  <- apply(dados,2,"sd")        # desvios padrao de X_1,...,X_5 
print(round(P[,1]*sdev[1]/s,3))  # Correl. de Y_1 com X1,..., ou X_5
print(round(P[,2]*sdev[2]/s,3))  # Correl. de Y_2 com X1,..., ou X_5
print(round(P[,3]*sdev[3]/s,3))  # Correl. de Y_3 com X1,..., ou X_5
print(round(P[,4]*sdev[4]/s,3))  # Correl. de Y_3 com X1,..., ou X_5
print(round(P[,5]*sdev[5]/s,3))  # Correl. de Y_3 com X1,..., ou X_5
    pop    prof emprego funcpub    casa 
  0,218  -0,350   0,683  -0,946  -0,167 
    pop    prof emprego funcpub    casa 
 -0,243  -0,263  -0,730  -0,321  -0,165 
    pop    prof emprego funcpub    casa 
  0,295  -0,894   0,018   0,047  -0,641 
    pop    prof emprego funcpub    casa 
  0,898   0,093  -0,021  -0,005   0,245 
    pop    prof emprego funcpub    casa 
 -0,012  -0,018   0,000   0,000   0,689 
In [5]:
#==============================================================================
# Scree plot
#==============================================================================
par(mfrow=c(1,1),lwd=2.0,cex.lab=1.5,cex.axis=1.5,
     lab=c(5,7,5),mar=c(4.5,4.5,1,1),xpd=T,cex.main=2.0,bty="n")
plot(1:5,sdev^2,type="l",xlab=expression(j),ylab="Variâncias",lwd=3,
    xlim=c(1,5),ylim=c(0,120))
points(1:5,sdev^2,pch=16,cex=2,col="blue")
No description has been provided for this image