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")