A Análise de Componentes Principais (PCA) é uma técnica estatística amplamente utilizada para reduzir a dimensionalidade de conjuntos de dados complexos, preservando as informações mais relevantes. Essa redução é feita por meio de vetores que identificam as direções que capturam a maior variabilidade nos dados. Especificamente, o PCA transforma um conjunto de variáveis possivelmente correlacionadas em um novo conjunto de variáveis não correlacionadas (os componentes principais) que são combinações lineares das variáveis originais.
Os primeiros componentes principais retêm a maior parte da variância total do conjunto de dados, enquanto os componentes subsequentes capturam variações residuais, geralmente menos relevantes. Ao selecionar apenas os primeiros componentes, é possível representar os dados com menor dimensionalidade, reduzindo ruído e redundâncias, sem perder a essência da informação. Por exemplo, reduzir de um plano multidimensional (\(R^{n}\)) para um plano bidimensional (\(R^{2}\))
Nas Relações Internacionais, o PCA auxilia o analista na interpretação de grandes volumes de dados que possuem características estatísticas distintas (natureza quantitativa vs. qualitativa ou de distintas escalas), mas que compartilham aspectos fundamentais.
No desenvolvimento econômico e social, a técnica é amplamente empregada na construção de indicadores compostos que avaliam o progresso de países e regiões, apoiando a formulação de políticas públicas.
Em contextos de conflitos e guerras, o PCA auxilia na análise de dados sobre deslocamentos populacionais, impactos econômicos e padrões de violência, ajudando organizações internacionais a prever crises e a alocar melhor os recursos humanitários.
Na área de direitos humanos, por sua vez, a técnica permite identificar padrões em registros de violações documentadas em relatórios e redes sociais, viabilizando respostas mais rápidas e eficazes a crises humanitárias.
Em questões relacionadas a raça e gênero, o PCA é utilizado para analisar disparidades salariais, mapear desigualdades no acesso à saúde e compreender dinâmicas de discriminação no ambiente de trabalho.
No campo da cibersegurança, o PCA pode ser empregado para detectar comportamentos anômalos em redes, prevenir ataques cibernéticos e analisar grandes volumes de dados com o objetivo de combater crimes digitais, como o assédio online e a disseminação de discurso de ódio.
No monitoramento da imprensa, o PCA pode ser utilizado para identificar tendências na cobertura midiática, detectar vieses jornalísticos e analisar a propagação de desinformação.
Para realizar uma PCA é preciso, primeiro, compreender a natureza do conjunto de dados.
library(readxl)
df <- read_excel("D:/Documentos/Fabio/OneDrive/Documentos/Universidade/UFSC/Disciplinas/Análise de Dados para RI/Exercicios_ADRI/exercicio_PCA/pca_cluster_analysis.xlsx")
head(df, 15)
O que representa cada variável?
| Abr | Indicator Name | Long definition |
|---|---|---|
| CO2 | CO2 emissions (metric tons per capita) | Carbon dioxide emissions are those stemming from the burning of fossil fuels and the manufacture of cement. |
| Corruption | Control of Corruption: Estimate | Control of Corruption captures perceptions of the extent to which public power is exercised for private gain. |
| GDP_growth | GDP growth (annual %) | Annual percentage growth rate of GDP at market prices based on constant local currency. |
| GovEffectiveness | Government Effectiveness: Estimate | Government Effectiveness captures perceptions of the quality of public services and policy implementation. |
| Temperature | Land Surface Temperature | |
| Political_Stability | Political Stability and Absence of Violence/Terrorism: Estimate | Measures perceptions of the likelihood of political instability and/or politically motivated violence. |
| Pop_density | Population density (people per sq. km of land area) | Population density is midyear population divided by land area in square kilometers. |
| Rule | Rule of Law: Estimate | Rule of Law captures perceptions of confidence in the rules of society, contract enforcement, property rights, and the courts. |
| Renewable_energy | Renewable energy consumption (% of total final energy consumption) | Renewable energy consumption is the share of renewables energy in total final energy consumption. |
| Water_stress | Level of water stress: freshwater withdrawal as a proportion of available freshwater resources | The ratio between total freshwater withdrawn and total renewable freshwater resources. |
| Life_expectancy | Life expectancy at birth, total (years) | Number of years a newborn infant would live if current mortality patterns remained unchanged throughout life. |
| ge_education | Government expenditure on education, total (% of government expenditure) | Government expenditure on education, expressed as a percentage of total government expenditure. |
| Natural_resources | Adjusted savings: natural resources depletion (% of GNI) | Sum of net forest depletion, energy depletion, and mineral depletion. |
Rotular o conjunto de dados na Análise de Componentes Principais permite ao analista garantir que a interpretação correta dos resultados. Os rótulos preservam o contexto das variáveis originais, permitindo identificar quais delas mais contribuem para cada componente principal. Além disso, o uso adequado de rótulos facilita a comunicação visual dos resultados, tornando os gráficos e tabelas mais compreensíveis. Também possibilita uma comparação mais eficaz entre diferentes condições ou períodos de tempo.
Para rotular os dados, pode-se utilizar a função label do pacto Hmisc.
library(Hmisc)
label(df$CO2) <- "CO2 emissions (metric tons per capita)"
label(df$Corruption) <- "Control of Corruption: Estimate gives the country's score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 (High level) to 2.5 (Low level)."
label(df$GDP_growth) <- "GDP growth (annual %)"
label(df$GovEffectiveness) <- "Government Effectiveness: Estimate gives the country's score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 (Low effective) to 2.5 (High effective)."
label(df$Temperature) <- "Land Surface Temperature in Celsius"
label(df$Political_Stability) <- "Political Stability and Absence of Violence/Terrorism: Estimate gives the country's score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 (High instability) to 2.5 (Low instability)."
label(df$Pop_density) <- "Population density (people per sq. km of land area)"
label(df$Rule) <- "Rule of Law: Estimate gives the country's score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 (Low confidence) to 2.5 (High confidence)."
label(df$Renewable_energy) <- "Renewable energy consumption (% of total final energy consumption)"
label(df$Water_stress) <- "Level of water stress: freshwater withdrawal as a proportion of available freshwater resources"
label(df$Life_expectancy) <- "Life expectancy at birth, total (years)"
label(df$ge_education) <- "Government expenditure on education, total (% of government expenditure)"
label(df$Natural_resources) <- "Adjusted savings: natural resources depletion (% of GNI)"
É importante verificar se no conjunto de dados há dados ausentes.
Isso é possível através da seguinte função:
colSums(is.na(df))
## Time Country Name Country Code CO2
## 0 0 0 36
## Corruption GDP_growth GovEffectiveness Temperature
## 49 81 54 31
## Political_Stability Pop_density Rule Renewable_energy
## 11 15 10 47
## Water_stress Life_expectancy ge_education Natural_resources
## 386 71 1141 330
## Income Group Region
## 0 0
Por que o analista deve se preocupar com os dados ausentes?
Dados ausentes podem comprometer seriamente a PCA, afetando tanto a precisão quanto a interpretabilidade dos resultados.
Um dos principais desafios é a perda de informação. Observações com valores ausentes podem ser descartadas, o que reduz a qualidade da análise e pode levar a conclusões distorcidas — especialmente em estudos internacionais com dados econômicos ou sociais.
Outro problema é o viés na análise. Quando os dados ausentes não estão distribuídos aleatoriamente, os componentes principais gerados podem não representar adequadamente o conjunto de dados. Isso é preocupante em estudos sobre desigualdade racial ou de gênero, onde a ausência de dados pode mascarar padrões relevantes e reais.
Além disso, a presença de dados ausentes compromete o cálculo da matriz de covariância, base fundamental para a extração dos componentes principais na PCA, reduzindo sua confiabilidade. Isso é crítico em áreas como cibersegurança, onde falhas na identificação de padrões podem ter consequências graves.
Também há impacto na visualização dos dados. Como a PCA é amplamente utilizada para reduzir a dimensionalidade e facilitar a representação gráfica, valores ausentes dificultam a interpretação visual, como no monitoramento da imprensa, onde a falta de dados pode impedir a detecção de tendências e vieses. Para mitigar esses problemas, podem ser adotadas técnicas como imputação de dados ou métodos estatísticos mais robustos, ajustados ao padrão de ausência dos dados.
Para lidar com dados ausentes na PCA, diversas estratégias podem ser adotadas.
Entre as técnicas de imputação, é comum substituir os valores faltantes pela média ou mediana da variável, aplicar interpolação com base em padrões observados ou utilizar modelos preditivos, como algoritmos de aprendizado de máquina, para estimar os dados ausentes.
Quando a quantidade de dados faltantes é pequena, também é possível excluir linhas com valores ausentes ou, em casos mais extremos, remover variáveis inteiras com grande volume de dados faltantes.
Além dessas abordagens básicas, existem métodos avançados como o K-Nearest Neighbors (KNN), que preenche valores com base em observações semelhantes; o algoritmo Expectation-Maximization (EM), que utiliza estimativas probabilísticas; e a imputação múltipla (Multiple Imputation), que gera diferentes versões do conjunto de dados para refletir a incerteza associada aos valores imputados.
No exemplo que estamos desenvolvendo, vamos substituir no dataframe (df) os valores ausentes (NA) de cada variável pela sua respectiva Mediana.
median_CO2 <- median(df$CO2, na.rm = TRUE) #calcula a mediana da variáveis desconsiderando os valores ausentes.
df$CO2[is.na(df$CO2)] <- median_CO2 #Insere o valor da mediana no lugar dos valores ausentes.
median_Corruption <- median(df$Corruption, na.rm = TRUE)
df$Corruption[is.na(df$Corruption)] <- median_Corruption
median_GDP_growth <- median(df$GDP_growth, na.rm = TRUE)
df$GDP_growth[is.na(df$GDP_growth)] <- median_GDP_growth
median_GovEffectiveness <- median(df$GovEffectiveness, na.rm = TRUE)
df$GovEffectiveness[is.na(df$GovEffectiveness)] <- median_GovEffectiveness #Cansou? Há uma forma mais simples de realizar todas essas substituições automaticamente.
median_Temperature <- median(df$Temperature, na.rm = TRUE)
df$Temperature[is.na(df$Temperature)] <- median_Temperature
median_Political_Stability <- median(df$Political_Stability, na.rm = TRUE)
df$Political_Stability[is.na(df$Political_Stability)] <- median_Political_Stability
median_Pop_density <- median(df$Pop_density, na.rm = TRUE)
df$Pop_density[is.na(df$Pop_density)] <- median_Pop_density
median_Rule <- median(df$Rule, na.rm = TRUE)
df$Rule[is.na(df$Rule)] <- median_Rule
median_Renewable_energy <- median(df$Renewable_energy, na.rm = TRUE)
df$Renewable_energy[is.na(df$Renewable_energy)] <- median_Renewable_energy
median_Water_stress <- median(df$Water_stress, na.rm = TRUE)
df$Water_stress[is.na(df$Water_stress)] <- median_Water_stress
median_Life_expectancy <- median(df$Life_expectancy, na.rm = TRUE)
df$Life_expectancy[is.na(df$Life_expectancy)] <- median_Life_expectancy
median_ge_education <- median(df$ge_education, na.rm = TRUE)
df$ge_education[is.na(df$ge_education)] <- median_ge_education
median_Natural_resources <- median(df$Natural_resources, na.rm = TRUE)
df$Natural_resources[is.na(df$Natural_resources)] <- median_Natural_resources
Refaça a conferencia.
colSums(is.na(df))
## Time Country Name Country Code CO2
## 0 0 0 0
## Corruption GDP_growth GovEffectiveness Temperature
## 0 0 0 0
## Political_Stability Pop_density Rule Renewable_energy
## 0 0 0 0
## Water_stress Life_expectancy ge_education Natural_resources
## 0 0 0 0
## Income Group Region
## 0 0
Se você cansa rápido ou está diante de um conjunto de dados que é muito grande e possuir inúmeras variáveis, uma forma mais simples e dinâmica de fazer esse processo é escrevendo a seguinte função:
fill_missing_with_median <- function(df) {
for (col in names(df)) { # Identifica cada variável
if (is.numeric(df[[col]])) { # Verifica se a variável é numérica
df[[col]][is.na(df[[col]])] <- median(df[[col]], na.rm = TRUE) # Calcula a mediana para cada variável
}
}
return(df)
}
df <- fill_missing_with_median(df) #Insere a mediana de acordo com a respectiva variável
Neste caso, também não deixei de conferir se os valores ausentes foram substituídos.
colSums(is.na(df))
A PCA pode ser aplicada para comparar diferentes condições ou períodos de tempo, permitindo identificar mudanças estruturais nos dados ao longo dos períodos (anos).
A primeira é a PCA separada por período, que consiste em aplicar a técnica individualmente para cada intervalo de tempo e, em seguida, comparar os componentes principais obtidos. Essa aproximação é útil para observar mudanças em padrões econômicos, sociais ou ambientais ao longo do tempo.
A segunda é a PCA com dados em painel, na qual os dados de diferentes períodos são combinados em um único conjunto para uma análise global. Essa estratégia permite detectar tendências de longo prazo e padrões que se mantêm estáveis ou evoluem no tempo.
A terceira abordagem é a PCA com variáveis temporais, que incorpora o tempo diretamente como uma variável explicativa na análise, possibilitando captar a influência do tempo sobre os componentes principais.
Inicialmente, vamos separar um corte transversal com apenas um período no tempo antes do Acordo de Paris (2016), por exemplo o ano de 2003.
df_2003 <- subset(df, Time == 2003)
Dados padronizados são aqueles que foram transformados de modo a ter uma média de 0 e um desvio padrão de 1.
\[Z_{i} = \frac{X_{i} - \mu}{\sigma}\] Onde:
\(X_{ij}\) = valor original do dado i
\(\mu\) = média da variável j
\(\sigma\) = desvio padrão da variável j
Essa transformação é conhecida como normalização z-score.
Padronizar os dados é uma técnica comum em análises estatísticas porque facilita a comparação entre variáveis que podem estar em diferentes escalas ou unidades.
Na PCA a padronização dos dados evita viés causado por escalas diferentes ($ vs. %), garante que todas as variáveis contribuam igualmente e melhora a interpretação dos componentes principais (maximiza a variância)
Como ilustração, vamos padronizar o conjunto de dados e calcular a matriz de correlação entre as variáves.
df_2003p <- scale(df_2003[4:16]) #Repare que [4:16] refere-se as colunas com dados quantitativos.
head(df_2003p, 15)
## CO2 Corruption GDP_growth GovEffectiveness Temperature
## [1,] -0.72619662 -1.3314541 0.8623851 -1.17782369 0.39647016
## [2,] -0.50834363 -0.8215928 0.2868540 -0.53294677 -0.54757798
## [3,] -0.27327653 -0.6775508 0.5780241 -0.64920383 1.36159717
## [4,] 0.48556141 1.4517881 0.8383311 1.48356626 -1.72319677
## [5,] -0.58210896 -1.3223916 -0.1554051 -1.12349161 0.47232002
## [6,] 0.04277857 0.9541159 0.3823054 0.66947898 0.48423513
## [7,] -0.17454542 -0.4329432 0.8632149 0.02547884 -0.07212753
## [8,] -0.54686892 -0.6086997 1.7626601 -0.14637454 -1.34690038
## [9,] 2.28778702 2.0366161 -0.1378642 1.93075819 1.03058631
## [10,] 0.81217458 2.1079203 -0.5122817 2.09644377 -1.41601564
## [11,] -0.15175584 -1.0216781 1.1021035 -0.92216397 -0.23723010
## [12,] 0.31867737 1.5297656 -0.8966592 1.34981218 0.20711006
## [13,] 3.16083396 0.4551132 0.4206141 0.49398909 1.11652022
## [14,] -0.70307242 -1.5368370 0.1493892 -0.82277276 0.15882288
## [15,] 0.05167838 1.6231858 -0.2973034 1.48356626 0.50201336
## Political_Stability Pop_density Rule Renewable_energy Water_stress
## [1,] -2.1726572 -0.16938524 -1.5248494 0.0964079521 0.007528201
## [2,] -0.2858156 -0.10720579 -0.6781497 -0.0005950589 -0.212935871
## [3,] -1.7291054 -0.18673040 -0.5665838 -1.0776853487 0.167036396
## [4,] 1.4874506 -0.06942099 1.1041124 -0.5569835671 -0.209416036
## [5,] -0.9827746 -0.18585025 -1.4489879 1.0203697429 -0.250260980
## [6,] 0.8885652 -0.05294574 1.0859775 -1.0929333137 -0.215535134
## [7,] -0.3358271 -0.18629963 -0.7392835 -0.7419056951 -0.215325831
## [8,] 0.2604241 -0.10933248 -0.2623684 -0.7746725985 -0.064978748
## [9,] 0.9009808 -0.19561651 1.8953208 -0.8609695916 -0.219626122
## [10,] 0.9847883 -0.11741786 1.9004950 -0.3610309963 -0.211066194
## [11,] -0.9235441 -0.11643388 -0.8474165 -0.9975524266 -0.032924430
## [12,] 0.8492594 -0.17012305 1.4688947 -1.0429718966 -0.209416036
## [13,] 0.5071480 0.68413859 0.6392412 -1.0929333137 0.742708074
## [14,] -1.0908696 0.65782145 -1.1162171 0.6141899107 -0.209416036
## [15,] 0.9417743 0.30981502 1.5698841 -0.8921143711 0.233862233
## Life_expectancy ge_education Natural_resources
## [1,] -1.05170245 -0.2076550 -0.43520522
## [2,] 0.91163997 -0.2076550 -0.53134614
## [3,] 0.40456329 -0.2076550 1.44621920
## [4,] 0.46315649 -0.2076550 -0.43520522
## [5,] -1.85874292 -0.2076550 1.93894028
## [6,] 0.84228901 -0.2076550 -0.43520522
## [7,] 0.69627599 -0.1295613 -0.09352565
## [8,] 0.42012548 -0.2076550 -0.56678236
## [9,] 1.33955048 0.1530930 -0.42598696
## [10,] 1.17167550 -1.0672783 -0.55872641
## [11,] -0.06867347 -0.2076550 0.64422552
## [12,] 0.52101859 -0.2076550 -0.56961143
## [13,] 0.93200659 -0.2076550 1.64425147
## [14,] -0.06157126 0.4036786 -0.48276789
## [15,] 0.73721812 0.8397586 -0.54405327
Relembrando, a matriz de correlação mede o grau de associação entre as variáveis, ajudando a identificar padrões de dependência entre pares de variáveis.
A técnica de PCA, por sua vez, usa a matriz de correlação para calcular autovetores (direções principais dos dados) e autovalores (importância de cada componente).
Esses elementos ajudam a determinar quais componentes principais capturam mais variabilidade presentes nos dados.
Calcule a matrix de correlação entre as variáveis quantitativas padronizadas para o ano de 2003.
mc_2003 <- cor(df_2003p)
head(mc_2003, 5)
## CO2 Corruption GDP_growth GovEffectiveness
## CO2 1.00000000 0.5203271 0.04124978 0.52097079
## Corruption 0.52032713 1.0000000 -0.04842640 0.94385356
## GDP_growth 0.04124978 -0.0484264 1.00000000 0.01122136
## GovEffectiveness 0.52097079 0.9438536 0.01122136 1.00000000
## Temperature -0.17597189 -0.4168576 -0.03826195 -0.46424665
## Temperature Political_Stability Pop_density Rule
## CO2 -0.17597189 0.4111365 0.01169626 0.48190407
## Corruption -0.41685763 0.6957902 0.05497022 0.90374867
## GDP_growth -0.03826195 0.1114973 -0.02475790 -0.01312048
## GovEffectiveness -0.46424665 0.6881506 0.06472835 0.91288090
## Temperature 1.00000000 -0.3594398 -0.01523687 -0.40027308
## Renewable_energy Water_stress Life_expectancy ge_education
## CO2 -0.53289369 0.49120875 0.50920539 -0.16152521
## Corruption -0.42656531 0.08879608 0.63389653 -0.09747192
## GDP_growth -0.03127604 0.20916770 0.04245439 0.08261333
## GovEffectiveness -0.48579261 0.03051395 0.67893936 -0.09508749
## Temperature 0.23142510 0.25068353 -0.45150629 0.17021641
## Natural_resources
## CO2 0.002075462
## Corruption -0.332655436
## GDP_growth -0.167919141
## GovEffectiveness -0.370335263
## Temperature 0.250425681
Interpretação da Matriz de Correlação
A correlação entre as variáveis padronizadas CO2 e Corrupação é de 0.52, portanto indica uma relação positiva moderada.
Lembre-se que CO2 é à quantidade de dióxido de carbono emitido por cada pessoa em média, medida em toneladas métricas no pais \(x_{i}\) em 2003.
Lembre-se também que a variável Corrupção capta percepções sobre a extensão em que o poder público é exercido para ganho privado, incluindo tanto formas pequenas quanto grandes de corrupção, bem como a captura do Estado por elites e interesses privados.
A estimativa dá a pontuação do país no indicador agregado, em unidades de uma distribuição normal padrão, ou seja, variando aproximadamente de -2.5 a 2.5, onde -2.5 indica altos níveis de corrupção é 2.5 indica baixo nível de corrupção.
Portanto, a associação positiva calculada indica que a alta emissão de CO2 está associada a países com baixo nível de corrupção.
Agora, se analisamos a correlação entre CO2 e Renewable_Energy é de -0.53, observamos uma relação inversa e moderada entre as variáveis.
O resultado sugere que em contextos onde há maior uso de energia renovável, as emissões de CO2 tendem a ser menores.
E assim por diante…
Para rodar a PCA no R precisamos carregar os seguintes pacotes:
Carregar pacotes
project_packages <- c('FactoMineR',
'factoextra',
'dplyr',
'tidyverse',
'ggplot2')
lapply(project_packages, library, character.only = TRUE)
## [[1]]
## [1] "FactoMineR" "Hmisc" "readxl" "stats" "graphics"
## [6] "grDevices" "utils" "datasets" "methods" "base"
##
## [[2]]
## [1] "factoextra" "ggplot2" "FactoMineR" "Hmisc" "readxl"
## [6] "stats" "graphics" "grDevices" "utils" "datasets"
## [11] "methods" "base"
##
## [[3]]
## [1] "dplyr" "factoextra" "ggplot2" "FactoMineR" "Hmisc"
## [6] "readxl" "stats" "graphics" "grDevices" "utils"
## [11] "datasets" "methods" "base"
##
## [[4]]
## [1] "lubridate" "forcats" "stringr" "purrr" "readr"
## [6] "tidyr" "tibble" "tidyverse" "dplyr" "factoextra"
## [11] "ggplot2" "FactoMineR" "Hmisc" "readxl" "stats"
## [16] "graphics" "grDevices" "utils" "datasets" "methods"
## [21] "base"
##
## [[5]]
## [1] "lubridate" "forcats" "stringr" "purrr" "readr"
## [6] "tidyr" "tibble" "tidyverse" "dplyr" "factoextra"
## [11] "ggplot2" "FactoMineR" "Hmisc" "readxl" "stats"
## [16] "graphics" "grDevices" "utils" "datasets" "methods"
## [21] "base"
Renomear as linhas com base na coluna Country Code
Para que o pacote FactoMineR execute a PCA corretamente, é necessário renomear as linhas com base em uma coluna que identifique de forma exclusiva a unidade de observação. Ou seja, cada linha uma observação não repetida.
Isso pode ser realizado através do seguinte comando:
df_2003 <- df_2003 %>%
remove_rownames %>%
column_to_rownames(var = "Country Code") %>%
select(-Time, -`Country Name`, -Region)
head(df_2003, 10)
Executar a PCA para 2003
pca_2003 <- PCA(df_2003, scale.unit = TRUE, quali.sup = 14, graph = FALSE) #Repare que a função PCA padroniza os dados automaticamente.
summary(pca_2003)
##
## Call:
## PCA(X = df_2003, scale.unit = TRUE, quali.sup = 14, graph = FALSE)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
## Variance 5.208 1.594 1.255 1.046 0.954 0.815 0.668
## % of var. 40.065 12.265 9.657 8.049 7.341 6.269 5.141
## Cumulative % of var. 40.065 52.329 61.986 70.035 77.376 83.645 88.786
## Dim.8 Dim.9 Dim.10 Dim.11 Dim.12 Dim.13
## Variance 0.479 0.373 0.301 0.187 0.073 0.044
## % of var. 3.685 2.872 2.313 1.441 0.563 0.340
## Cumulative % of var. 92.471 95.343 97.656 99.097 99.660 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2
## AFG | 3.616 | -2.970 0.878 0.675 | 0.288 0.027 0.006 |
## ALB | 1.836 | -0.501 0.025 0.074 | -0.407 0.054 0.049 |
## DZA | 3.167 | -1.543 0.237 0.237 | 1.531 0.761 0.234 |
## AND | 3.538 | 3.106 0.959 0.770 | -0.806 0.211 0.052 |
## AGO | 3.891 | -3.553 1.256 0.834 | 0.303 0.030 0.006 |
## ATG | 2.434 | 2.017 0.405 0.687 | -0.011 0.000 0.000 |
## ARG | 1.669 | -0.115 0.001 0.005 | 0.212 0.015 0.016 |
## ARM | 2.635 | 0.379 0.014 0.021 | -0.342 0.038 0.017 |
## AUS | 4.640 | 3.861 1.483 0.692 | 0.820 0.218 0.031 |
## AUT | 4.411 | 4.011 1.601 0.827 | -0.953 0.295 0.047 |
## Dim.3 ctr cos2
## AFG 0.571 0.134 0.025 |
## ALB 0.249 0.026 0.018 |
## DZA -0.403 0.067 0.016 |
## AND 0.253 0.026 0.005 |
## AGO -0.907 0.340 0.054 |
## ATG 0.343 0.049 0.020 |
## ARG 0.375 0.058 0.051 |
## ARM 1.116 0.514 0.179 |
## AUS -0.264 0.029 0.003 |
## AUT -1.178 0.572 0.071 |
##
## Variables (the 10 first)
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3
## CO2 | 0.638 7.824 0.408 | 0.578 20.958 0.334 | -0.218
## Corruption | 0.901 15.587 0.812 | -0.089 0.501 0.008 | -0.083
## GDP_growth | 0.057 0.062 0.003 | 0.231 3.346 0.053 | 0.644
## GovEffectiveness | 0.924 16.382 0.853 | -0.123 0.949 0.015 | -0.047
## Temperature | -0.522 5.228 0.272 | 0.448 12.582 0.201 | 0.150
## Political_Stability | 0.794 12.090 0.630 | -0.094 0.552 0.009 | 0.165
## Pop_density | 0.120 0.275 0.014 | -0.031 0.061 0.001 | 0.155
## Rule | 0.920 16.244 0.846 | -0.118 0.872 0.014 | 0.027
## Renewable_energy | -0.680 8.870 0.462 | -0.272 4.628 0.074 | -0.007
## Water_stress | 0.151 0.435 0.023 | 0.874 47.882 0.763 | 0.120
## ctr cos2
## CO2 3.778 0.047 |
## Corruption 0.552 0.007 |
## GDP_growth 33.042 0.415 |
## GovEffectiveness 0.178 0.002 |
## Temperature 1.784 0.022 |
## Political_Stability 2.177 0.027 |
## Pop_density 1.910 0.024 |
## Rule 0.058 0.001 |
## Renewable_energy 0.004 0.000 |
## Water_stress 1.144 0.014 |
##
## Supplementary categories
## Dist Dim.1 cos2 v.test Dim.2 cos2 v.test
## High income | 2.659 | 2.615 0.967 10.664 | 0.177 0.004 1.303 |
## Low income | 2.929 | -2.824 0.930 -6.765 | 0.024 0.000 0.106 |
## Lower middle income | 1.424 | -1.378 0.936 -5.283 | -0.170 0.014 -1.174 |
## Upper middle income | 0.710 | -0.147 0.043 -0.544 | -0.037 0.003 -0.246 |
## Dim.3 cos2 v.test
## High income -0.350 0.017 -2.910 |
## Low income -0.212 0.005 -1.034 |
## Lower middle income 0.274 0.037 2.141 |
## Upper middle income 0.220 0.096 1.653 |
Interpretação:
Análise dos Autovalores ou Inércia (Eigenvalues)
Os autovalores indicam a quantidade de variância explicada por cada componente principal.
Observe as colunas da tabela fornecida:
Dimensões (ou componentes principais)
Dimensão 1:
Variance: 5.208
% of var.: 40.065%
Cumulative % of var.: 40.065%
A Dimensão 1 (ou compomente 1) explica 40.065% da variância total nos dados.
Este é o componente que mais contribui para explicar as variações observadas.
Dimensão 2:
Variance: 1.594
% of var.: 12.265%
Cumulative % of var.: 52.329%
A Dimensão 2 adiciona mais 12.265% de variância explicada, elevando o total acumulado para 52.329%.
E assim por diante…
Qual o número de dimensões examinar?
Há dois critérios:
Verificar a distribuição de percentagens em relação a Tabela do 95º percentil da porcentagem de inércia explicada pelo primeiro componente;
Verificar quais componentes possuem inércia > 1.
1. Tabela do 95º percentil da porcentagem de inércia explicada pelo primeiro componente.
De acordo com a Tabela A.3, no apêndice do livro, esse quantil obtido para 100 indivíduos e 13 variáveis é de 25.8%.
Comparando… Mesmo que a porcentagem de 40.065 (2003) pareça relativamente baixa, por ser maior que 25.8%, ela expressa uma estrutura significativa nos dados.
ATENÇÃO: Observe que a variabilidade dos componentes não pode ser resumida apenas pelas duas primeiras dimensões. Por quê?
Também pode ser interessante interpretar os componentes 3 e 4, para os quais a inércia (autovalor) é maior que 1.
(Esse valor é usado como referência porque representa, no caso de variáveis padronizadas, a contribuição de uma única variável).
2. Verificar quais componentes possuem inércia superior a 1
eig_val_2003 <- get_eigenvalue(pca_2003)
eig_val_2003
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 5.20841210 40.0647085 40.06471
## Dim.2 1.59441740 12.2647492 52.32946
## Dim.3 1.25541049 9.6570038 61.98646
## Dim.4 1.04631508 8.0485776 70.03504
## Dim.5 0.95433658 7.3410506 77.37609
## Dim.6 0.81495031 6.2688486 83.64494
## Dim.7 0.66838280 5.1414062 88.78634
## Dim.8 0.47899124 3.6845480 92.47089
## Dim.9 0.37341588 2.8724299 95.34332
## Dim.10 0.30067066 2.3128512 97.65617
## Dim.11 0.18732146 1.4409343 99.09711
## Dim.12 0.07314998 0.5626922 99.65980
## Dim.13 0.04422600 0.3402000 100.00000
Um autovalor > 1 para dados padronizados indica que os Componentes Principais explicam mais variância do que uma das variáveis originais.
Isto é comumente usado como um ponto de corte para determinar quais Componentes principais são mantidos.
Alternativamente você também pode limitar o número de componentes certa fração da variância total.
Por exemplo, se você estiver satisfeito com 70% da variância total explicada, então use o número de componentes necessários para alcançar isso.
fviz_eig(pca_2003, addlabels = TRUE)
A partir do gráfico acima, podemos querer parar no 4º componente principal.
70.03% da informação (variâncias) contida nos dados são retidos pelos quatros primeiros componentes principais.
fviz_pca_var(pca_2003, col.var = "black", repel = TRUE)
O círculo de correlação ou nuvem de variáveis é uma representação gráfica utilizada na Análise de Componentes Principais para visualizar as correlações entre as variáveis originais e os componentes principais.
Essa visualização interpretar como cada variável contribui para as componentes principais.
O círculo tem um raio igual a 1, o que representa a correlação máxima entre uma variável e um componente principal.
Os eixos x e y do gráfico correspondem aos componentes principais, geralmente Dimensão 1 (eixo X) e Dimensão 2 (eixo Y).
Cada vetor (as setas) representa uma variável original.
A direção e o comprimento do vetor indicam a correlação da variável com os componentes principais.
Vetores mais longos indicam uma forte correlação com o componente principal.
Ângulos próximos de 0° ou 180° indicam alta correlação positiva ou negativa, respectivamente.
Ângulos próximos de 90° indicam baixa correlação entre as variáveis.
Portanto, o circulo de correlação mostra as relações entre todas as variáveis.
Variáveis positivamente correlacionadas são agrupadas.
Variáveis negativamente correlacionadas estão posicionadas em lados opostos da origem do gráfico (quadrantes opostos).
A distância entre as variáveis e a origem mede a qualidade das variáveis no mapa fatorial.
Variáveis que estão longe da origem são bem representadas no mapa fatorial.”
fviz_cos2(pca_2003, choice = "var", axes = 1)
fviz_cos2(pca_2003, choice = "var", axes = 2)
fviz_cos2(pca_2003, choice = "var", axes = 3)
fviz_cos2(pca_2003, choice = "var", axes = 4)
fviz_cos2(pca_2003, choice = "var", axes = 1:2)
A qualidade da representação de variáveis em um mapa fatorial é fundamental para interpretar a PCA.
Esta qualidade é quantificada pelo cos2 (cosseno ao quadrado).
O cos2 mede a proporção da variância de cada variável que é explicada pelos componentes principais.
Em termos simples, é uma métrica que indica quão bem uma variável é representada no espaço dos componentes principais.
Valores altos de cos2 (próximos de 1) indicam que a variável é bem representada pelos componentes principais.
Valores baixos de cos2 (próximos de 0) sugerem que a variável não é bem representada pelos componentes principais.
Através do cos2, você pode, portanto, identificar quais variáveis são mais relevantes para os componentes principais.
Focar nas variáveis com altos valores do cos2 ajuda a simplificar e melhorar a interpretação dos resultados da PCA.
Repare a variável Corrupção. Ela tem um cos2 de 0.81 na Dimensão 1 e 0.007 na Dimensão 2.
Isso indica que Corrupção é bem representada pelo componente 1, o mesmo não é verdadeiro para a Dimensão 2.
Portanto, a maior parte da variabilidade de Corrupção é capturada pela Dimensão 1.
A variável Estresse Hídrico, por outro lado, é bem representada pelo Componente 2, enquanto pelo Componente 1, a representação é insatisfatória.”
fviz_pca_var(pca_2003, col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)
Selecionar as variávies que tem maior contribuição para cada componente
Se os seus dados contêm muitas variáveis, você pode optar por mostrar apenas as variáveis com maior contribuição.
O código R abaixo mostra as 5 principais variáveis que mais contribuem para os componentes principais 1 e 2.
fviz_contrib(pca_2003, choice = "var", axes = 1, top = 5)
fviz_contrib(pca_2003, choice = "var", axes = 2, top = 5)
fviz_contrib(pca_2003, choice = "var", axes = 1:2, top = 5)
A linha tracejada vermelha no gráfico indica a contribuição média esperada. Se a contribuição das variáveis fosse uniforme, o valor esperado seria 1/número de variáveis = 1/13 = 7,69%. Para um determinado componente, uma variável com uma contribuição maior do que esse valor de corte pode ser considerada importante para a contribuição ao componente.
fviz_pca_var(pca_2003, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))
Visualizar a variável com cos2 >= 0.6
fviz_pca_var(pca_2003, select.var = list(cos2 = 0.6))
Top 5 variáveis ativas com cos2 alto
fviz_pca_var(pca_2003, select.var= list(cos2 = 5))
A função dimdesc() [no FactoMineR], para descrição de
dimensões, pode ser usada para identificar as variáveis mais
significativamente associadas a um determinado componente principal.
res.desc <- dimdesc(pca_2003, proba = 0.05)
print(res.desc)
## $Dim.1
##
## Link between the variable and the continuous variables (R-square)
## =================================================================================
## correlation p.value
## GovEffectiveness 0.9237229 1.581853e-81
## Rule 0.9198063 1.560401e-79
## Corruption 0.9010143 3.356562e-71
## Life_expectancy 0.8183746 7.905232e-48
## Political_Stability 0.7935287 4.552261e-43
## CO2 0.6383737 1.749170e-23
## Water_stress 0.1505452 3.663766e-02
## Natural_resources -0.4486536 6.006033e-11
## Temperature -0.5218322 7.135988e-15
## Renewable_energy -0.6797033 1.644092e-27
##
## Link between the variable and the categorical variable (1-way anova)
## =============================================
## R2 p.value
## Income Group 0.719474 6.378895e-52
##
## Link between variable and the categories of the categorical variables
## ================================================================
## Estimate p.value
## Income Group=High income 3.0486213 4.613766e-39
## Income Group=Lower middle income -0.9446634 4.484609e-08
## Income Group=Low income -2.3902325 5.912312e-13
##
## $Dim.2
##
## Link between the variable and the continuous variables (R-square)
## =================================================================================
## correlation p.value
## Water_stress 0.8737469 1.074716e-61
## CO2 0.5780673 1.337250e-18
## Temperature 0.4478989 6.522362e-11
## Natural_resources 0.3395181 1.362911e-06
## GDP_growth 0.2309825 1.229770e-03
## Renewable_energy -0.2716552 1.326124e-04
##
## $Dim.3
##
## Link between the variable and the continuous variables (R-square)
## =================================================================================
## correlation p.value
## ge_education 0.6708665 1.353565e-26
## GDP_growth 0.6440565 5.318071e-24
## Political_Stability 0.1653166 2.158664e-02
## Pop_density 0.1548293 3.155790e-02
## Temperature 0.1496543 3.777654e-02
## CO2 -0.2177809 2.346543e-03
## Natural_resources -0.4928204 3.327254e-13
##
## Link between the variable and the categorical variable (1-way anova)
## =============================================
## R2 p.value
## Income Group 0.06267749 0.006526302
##
## Link between variable and the categories of the categorical variables
## ================================================================
## Estimate p.value
## Income Group=Lower middle income 0.2912244 0.031903116
## Income Group=High income -0.3333098 0.003378895
Como interpretar o resultado?
Dimensão 1 (Dim.1)
Variáveis Contínuas
GovEffectiveness (0.923), Rule (0.920), Corruption (0.901): Altamente correlacionadas com a Dimensão 1.
Essas variáveis são as mais importantes na explicação da variabilidade da Dimensão 1.
Life_expectancy (0.818) e Political_Stability (0.794): Também têm correlações fortes, indicando sua relevância. CO2 (0.638): Correlação moderada. Water_stress (0.151): Correlação fraca. Natural_resources (-0.449), Temperature (-0.522), Renewable_energy (-0.680): Correlações negativas moderadas a fortes, indicando que essas variáveis diminuem à medida que a Dimensão 1 aumenta.
Variável Categórica (Grupo de Renda) R² de 0.719 e p-valor extremamente baixo indicam uma forte associação entre a Dimensão 1 e o grupo de renda.
Categorias de Variável Categórica High income (3.049): Alta renda está fortemente associada à Dimensão 1. Lower middle income (-0.945) e Low income (-2.390): Associações negativas significativas, indicando que países com menor renda têm valores menores na Dimensão 1.
Dimensão 2 (Dim.2) Variáveis Contínuas
Water_stress (0.874): Altamente correlacionada com a Dimensão 2. CO2 (0.578): Correlação moderada. Temperature (0.448), Natural_resources (0.340): Correlações moderadas a fracas. GDP_growth (0.231): Correlação fraca. Renewable_energy (-0.272): Correlação negativa fraca.
Quando você compara as dimensões 1 e 2, o que cada quadrante pode signficar?
Os resultados para os países podem ser extraídos usando a função
get_pca_ind() [pacote factoextra]. A função
get_pca_ind() fornece uma lista de matrizes contendo todos
os resultados para os países (coordenadas, correlação entre variáveis e
eixos, cosseno ao quadrado e contribuições).
country <- get_pca_ind(pca_2003)
country
## Principal Component Analysis Results for individuals
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for the individuals"
## 2 "$cos2" "Cos2 for the individuals"
## 3 "$contrib" "contributions of the individuals"
Coordenada dos países
head(country$coord)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## AFG -2.9701126 0.28791896 0.5708439 -1.00415433 -1.002635700
## ALB -0.5010845 -0.40655660 0.2494499 -0.80452352 -0.926680808
## DZA -1.5432969 1.53060701 -0.4033472 -0.20340683 -0.431339864
## AND 3.1056493 -0.80578743 0.2528582 -0.74504936 0.002230662
## AGO -3.5533371 0.30340725 -0.9074935 0.05692522 0.160874398
## ATG 2.0173753 -0.01130002 0.3434244 0.02618895 0.113558707
Qualidade dos países
head(country$cos2)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## AFG 0.67451904 6.338535e-03 0.024916276 0.0770990990 7.686607e-02
## ALB 0.07446175 4.901775e-02 0.018453466 0.1919503329 2.546664e-01
## DZA 0.23749774 2.336081e-01 0.016222528 0.0041256422 1.855238e-02
## AND 0.77043258 5.186457e-02 0.005107212 0.0443404311 3.974634e-07
## AGO 0.83414284 6.081623e-03 0.054406982 0.0002140805 1.709785e-03
## ATG 0.68673025 2.154623e-05 0.019901008 0.0001157308 2.175974e-03
Contribuição dos países
head(country$contrib)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## AFG 0.87757288 2.693898e-02 0.13449053 0.4993225025 5.457924e-01
## ALB 0.02497809 5.371341e-02 0.02568168 0.3205218927 4.662313e-01
## DZA 0.23693887 7.613214e-01 0.06714520 0.0204885513 1.010137e-01
## AND 0.95949381 2.109996e-01 0.02638828 0.2748845310 2.701522e-06
## AGO 1.25605942 2.991524e-02 0.33989437 0.0016046845 1.405125e-02
## ATG 0.40486548 4.149532e-05 0.04867649 0.0003396382 7.001353e-03
Análise visual
fviz_pca_ind(pca_2003, col.ind = "cos2",
geom = c("point"),
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
alpha.ind = 0.5,
repel = TRUE # Evitar sobreposição de textos
)
fviz_pca_ind(pca_2003, col.ind = "cos2",
geom = c("text"),
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
alpha.ind = 0.5,
repel = TRUE # Evitar sobreposição de textos
)
fviz_cos2(pca_2003, choice = "ind", axes = 1)
fviz_contrib(pca_2003, choice = "ind", axes = 1)
fviz_pca_ind(pca_2003,
geom.ind = "text",
habillage = 14,
palette = c("#00AFBB", "#E7B800", "#FC4E07", "green"),
addEllipses = TRUE,
ellipse.type = "confidence",
legend.title = "Grupos")
top 5 contribuições de países e variávies para a formação dos compontentes.
fviz_pca_biplot(pca_2003, select.ind = list(contrib = 10),
select.var = list(contrib = 7),
ggtheme = theme_minimal())
Vamos agrupar agora os países por suas caracteristicas a partir dos componentes principais
res.hcpc <- HCPC(pca_2003, graph = FALSE)
fviz_dend(res.hcpc,
cex = 0.7, # Tamanho do rórulo
palette = "jco", # Paleta de cor
rect = TRUE, rect_fill = TRUE, # Add rectangle around groups
rect_border = "jco", # Rectangle color
labels_track_height = 0.8) # Augment the room for labels
Repare na figura que o dendograma sugere uma solução com 4 grupos.
fviz_cluster(res.hcpc,
repel = TRUE, # Avoid label overlapping
show.clust.cent = TRUE, # Show cluster centers
palette = "jco", # Color palette see ?ggpubr::ggpar
ggtheme = theme_minimal(),
main = "Factor map"
)
clus_2003 <- data.frame(head(res.hcpc$data.clust, 193))
resumo <- clus_2003 %>%
group_by(clust) %>%
summarize(
média = mean(CO2)
)
res.hcpc$desc.var$quanti
## $`1`
## v.test Mean in category Overall mean sd in category
## Renewable_energy 9.507672 67.5331481 33.68834197 27.9505773
## Natural_resources 6.588580 10.6350891 4.55720320 11.5202287
## Temperature 5.456627 30.9934265 25.27859295 4.6215513
## GDP_growth -2.629003 2.1392524 3.88204980 8.6124799
## CO2 -5.094170 0.8883288 4.36696918 1.7002844
## Corruption -7.656842 -0.9140640 -0.06356473 0.3727389
## GovEffectiveness -8.251892 -0.9624668 -0.05839123 0.3701512
## Political_Stability -8.604785 -1.0183594 -0.02369947 0.7694409
## Rule -8.720769 -1.0434688 -0.04196178 0.4770916
## Life_expectancy -9.470228 56.9420370 67.41351333 7.3103095
## Overall sd p.value
## Renewable_energy 30.7438274 1.949769e-21
## Natural_resources 7.9671098 4.440526e-11
## Temperature 9.0452258 4.852643e-08
## GDP_growth 5.7252692 8.563559e-03
## CO2 5.8976114 3.502715e-07
## Corruption 0.9593219 1.905605e-14
## GovEffectiveness 0.9462183 1.559068e-16
## Political_Stability 0.9983313 7.645963e-18
## Rule 0.9918346 2.763175e-18
## Life_expectancy 9.5496522 2.792325e-21
##
## $`2`
## v.test Mean in category Overall mean sd in category
## GDP_growth 3.405485 5.4352145 3.88204980 3.5740407
## Water_stress -1.984862 20.8152624 53.21059490 26.0952322
## GovEffectiveness -2.010676 -0.2099483 -0.05839123 0.4857712
## Corruption -2.739692 -0.2729320 -0.06356473 0.4816987
## Renewable_energy -3.182802 25.8934483 33.68834197 20.3151765
## CO2 -3.694959 2.6310540 4.36696918 2.3347824
## Natural_resources -4.184698 1.9013281 4.55720320 2.7275802
## Overall sd p.value
## GDP_growth 5.7252692 6.604675e-04
## Water_stress 204.8846813 4.715986e-02
## GovEffectiveness 0.9462183 4.435971e-02
## Corruption 0.9593219 6.149677e-03
## Renewable_energy 30.7438274 1.458575e-03
## CO2 5.8976114 2.199221e-04
## Natural_resources 7.9671098 2.855452e-05
##
## $`3`
## v.test Mean in category Overall mean sd in category
## Water_stress 10.903310 953.2518255 53.210595 682.059508
## CO2 8.366882 24.2477924 4.366969 12.205261
## Temperature 3.589153 38.3585405 25.278593 2.392543
## GDP_growth 2.681234 10.0668434 3.882050 4.451160
## Natural_resources 2.114315 11.3440033 4.557203 4.415965
## Life_expectancy 1.966106 74.9781667 67.413513 2.015823
## Renewable_energy -2.679641 0.4966667 33.688342 1.052769
## Overall sd p.value
## Water_stress 204.884681 1.111395e-27
## CO2 5.897611 5.916290e-17
## Temperature 9.045226 3.317535e-04
## GDP_growth 5.725269 7.335118e-03
## Natural_resources 7.967110 3.448837e-02
## Life_expectancy 9.549652 4.928638e-02
## Renewable_energy 30.743827 7.370107e-03
##
## $`4`
## v.test Mean in category Overall mean sd in category
## Corruption 10.950220 1.2916756 -0.06356473 0.6574210
## GovEffectiveness 10.950194 1.2783344 -0.05839123 0.5680591
## Rule 10.156035 1.2575871 -0.04196178 0.4751658
## Life_expectancy 7.808549 77.0337789 67.41351333 2.9097389
## Political_Stability 7.002894 0.8782483 -0.02369947 0.5388057
## CO2 6.273964 9.1405836 4.36696918 4.3072088
## GDP_growth -2.299303 2.1837230 3.88204980 2.7763725
## ge_education -2.702343 13.4026953 14.92008916 2.7895179
## Natural_resources -2.915868 1.5601269 4.55720320 4.7128764
## Renewable_energy -5.208613 13.0293478 33.68834197 15.4197002
## Temperature -6.220798 18.0192949 25.27859295 9.4046902
## Overall sd p.value
## Corruption 0.9593219 6.628676e-28
## GovEffectiveness 0.9462183 6.630547e-28
## Rule 0.9918346 3.114869e-24
## Life_expectancy 9.5496522 5.784988e-15
## Political_Stability 0.9983313 2.507289e-12
## CO2 5.8976114 3.519694e-10
## GDP_growth 5.7252692 2.148774e-02
## ge_education 4.3523999 6.885279e-03
## Natural_resources 7.9671098 3.547006e-03
## Renewable_energy 30.7438274 1.902573e-07
## Temperature 9.0452258 4.946336e-10
res.hcpc$desc.axes$quanti
## $`1`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.3 -2.449086 -0.317729 1.794055e-15 1.4512015 1.120451
## Dim.1 -10.215545 -2.699443 -4.975151e-16 0.9370242 2.282195
## p.value
## Dim.3 1.432191e-02
## Dim.1 1.689264e-24
##
## $`2`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.3 5.096318 0.4548750 1.794055e-15 0.8311726 1.1204510
## Dim.2 -2.188259 -0.2201114 -3.747048e-16 0.4653485 1.2627024
## Dim.5 -3.468422 -0.2699140 1.328360e-15 1.2380309 0.9769015
## p.value
## Dim.3 3.463229e-07
## Dim.2 2.865071e-02
## Dim.5 5.235251e-04
##
## $`3`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.2 11.222522 5.709342 -3.747048e-16 2.417635 1.262702
## Dim.1 1.990645 1.830379 -4.975151e-16 1.454849 2.282195
## p.value
## Dim.2 3.161249e-29
## Dim.1 4.651989e-02
##
## $`4`
## v.test Mean in category Overall mean sd in category Overall sd
## Dim.1 10.269811 3.0237388 -4.975151e-16 0.9941786 2.282195
## Dim.2 -2.144751 -0.3493872 -3.747048e-16 0.7484809 1.262702
## Dim.3 -3.603540 -0.5208964 1.794055e-15 0.6979593 1.120451
## p.value
## Dim.1 9.639294e-25
## Dim.2 3.197277e-02
## Dim.3 3.139123e-04
res.hcpc$desc.ind$para
## Cluster: 1
## KEN RWA UGA GIN ZMB
## 0.3498029 0.5406971 0.7191071 0.7903876 0.7949831
## ------------------------------------------------------------
## Cluster: 2
## PAN CUB SUR MAR THA
## 0.2528822 0.3842736 0.4760598 0.4871899 0.5371365
## ------------------------------------------------------------
## Cluster: 3
## ARE SAU QAT BHR LBY
## 2.161968 2.246204 2.756215 3.068219 3.235624
## ------------------------------------------------------------
## Cluster: 4
## JPN ESP FRA SVN PRT
## 0.4318246 0.5432966 0.6280967 0.6902164 0.7976100
Para cada cluster, são mostrados os 5 indivíduos mais próximos do centro do cluster. A distância entre cada indivíduo e o centro do cluster é fornecida. Por exemplo, os indivíduos representativos para o cluster 1 incluem: