1 Introdução

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.

2 Conjunto de dados

Para realizar uma PCA é preciso, primeiro, compreender a natureza do conjunto de dados.

2.1 Importar 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)

2.2 Descriação das variáveis

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.

2.3 Rotular as variáveis

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

2.4 Lidando com valores ausentes

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

2.5 Selecionar uma amostra

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)

2.6 Padronizar os dados

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

3 Matrix de correlação

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…

4 Análise dos Componentes Principais na prática

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"

4.1 Executar a análise dos compontentes principais (PCA)

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:

  1. Verificar a distribuição de percentagens em relação a Tabela do 95º percentil da porcentagem de inércia explicada pelo primeiro componente;

  2. 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.

4.2 Verificação visual

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.

4.2.1 Analisar o círculo de correlação

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.”

4.2.2 Analisar a qualidade da representação

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

4.3 Descrição automática

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?

4.4 Analisar a nuvem de países

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

5 Agrupamento

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

5.1 Para exibir os dados originais com as atribuições de cluster

clus_2003 <- data.frame(head(res.hcpc$data.clust, 193))

5.1.1 Para analisar os difernetes cluster:

resumo <- clus_2003 %>%
  group_by(clust) %>%
  summarize(
    média = mean(CO2)
  )

5.2 Para exibir as variáveis quantitativas que mais descrevem cada cluster

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

5.3 Para exibir as principais dimensões que estão mais associadas com os clusters

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

5.4 Para exibir os indivíduos representativos de cada cluster

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:

  • KEN: Kenya
  • RWA: Ruanda
  • UGA: Uganda.
  • GIN: Guiné
  • ZMB: Zambia.