Prof. Responsável: Prof. Dr. Júlio Celso Borello Vargas
August 22, 2023
Serão utilizados os pacotes FactoMineR, factoextra, psych, GPArotation, ggcorrplot e dendextend.
Use os comandos:
#install.packages('FactoMineR')
#install.packages('factoextra')
#install.packages('psych')
#install.packages('GPArotation')
#install.packages('ggcorrplot')
#install.packages('dendextend')
library(FactoMineR)
library(factoextra)
library(psych)
library(GPArotation)
library(ggcorrplot)
library(dendextend)Serão usados os bancos de dados “PIETROBELLI_2020.csv” e “Fatorial.csv”. Para usá-los, coloque o arquivo na mesma pasta do projeto, ou, caso use o Posit.cloud, clique em “upload” e selecione o arquivo.
pietrobelli = read.csv2('PIETROBELLI_2020.csv', fileEncoding = "latin1")
fatorial = read.csv2('Fatorial.csv', fileEncoding = "latin1")1.Análise de Agrupamentos/aglomerados (“cluster”):
Tem como objetivo dividir objetos (variáveis ou itens) em grupos de forma que os elementos guardem algumas similidaridades entre si conforme estão mais próximos uns dos outros.
cluster <- pietrobelli[, 7:18]
rownames(cluster) <- pietrobelli$id_name
dist <- dist(cluster[,1:12], method = "euclidean")
hc <- hclust(dist, method="ward.D")
fviz_dend(hc, h = max(hc$height)*0.6, cex = 0.5, color_labels_by_k = TRUE, ggtheme = theme_bw(), lwd = 0.6)2.Análise de Componentes Principais (PCA):
Esse método é válido na tentativa de diminuir a dimensionalidade dos dados, dividindo sua variabilidade em componentes.
Primeiro observamos a correlação entre as variáveis. Caso haja variáveis muito correlacionadas, podemos retirá-las, pois não vão acrescentar muito em explicação para o PCA. Neste caso, não parece haver correlações tão importantes.
ggcorrplot(cor(pietrobelli[, 7:18]), type = "full", legend.title = "Índice de Correlação", lab_size = 3, outline.color = "black", ggtheme = theme_get()) + ggtitle("Matriz de Correlações") + theme(plot.title = element_text(hjust = 0.5),
axis.text.x = element_text(face = "bold"), axis.text.y = element_text(face = "bold"))Como os dados têm escalas diferentes, utilizamos a matriz de correlações ao invés de covariâncias, e dessa forma impedimos que variáveis de escala maior acabem enviesando o PCA (por isso o argumento scale = TRUE). O gráfico mostra o quanto cada componente explica da variabilidade dos dados.
pca <- prcomp(pietrobelli[, 7:18], scale = TRUE, center = TRUE)
fviz_eig(pca, geom = "bar", bar_width = 0.7, title = "Variância explicada por Componente", xlab = "Componentes", ylab = "Proporção da Variância (%)", barfill = "#1F3552", barcolor = "black") +theme(plot.title = element_text(size = 18, hjust = 0.5, margin = margin(b = 15)), axis.title = element_text(size = 14), axis.text = element_text(size = 12), legend.position = "none") + scale_y_continuous(breaks = c(0, 10, 20, 30, 40, 50))Apesar de estar um pouco poluído, podemos reparar em como os grupos se comportam em relação as demais variáveis. As cidades europeias estão agrupadas no autovetor da “média de idade” e “expectativa de vida”. Já as cidades da América Latina estão mais agrupadas em torno da “taxa de mortalidade”, “taxa de natalidade” e “crescimento populacional urbano”.
fviz_pca_biplot(pca, label="var", habillage = pietrobelli$id_cont, addEllipses=TRUE, ellipse.level=0.95)3.Análise Fatorial (FA):
A análise fatorial é um método que procura definir, em um estudo com muitas variáveis, conjuntos de variáveis de alta correlação, chamados de fatores. Assim como o PCA, tem como objetivo diminuir a dimensionalidade dos dados e ainda conseguir explicar a variabilidade deles.
Primeiro definimos a quantidade de fatores. Nesse caso, temos que os 4 primeiros fatores explicam 83,6% da variabilidade, e, além disso, apenas os 4 primeiros autovalores são maiores que 1.
## [1] 6.38764380 1.48846472 1.10447808 1.05164512 0.63250779 0.36695649
## [7] 0.30158363 0.21291441 0.15571561 0.13792457 0.08512934 0.07503646
## [1] 0.5323036 0.6563424 0.7483822 0.8360193 0.8887283 0.9193080 0.9444400
## [8] 0.9621828 0.9751591 0.9866529 0.9937470 1.0000000
grafico_autovalor=data.frame(autovalor = seq(1:length(eigen(R)$values)), var_explicada = eigen(R)$values)
ggplot(grafico_autovalor)+
geom_col(aes(x = autovalor, y = var_explicada))## Principal Components Analysis
## Call: principal(r = fatorial, nfactors = 4, residuals = TRUE, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
## PC1 PC2 PC3 PC4 h2 u2 com
## Histórico.Escolar 0.73 0.34 -0.33 -0.10 0.76 0.243 1.9
## Aparência 0.72 -0.27 -0.16 0.40 0.78 0.223 2.0
## Comunicação 0.71 -0.45 0.25 -0.23 0.82 0.177 2.2
## Adaptação.à.Empresa 0.80 -0.06 0.05 -0.43 0.83 0.169 1.5
## Experiência 0.64 0.60 -0.18 0.04 0.81 0.186 2.2
## Adaptação.ao.Trabalho 0.81 0.08 -0.03 -0.37 0.80 0.198 1.4
## Carta 0.63 0.33 0.65 0.13 0.94 0.056 2.6
## Simpatia 0.74 -0.30 -0.12 0.35 0.77 0.234 1.8
## Organização 0.71 -0.54 0.14 -0.25 0.87 0.129 2.2
## Potencial 0.81 0.29 -0.33 -0.17 0.88 0.120 1.7
## Currículo 0.71 0.30 0.47 0.34 0.93 0.074 2.7
## Autoconfiança 0.72 -0.26 -0.29 0.41 0.84 0.161 2.3
##
## PC1 PC2 PC3 PC4
## SS loadings 6.39 1.49 1.10 1.05
## Proportion Var 0.53 0.12 0.09 0.09
## Cumulative Var 0.53 0.66 0.75 0.84
## Proportion Explained 0.64 0.15 0.11 0.10
## Cumulative Proportion 0.64 0.79 0.90 1.00
##
## Mean item complexity = 2
## Test of the hypothesis that 4 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.05
## with the empirical chi square 18.26 with prob < 0.79
##
## Fit based upon off diagonal values = 0.99
No exemplo anterior, vemos pela coluna do h2 o quanto os fatores explicam estas variáveis. Neste caso, explicam bastante, considerando que o menor valor é 75%.