A análise de cluster é uma técnica estatística utilizada para identificar padrões e estruturar conjuntos de dados em grupos homogêneos. O objetivo principal é agrupar elementos semelhantes com base em características comuns, permitindo uma melhor compreensão das relações entre os dados. Este material aborda diferentes abordagens de clusterização, incluindo métodos como K-means, K-medoids (PAM), CLARA e a Análise Hierárquica Aglomerativa.
Além da implementação prática dessas técnicas, são discutidos aspectos fundamentais, como a escolha da métrica de proximidade, a padronização dos dados e a validação dos agrupamentos. A análise se volta para aplicações no campo das relações internacionais, utilizando dados do CIRI Human Rights Data Project para exemplificar os procedimentos de agrupamento.
O conteúdo fornece uma base para quem deseja explorar a segmentação de dados de maneira estruturada e eficiente.
Para esta etapa do curso, vamos utilizar os seguintes pactores.
library(readxl)
library(dplyr)
library(tidyverse)
library(cluster)
library(factoextra)
library(hopkins)
library(NbClust)
library(fpc)
Para Introduzir a Análise de Cluster, vamos utiilizar um conjunto de dados sobre diretos humanos do CIRI Human Rights Data Project.
df <- read_excel("D:/Documentos/Fabio/OneDrive/Documentos/Universidade/UFSC/Disciplinas/Análise de Dados para RI/Exercicios_ADRI/excercicio_cluster/CIRI2011.xlsx")
head(df, 15)
Como se pode observar, o conjunto de dados apresenta variávies que podem ser consideradas qualitativa ordinais, pois representam categorias ordenadas com valores numéricos que indicam diferentes níveis de respeito aos direitos analisados. Por exemplo, a variável TORT (Tortura) tem valores de 0, 1 e 2, indicando uma escala de frequência (frequente, ocasional e nenhuma ocorrência), mas sem uma diferença matemática precisa entre os valores, ou seja, são um tipo de variável categórica cujos valores representam categorias que possuem uma ordem ou hierarquia natural, mas sem uma distância numérica definida entre elas.
A tabela abaixo apresenta uma breve descrição das variáveis que compõe o conjunto de dados.
| Código | Nome do Indicador | Descrição |
|---|---|---|
| CTRY | Nome do País | Nome do país. |
| PHYSINT | Índice de Direitos de Integridade Física | Índice somado dos indicadores de Tortura, Execução Extrajudicial, Prisão Política e Desaparecimento. Varia de 0 (nenhum respeito governamental) a 8 (respeito total). |
| DISAP | Desaparecimento | Casos em que pessoas desaparecem por razões políticas e não são encontradas. 0 = desaparecimentos frequentes; 1 = desaparecimentos ocasionais; 2 = nenhum desaparecimento no ano. |
| KILL | Execução Extrajudicial | Assassinatos cometidos por agentes do governo sem devido processo legal, incluindo casos instigados por autoridades. 0 = execuções frequentes; 1 = execuções ocasionais; 2 = nenhuma execução. |
| POLPRIS | Prisão Política | Encarceramento por motivos políticos, religiosos ou étnicos. 0 = muitas prisões políticas; 1 = algumas prisões; 2 = nenhuma prisão política. |
| TORT | Tortura | Inflição intencional de dor extrema por autoridades ou indivíduos sob ordem governamental. 0 = tortura frequente; 1 = ocasional; 2 = nenhuma tortura. |
| NEW_EMPINX | Índice de Direitos de Empoderamento | Índice somado dos indicadores de movimento externo, movimento doméstico, liberdade de expressão, associação, direitos dos trabalhadores, autodeterminação eleitoral e liberdade religiosa. Varia de 0 (nenhum respeito) a 14 (respeito total). |
| ASSN | Liberdade de Associação e Reunião | Direito dos cidadãos de se organizar politicamente ou culturalmente. 0 = liberdade severamente restringida; 1 = limitada; 2 = plenamente garantida. |
| FORMOV | Liberdade de Movimento Externo | Direito dos cidadãos de sair e retornar ao país. 0 = severamente restrito; 1 = moderadamente restrito; 2 = plenamente livre. |
| DOMMOV | Liberdade de Movimento Interno | Direito de viajar dentro do próprio país. 0 = severamente restrito; 1 = moderadamente restrito; 2 = plenamente livre. |
| SPEECH | Liberdade de Expressão | Nível de censura governamental sobre a mídia e expressão artística. 0 = censura total; 1 = censura parcial; 2 = sem censura. |
| ELECSD | Autodeterminação Eleitoral | Possibilidade de participação política por meio de eleições livres e justas. 0 = direito inexistente; 1 = limitado; 2 = participação política amplamente garantida. |
| NEW_RELFRE | Liberdade Religiosa | Liberdade para praticar religião sem restrições governamentais. 0 = restrição severa; 1 = moderada; 2 = praticamente nenhuma restrição. |
| WORKER | Direitos dos Trabalhadores | Liberdade de associação e negociação coletiva. 0 = severamente restritos; 1 = moderadamente restritos; 2 = plenamente protegidos. |
| WECON | Direitos Econômicos das Mulheres | Igualdade no emprego, salários e proteção contra discriminação. 0 = nenhum direito garantido; 1 = direitos na lei, mas sem aplicação; 2 = direitos garantidos com alguma discriminação; 3 = direitos totalmente garantidos e aplicados. |
| WOPOL | Direitos Políticos das Mulheres | Direito de votar, ocupar cargos públicos e participar da política. 0 = não garantidos por lei; 1 = garantidos, mas severamente restringidos; 2 = garantidos com restrições moderadas; 3 = plenamente garantidos e aplicados. |
| INJUD | Independência do Judiciário | Nível de independência dos tribunais em relação ao governo e militares. 0 = não independente; 1 = parcialmente independente; 2 = geralmente independente. |
Para dar continuidade à análise de cluster, é necessário, ainda, realizar os seguintes procedimentos: - identificar as observações; - lidar com os valores ausntes; e - padronizar os dados.
A seguir, examinaremos cada uma dessas etapas separadamente.
Em Análises de Cluster é comum que as observações (linhas) do conjunto de dados precisem ser identificadas por rótulos nominais, e não apenas por índices numéricos.
Ao realizar essa identificação, o pesquisador adequa os dados para a aplicação de técnicas de agrupamento, como o k-means, a análise hierárquica, entre outras, que frequentemente requerem tais identificadores para uma interpretação mais precisa e significativa dos resultados.
Em nosso exemplo, as observações estão em nivel de países. Portanto,
devemos renomeá-las a partir da coluna CTRY
df <- df %>%
remove_rownames %>%
column_to_rownames(var = "CTRY")
head(df, 15)
Repare também que as observações estão nas linhas e as variáveis nas colunas. Correto. Não obstante, algums observações possuem dados ausêntes. Na Análise de Cluster é importante estimá-los ou removê-los.
Neste exercício vamos utilizar a função na.omit para
remover os missings.
df <- na.omit(df)
O valor das medidas de distância está diretamente associada à escala em que as variáveis são mensuradas. Por isso, é comum realizar a padronização (ou normalização) dos dados antes de calcular as dissimilaridades entre observações. Essa prática é recomendada quando as variáveis estão em escalas diferentes, pois, do contrário, as medidas de dissimilaridade podem ser distorcidas de forma significativa.
No momento oportuno vamos utilizar a função scaled.
A matriz de proximidade é um componente central na análise de cluster, representando a similaridade ou dissimilaridade entre os elementos de um conjunto de dados. Essa matriz funciona como uma tabela que quantifica o grau de proximidade entre pares de objetos, sendo essencial para orientar como os dados serão agrupados. Ela é importante porque influencia diretamente a forma como os clusters são formados, independentemente do algoritmo utilizado.
O funcionamento da matriz de proximidade se baseia na comparação entre todos os elementos do conjunto de dados. Cada linha e coluna da matriz corresponde a um objeto, e os valores inseridos refletem a medida de distância ou similaridade entre eles. As métricas utilizadas para calcular essa proximidade variam conforme a abordagem escolhida, podendo incluir distância euclidiana, correlação de Pearson, Manhattan, entre outras, de acordo com as características dos dados e o objetivo da análise.
O uso da matriz de proximidade é relevante em métodos de clusterização hierárquica, nos quais ela serve como base para definir quais elementos devem ser agrupados primeiro. Sem essa matriz, seria impossível estabelecer a ordem das fusões entre objetos ou grupos de objetos. Assim, ela não só contribui para a formação dos clusters, como também permite uma visualização clara das relações entre os dados, viabilizando interpretações mais precisas e fundamentadas.
Vejamos um exemplo com base em nosso conjunto de dados.
Para facilitar a apresentação da técnica de Análise de Cluster, vamos
gerar uma amostra reprodutivel com 50 observações. Para tanto, vamos
aplicar as seguintes funções: set.seed e
sample.
set.seed(123) # Gera um número aleatório reprodutivel
ss <- sample(1:194, 50) # cria a amostra selecionando 50 casos aleatóriamente.
Agora transforme a amostra aleatória reprodutível em uma tabela.
df.ss <- df[ss, ] # cria uma tabela a partir da amostra aleatória
head(df.ss, 5)
A título de ilustração, podemos utilizar a função scale
para padronizar os dados.
df.ss.scaled <- scale(df.ss) # Padronização da variáveis
head(df.ss.scaled, 5)
## PHYSINT DISAP KILL POLPRIS TORT NEW_EMPINX
## Slovenia 1.3859293 0.596962 1.024673 1.0427834 1.902548 1.2756587
## Turkey -0.9899495 0.596962 -1.474530 -1.2745131 -0.854768 -0.2737243
## Bangladesh -0.9899495 -0.895443 -1.474530 -0.1158648 -0.854768 -0.2737243
## Syria -1.7819091 -2.387848 -1.474530 -1.2745131 -0.854768 -1.8231074
## Dominica 1.3859293 0.596962 1.024673 1.0427834 1.902548 1.2756587
## ASSN FORMOV DOMMOV SPEECH ELECSD NEW_RELFRE
## Slovenia 1.18524894 0.6003545 0.6820738 0.3299832 1.182641 0.8445403
## Turkey -1.33655732 0.6003545 0.6820738 0.3299832 -0.225265 -1.4380010
## Bangladesh -0.07565419 0.6003545 -0.6296066 0.3299832 -0.225265 -0.2967304
## Syria -1.33655732 -0.7640876 -1.9412871 -1.3199327 -1.633172 -1.4380010
## Dominica 1.18524894 0.6003545 0.6820738 1.9798990 1.182641 0.8445403
## WORKER WECON WOPOL INJUD
## Slovenia 2.3899017 1.0608811 -0.1414214 1.4916768
## Turkey 0.4931543 -0.2020726 -0.1414214 0.3263043
## Bangladesh -1.4035930 -0.2020726 -0.1414214 -0.8390682
## Syria -1.4035930 -0.2020726 -0.1414214 -0.8390682
## Dominica 0.4931543 -0.2020726 -0.1414214 1.4916768
Compare as duas tabelas. Repare que a tabela com valores padronizados garante que todas as variávies tenham a mesma escala, facilitando a comparação entre as variáveis.
Não obstante, como se verá abaixo, a matriz de proximidade pode ser calculada com base em diferentes métodos.
A distância euclidiana é uma medida matemática utilizada para calcular a diferença entre dois pontos em um espaço multidimensional. Ela é derivada do Teorema de Pitágoras e representa a linha reta mais curta entre dois pontos.
Na Análise de Cluster, cada ponto representa uma observação (como um país) com várias características (como indicadores econômicos ou sociais), e a distância euclidiana entre dois pontos indica o grau de diferença entre essas observações. Quanto menor a distância, mais semelhantes são os pontos; quanto maior a distância, mais distintos eles são.
A distância euclidiana é amplamente utilizada em técnicas de agrupamento, pois oferece uma maneira objetiva de quantificar similaridades ou dissimilaridades entre elementos.
Em nosso exemplo, a distância euclidiana é uma métrica que avalia o quão diferentes são os países ao considerar as características com relação aos diretos humanos e as liberdades fundamentais. Quanto menor a distância entre dois países, maior a semelhança entre eles no contexto das variáveis estudadas.
Agora, crie a matriz de distância com base na distância euclidiana.
dist.ss.eucl <- dist(df.ss.scaled, method = "euclidean")
Vamos analisar um segmento da matriz de distância para apreentar a intuição por de trás da teoria.
round(as.matrix(dist.ss.eucl)[1:5, 1:5], 4)
## Slovenia Turkey Bangladesh Syria Dominica
## Slovenia 0.0000 6.8823 7.3128 10.0074 2.8133
## Turkey 6.8823 0.0000 3.6247 5.5082 6.7005
## Bangladesh 7.3128 3.6247 0.0000 4.2162 6.6190
## Syria 10.0074 5.5082 4.2162 0.0000 9.7942
## Dominica 2.8133 6.7005 6.6190 9.7942 0.0000
Lembre-se, a matriz acima representa as distâncias euclidianas entre
países, calculadas com base em variáveis previamente padronizadas do
conjunto de dados (df.ss.scaled).
Para interpretar os resultados, é importante observar que valores menores indicam maior similaridade — por exemplo, a distância entre Turquia e Bangladesh é 3.6247, sugerindo características relativamente próximas. Por outro lado, valores maiores apontam para maior dissimilaridade, como no caso de Eslovênia e Síria, cuja distância é 10.0074, evidenciando diferenças significativas. As distâncias entre um país e ele próprio são sempre zero, como esperado. Além disso, países com distâncias pequenas entre si tendem a ser agrupados no mesmo cluster, dependendo do método de clusterização utilizado.
Uma alternativa à distância euclidiana, é adotar a Correlação de Pearson como método.
dist.ss.cor <- get_dist(df.ss.scaled, method = "pearson")
round(as.matrix(dist.ss.cor)[1:5, 1:5], 4)
## Slovenia Turkey Bangladesh Syria Dominica
## Slovenia 0.0000 1.1434 1.5731 1.1312 0.6953
## Turkey 1.1434 0.0000 0.8753 1.0292 1.2242
## Bangladesh 1.5731 0.8753 0.0000 0.6645 1.0444
## Syria 1.1312 1.0292 0.6645 0.0000 1.3421
## Dominica 0.6953 1.2242 1.0444 1.3421 0.0000
Essa matriz representa as distâncias calculadas com base na
correlação de Pearson entre os países analisados no conjunto de dados
df.ss.scaled. A correlação de Pearson avalia o grau de
associação linear entre variáveis e, nesse contexto, é utilizada como
uma medida de dissimilaridade entre os países. Diferente da distância
euclidiana, que considera a separação absoluta entre pontos, a
correlação de Pearson foca na semelhança dos padrões de variação dos
dados, independentemente da escala.
Para interpretar os resultados dessa matriz, é importante lembrar que valores menores indicam maior similaridade entre os países. Por exemplo, a distância entre Bangladesh e Síria é 0.6645, sugerindo que ambos apresentam padrões estatísticos semelhantes de acordo com os dados analisados. Já valores maiores indicam maior dissimilaridade, como na distância de 1.5731 entre Eslovênia e Bangladesh, o que reflete diferenças substanciais nas variáveis observadas. Os autovalores são sempre zero, pois um país comparado consigo mesmo não apresenta nenhuma diferença. Em métodos de clusterização, essas distâncias ajudam a identificar grupos de países com comportamentos estatísticos semelhantes.
A principal diferença entre a matriz de distancia baseada na correção e a baseada na distância euclidiana está no critério utilizado para formar os agrupamentos. Enquanto a matriz euclidiana se baseia em distâncias absolutas entre os pontos no espaço, a matriz de correlação considera o grau de semelhança na forma como as variáveis se relacionam. Assim, a escolha entre uma e outra depende do objetivo da análise: se o foco está em padrões de comportamento (independentemente da magnitude dos valores), a correlação de Pearson pode ser mais adequada.
A decisão entre usar distância euclidiana ou correlação de Pearson envolve considerar as características dos dados e a finalidade da pesquisa. A distância euclidiana é simples de interpretar e ideal quando as variáveis estão na mesma escala, sendo bastante comum em algoritmos como K-Means. No entanto, ela pode ser distorcida por outliers e não capta relações estatísticas entre variáveis. Já a correlação de Pearson é vantajosa quando se deseja capturar padrões de variação entre os elementos, funcionando bem mesmo com escalas diferentes. Porém, ela não mede distância real, pode ser menos intuitiva em termos espaciais e não é eficaz quando não há uma relação linear clara entre os dados.
Uma forma mais facil de interpretar a matrix de proximidade é
visualizá-la utilizando a função fviz_dist().
fviz_dist(dist.ss.eucl)
Na figura acima, vermelho representa alta similaridade (ou seja, baixa dissimilaridade) e azul significa baixa similaridade.
A intensidade da cor é proporcional ao valor da dissimilaridade entre as observações: vermelho puro indica \(dist(x_{i}, x_{j})\) = 0, enquanto azul puro representa \(dist(x_{i}, x_{j})\) = 1.
Os objetos que pertencem ao mesmo cluster são exibidos em ordem consecutiva.
fviz_dist(dist.ss.cor)
Repare as diferenças entre o método euclidiano e o método baseado na
correlação. O que elas podem representar?
O K-Means é um algoritmo de agrupamento utilizado para dividir um conjunto de dados em K grupos, com base na similaridade entre os pontos. Ele opera de forma iterativa, buscando uma separação ideal dos dados ao ajustar continuamente os centroides dos clusters. O principal objetivo do K-Means é minimizar a variação dentro de cada grupo, tornando os elementos de cada cluster o mais homogêneos possível.
O funcionamento do K-Means começa com a definição do número de clusters (K), que deve ser escolhido pelo usuário. Em seguida, o algoritmo seleciona aleatoriamente K pontos iniciais como centroides. Cada ponto do conjunto de dados é então atribuído ao centróide mais próximo, formando grupos iniciais. Após essa etapa, os centroides são recalculados com base na média dos pontos atribuídos a cada cluster, e esse processo de atribuição e ajuste continua até que os centroides se estabilizem e não apresentem mudanças significativas.
Na área de relações internacionais, o K-Means pode ser aplicado em diversas análises. Por exemplo, pode ser usado para segmentar países com características econômicas semelhantes, facilitando a compreensão de dinâmicas comerciais globais. Também pode identificar padrões em alianças diplomáticas com base em tratados firmados, estudar fluxos migratórios ao agrupar regiões com comportamentos semelhantes, ou até classificar conflitos internacionais conforme critérios como localização, impacto e duração. Um analista, por exemplo, pode aplicar o K-Means para detectar blocos comerciais emergentes ao agrupar nações com padrões semelhantes de exportação e importação, fornecendo subsídios para políticas econômicas e estratégias de negociação.
km.res <- kmeans(df.ss.scaled, 4, nstart = 50) # 4 representa o número de cluster e 50 atribuições iniciais aleatórias.
print(km.res)
## K-means clustering with 4 clusters of sizes 16, 11, 8, 15
##
## Cluster means:
## PHYSINT DISAP KILL POLPRIS TORT NEW_EMPINX
## 1 0.3712311 0.5036867 0.3217724 0.3910438 0.006893291 0.3557125
## 2 -0.9539513 -0.7597698 -0.5657287 -0.9585181 -0.854768035 -1.5883524
## 3 -1.2869343 -1.0819936 -1.3183297 -1.1296820 -0.682435770 -0.2091667
## 4 0.9899495 0.5969620 0.7747530 0.8882970 0.983442793 0.8969206
## ASSN FORMOV DOMMOV SPEECH ELECSD NEW_RELFRE
## 1 0.2395716 0.4297992 0.5181138 0.22686343 0.1267116 0.2739050
## 2 -1.1073022 -1.5083287 -1.4643124 -1.31993266 -1.2491970 -1.0229935
## 3 -0.7061058 0.2592440 -0.1377264 -0.08249579 0.1267116 -0.5820480
## 4 0.9330683 0.5093917 0.5946285 0.76996072 0.7133393 0.7684556
## WORKER WECON WOPOL INJUD
## 1 0.01896747 -0.1231380 0.4478343 -0.5477251
## 2 -0.88629831 -0.5465145 -0.3556961 -0.8390682
## 3 0.25606089 -0.3599418 0.4478343 -0.2563820
## 4 0.49315431 0.7240935 -0.4556910 1.3362938
##
## Clustering vector:
## Slovenia Turkey
## 4 3
## Bangladesh Syria
## 3 2
## Dominica Monaco
## 4 4
## Cote d'Ivoire Yemen
## 2 2
## Vanuatu Senegal
## 4 1
## Kiribati Korea, Democratic People's Republic of
## 4 2
## Ukraine Korea, Republic of
## 1 4
## Paraguay Lesotho
## 1 4
## Guinea-Bissau Bulgaria
## 1 1
## Argentina Vietnam
## 1 2
## Turkmenistan Sri Lanka
## 2 3
## India Iraq
## 3 2
## Uzbekistan Lithuania
## 2 4
## Moldova Hungary
## 1 4
## Romania Canada
## 1 4
## Maldives Tonga
## 1 4
## Thailand Haiti
## 3 1
## Botswana Seychelles
## 4 1
## Ecuador Panama
## 1 4
## Slovak Republic Zimbabwe
## 1 2
## Central African Republic Grenada
## 2 4
## Tunisia Swaziland
## 3 2
## Gabon Portugal
## 1 4
## Latvia Uganda
## 1 3
## Colombia Bolivia
## 3 1
##
## Within cluster sum of squares by cluster:
## [1] 115.68082 69.07007 63.86774 88.92554
## (between_SS / total_SS = 56.9 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Este resultado refere-se à aplicação do algoritmo K-Means com a definição de 4 clusters, que agruparam os países da seguinte maneira: 16, 11, 8 e 15 países em cada grupo, respectivamente. O objetivo do agrupamento é identificar padrões semelhantes entre os países com base em variáveis relacionadas aos direitos humanos.
Com isso temos que:
cluster_summary <- as.data.frame(table(km.res$cluster))
colnames(cluster_summary) <- c("Cluster", "Quantidade")
print(cluster_summary)
## Cluster Quantidade
## 1 1 16
## 2 2 11
## 3 3 8
## 4 4 15
O primeiro aspecto a ser analisado são as médias das variáveis dentro de cada cluster.
Como se pode observar na saída e considerando que os dados foram
previamente padronizados, os valores representam desvios em relação à
média geral do conjunto. O Cluster 4, por exemplo, apresenta
valores significativamente positivos em variáveis como
PHYSINT, DISAP, KILL e
POLPRIS, o que sugere que os países desse grupo possuem
altos níveis de repressão e violência política. Já o
Cluster 2 mostra valores negativos, indicando que os
países ali agrupados tendem a registrar baixos índices de
repressão, apresentando condições menos severas nesses
aspectos.
No que diz respeito à distribuição dos países entre os clusters, observa-se uma certa coerência entre os grupos formados.
Países como Slovenia e Dominica foram incluídos no Cluster 4, o que indica que compartilham características associadas a altos níveis de repressão. Já Turkey e Bangladesh pertencem ao Cluster 3, enquanto Syria e Yemen aparecem no Cluster 2, sugerindo que possuem padrões semelhantes de violência e repressão. Países como Senegal e Argentina, alocados no Cluster 1, parecem apresentar características comuns distintas dos demais grupos.
Outro ponto importante é a soma dos quadrados dentro dos clusters, que mede a variabilidade interna de cada grupo.
Os valores foram [115.68, 69.07, 63.86, 88.92] para os
clusters 1 a 4, respectivamente. O Cluster 1, com o valor mais
alto, apresenta maior heterogeneidade entre seus países, o que
pode indicar diversidade nos níveis das variáveis analisadas. Em
contrapartida, o Cluster 3, com a menor soma dos quadrados,
sugere maior homogeneidade, ou seja, os países desse grupo têm
perfis mais parecidos entre si.
Quanto à qualidade geral do agrupamento, o valor de \(between_{SS} / total_{SS} = 56,9\) indica que cerca de 56,9% da variabilidade total foi explicada pela divisão em clusters. Isso mostra que o modelo conseguiu capturar uma parte considerável da estrutura dos dados, ainda que exista margem para melhorar a separação dos grupos. Uma explicação maior da variabilidade total poderia ser alcançada com ajustes, como a redefinição do número de clusters ou a inclusão de novas variáveis.
Os resultados obtidos com o K-Means permitiram a identificação de
padrões relevantes entre os países, especialmente em relação à
repressão política e violência. Essa análise pode ser útil para estudos
comparativos, formulação de políticas internacionais ou monitoramento de
condições sociopolíticas. Dependendo do foco da análise, o número de
clusters (K) pode ser ajustado para refinar a segmentação e
melhorar a interpretação dos dados.
Para interpretar os agrupamentos com base nos valores originais das variáveis, pode-se utilizar a média de cada variável dentro de cada cluster, conforme a seguinte fórmula:
aggregate(df.ss, by = list(cluster = km.res$cluster), mean) # calcula a média para cada variável por cluster utilizando o dado original
Agora, se você deseja inserir o número do classer na tabela original do dado, pode utlizar a seguinte formula:
df.ss <- cbind(df.ss, cluster = km.res$cluster) # assinala na tabela orginal o número do cluster
Outra forma para interpretar os dados e identificar as características de cada grupo consiste na utilização de técnicas de análise visual.
fviz_cluster(km.res, data = df.ss,
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid", # Indica dispersão dos dados ao redor dos centróides.
star.plot = TRUE, # Adiciona segmentos dos centróides até os itens.
repel = TRUE, # Evita sobreposição de rótulos.
ggtheme = theme_minimal()
)
O K-Medoids, também conhecido como PAM (Partitioning Around Medoids), é um algoritmo de agrupamento que se assemelha ao K-Means, mas adota uma abordagem mais robusta frente a outliers e dados ruidosos. Diferentemente do K-Means, que utiliza a média dos pontos para definir os centros dos clusters, o K-Medoids escolhe pontos reais do conjunto de dados para serem os medoids. Essa característica contribui para uma melhor interpretabilidade dos grupos formados, já que os representantes de cada cluster são dados reais.
Esse algoritmo é recomendado em situações onde há presença de outliers, pois é menos sensível a valores extremos em comparação ao K-Means. Além disso, o K-Medoids pode utilizar diferentes medidas de dissimilaridade, não se limitando à distância euclidiana, o que o torna mais flexível. Também é ideal quando se busca maior interpretabilidade e estabilidade nos agrupamentos, já que tende a produzir resultados mais consistentes entre diferentes execuções e oferece uma representação mais fiel dos dados.
O funcionamento do PAM se baseia em duas etapas principais. Na fase de construção, o algoritmo seleciona k objetos iniciais do conjunto de dados como medoids. Em seguida, na fase de troca, ele substitui iterativamente os medoids escolhidos por outros pontos, com o objetivo de minimizar a soma das dissimilaridades dentro de cada cluster, refinando os agrupamentos de maneira eficiente.
O método CLARA (Clustering Large Applications) é uma abordagem de análise de agrupamento desenvolvida para lidar com grandes volumes de dados de forma eficiente. Trata-se de uma variação do algoritmo PAM, projetada especificamente para reduzir o custo computacional sem abrir mão da robustez na identificação dos clusters. Essa adaptação torna o CLARA uma opção prática e eficaz para cenários em que o PAM tradicional se torna inviável devido ao tamanho do conjunto de dados.
O funcionamento do CLARA baseia-se na seleção de amostras aleatórias menores do conjunto de dados original. Em seguida, o algoritmo PAM é aplicado a essas amostras para identificar os medoids, que são pontos representativos dos clusters. Com os medoids definidos, os demais pontos do conjunto de dados completo são classificados com base na proximidade a esses representantes. Essa estratégia permite acelerar o processo de agrupamento sem comprometer significativamente a qualidade dos resultados.
O uso do CLARA é recomendado em situações em que há um volume de dados muito grande, tornando o uso direto do PAM impraticável. Também é indicado quando se busca uma solução rápida e escalável para identificar padrões em dados heterogêneos, mantendo a robustez característica do PAM.
O Cluster Hierárquico Aglomerativo é uma técnica de agrupamento que adota uma abordagem de baixo para cima, ou seja, parte do princípio de que cada ponto de dado começa como um cluster individual. À medida que o processo avança, os clusters mais próximos entre si são mesclados com base em uma métrica de distância, formando gradualmente grupos maiores até que todos os elementos estejam reunidos em um único cluster ou até que se atinja o número desejado de agrupamentos.
Esse método funciona de forma iterativa: inicialmente, cada dado é tratado como seu próprio cluster. Em seguida, identifica-se o par de clusters mais semelhantes e realiza-se a fusão entre eles. Esse ciclo se repete até que o critério de parada seja alcançado. O resultado do processo pode ser visualizado por meio de um dendrograma — um gráfico em forma de árvore que ilustra as sucessivas junções e revela a estrutura hierárquica dos dados.
O uso do Cluster Hierárquico Aglomerativo é indicado quando o número de clusters não é conhecido previamente, pois o dendrograma ajuda na exploração visual da estrutura dos dados. Também é útil em contextos que envolvem relações hierárquicas, como a análise de alianças entre países, o agrupamento de estados com padrões semelhantes de voto em organizações internacionais ou a identificação de blocos regionais com interesses econômicos ou políticos comuns. Além disso, é uma abordagem mais interpretável do que métodos como o K-Means, por não exigir um número pré-definido de grupos e por lidar bem com clusters que não seguem formatos esféricos.
Lembre-se é importante que os dados estajam padronizados.
df.scaled <- scale(df.ss)
Para o nosso exemplo, vamos calcular a matriz de proximidade com base no método euclidiano.
res.dist <- dist(df.scaled, method = "euclidean")
Com isso obtemos:
round(as.matrix(res.dist)[1:5, 1:5], 4) #Esta é apenas uma visão parcial da matrix de proximidade.
## Slovenia Turkey Bangladesh Syria Dominica
## Slovenia 0.0000 6.9301 7.3577 10.1383 2.8133
## Turkey 6.9301 0.0000 3.6247 5.5678 6.7495
## Bangladesh 7.3577 3.6247 0.0000 4.2937 6.6686
## Syria 10.1383 5.5678 4.2937 0.0000 9.9279
## Dominica 2.8133 6.7495 6.6686 9.9279 0.0000
Na análise de cluster hierárquico aglomerativo, o tipo de ligação (ou linkage) determina como a distância entre grupos de elementos será calculada à medida que os clusters são formados. Essa escolha influencia diretamente a estrutura final do agrupamento e, consequentemente, a interpretação dos resultados. Existem diferentes estratégias de ligação, cada uma com suas características específicas.
A ligação simples considera a menor distância entre pares de pontos de dois clusters, o que pode gerar grupos alongados e sensíveis a outliers.
Já a ligação completa utiliza a maior distância entre pontos de diferentes clusters, promovendo a formação de grupos mais compactos e coesos.
A ligação média calcula a distância entre clusters com base na média das distâncias entre todos os pares de pontos, oferecendo um equilíbrio entre as abordagens anterior.
A ligação do centróide considera a distância entre os centroides de cada grupo, mas pode produzir resultados instáveis em conjuntos de dados muito dispersos.
E, a ligação de Ward busca minimizar a variabilidade interna dos clusters, formando grupos mais homogêneos e equilibrados. Devido à sua robustez, essa técnica é amplamente empregada em aplicações práticas. A escolha do método de ligação deve considerar as características dos dados e os objetivos da análise.
Para calcular as ligações no R, pode-se utilizar a seguinte formula:
res.hc <- hclust(d = res.dist, method = "ward.D2")
Com base nas ligações que foram calculadas anteriormente, pode-se criar o dendograma.
O dendrograma é uma ferramenta gráfica na Análise de Cluster Hierárquico, permitindo visualizar a maneira como os elementos são agrupados durante o processo de fusão. Ele tem a aparência de uma árvore, com ramificações que representam a união de clusters baseados na similaridade dos dados. Cada divisão do dendrograma revela como os clusters se formam e se fundem à medida que a distância entre eles diminui. A altura das ramificações é uma medida importante, pois quanto maior for a altura, maior será a distância entre os grupos unidos.
O dendrograma serve para diversas finalidades. Ele ajuda a visualizar relações entre os elementos, facilitando a identificação de quais objetos são mais semelhantes. Além disso, é útil para definir o número ideal de clusters, pois a altura das fusões auxilia na escolha de um ponto de corte adequado. O dendrograma também permite interpretar padrões nos dados. Possibilita também a comparação entre diferentes métodos de ligação, mostrando como os critérios de fusão impactam a estrutura final dos clusters.
O dendograma pode ser gerado a partir da seguinte função:
fviz_dend(res.hc, cex = 0.5) # cex é o argumento que define o tamanho da fonte no gráfico.
Como se pode observar na figura acima, cada país começa como um cluster único e, à medida que avançamos, podemos observar como os países se agrupam com base em suas similaridades. A proximidade de dois países no gráfico, representada por linhas mais curtas, indica que eles possuem características mais semelhantes, enquanto linhas mais longas revelam fusões entre grupos menos similares.
No caso da análise de direitos humanos, essa estrutura permite perceber quais países compartilham padrões semelhantes em áreas como liberdade política, repressão governamental e violações de direitos.
Para definir um número específico de clusters no dendrograma, basta traçar uma linha horizontal em um ponto onde as fusões estão bem separadas. Isso ajuda a determinar o número de grupos que melhor representam os dados analisados. Por exemplo, ao cortar o dendrograma em um nível intermediário, é possível formar de 4 a 5 clusters distintos, dependendo do ponto de corte.
No contexto de direitos humanos, essa separação pode indicar como diferentes países se alinham ou se distanciam em termos de suas políticas e práticas relacionadas a esses direitos.
A interpretação dos agrupamentos no dendrograma revela padrões importantes sobre os países analisados. Países que aparecem próximos uns dos outros geralmente compartilham características comuns, o que, no caso dos direitos humanos, pode indicar alianças regionais ou políticas semelhantes. Alguns clusters mais distantes podem sinalizar diferenças significativas, como políticas contrastantes de repressão ou proteção de direitos. Além disso, é possível identificar tendências regionais ou até anomalias, como um país com baixos índices de proteção de direitos humanos sendo agrupado com nações mais avançadas, sugerindo a presença de fatores externos que influenciam essa distribuição.
Para avaliar o quanto a estrutura do dendrograma preserva as distâncias originais entre os elementos agrupados, utiliza-se o coeficiente de correlação cophenética.
Este coeficiente compara a matriz de distâncias original com a matriz cophenética, que representa as distâncias derivadas da hierarquia dos clusters no dendrograma, mostrando assim a fidelidade do agrupamento em relação aos dados iniciais.
Um valor alto, próximo de 1, indica que o dendrograma reflete bem as distâncias reais entre os elementos. Quando o valor é baixo, isso sugere que o agrupamento hierárquico pode não estar representando de forma eficiente os padrões presentes no conjunto de dados, dificultando a interpretação dos clusters.
O coeficiente de correlação cophenética pode ser usado para comparar diferentes métodos de ligação, auxiliando na escolha da técnica mais adequada para os dados.
res.coph <- cophenetic(res.hc)
cor(res.dist, res.coph)
## [1] 0.7379411
Em nosso exemplo, o coeficiente de correlação cophenética encontrado foi de 0.7379. Este é um valor relativamente alto, indicando que o agrupamento hierárquico conseguiu manter uma boa correspondência com as distâncias originais.
A partir da análise do dendograma é possível identificar 4 grupos bem
definidos na altura 10. Sendo assim, para definir os grupos, basta
aplicar a função cutree.
grp4 <- cutree(res.hc, k = 4)
Para obter o tamanho de cada grupo, basta utilizar a função
table.
table(grp4)
## grp4
## 1 2 3 4
## 15 6 17 12
Caso queira identificar os membros de cada grupo, é possível identificá-los a partir da função abaixo:
rownames(df.ss)[grp4 == 2]
## [1] "Turkey" "India" "Thailand" "Tunisia" "Uganda" "Colombia"
Ainda é possível deixar a apresentação mais elegante, se isto for desejado.
fviz_dend(res.hc, k = 4, # Corta em 4 grupos
cex = 0.5, # Tamanho do rórulo
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE, # Cor do rótulo por grupo
rect = TRUE # Adicione um retângulo ao redor dos grupos
)
fviz_cluster(list(data = df.ss, cluster = grp4),
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid", # Concentration ellipse
repel = TRUE, # Avoid label overplotting (slow)
show.clust.cent = FALSE, ggtheme = theme_minimal())
Uma vez definido satisfatóriamente os agrupamentos, é hora de identifcar a qual grupo cada caso pertence. Isso, como apresentado anteriormente, pode ser executado a partir da seguinte função.
df.ss <- cbind(df.ss, cluster.hc = grp4)
head(df.ss, 5)
Repare na tabela que as colunas cluster e
cluster.hc identificam o grupo ao qual pertence o país de
acordo com o método de classificação (K-means vs. Hierarquico
Aglomerativo).
A validação dos agrupamentos na análise de cluster é muito importante para assegurar que os grupos formados sejam consistentes e reflitam padrões significativos nos dados. Sem esse processo, os clusters podem ser arbitrários ou pouco informativos, comprometendo a qualidade e a confiabilidade da análise.
Antes de aplicar qualquer algoritmo de cluster a um conjunto de dados, o primeiro passo é avaliar a tendência de agrupamento — ou seja, verificar se a aplicação de uma técnica de clusterização é realmente apropriada. Isso envolve analisar se os dados apresentam agrupamentos significativos, com padrões organizados, em vez de uma distribuição puramente aleatória.
Embora essa verificação possa ser visual, há um método estatísitco apropriado para esse fim, a estatística Hopkins.
A estatística de Hopkins é um recurso empregado antes de rodar algoritmos de agrupamentos, como K-Means ou Hierárquico, para avaliar se existe viabilidade em buscar agrupamentos nos dados.
Ela responde à pergunta: “Os dados possuem estrutura de cluster ou estão distribuídos aleatoriamente?”.
Ao gerar um valor numérico entre 0 e 1, a estatística de Hopkins compara a distribuição real dos dados com uma distribuição aleatória. Para isso, são feitas amostras de pontos reais do conjunto de dados e pontos aleatórios gerados no mesmo espaço. A partir disso, calcula-se a proximidade entre esses pontos e seus vizinhos reais.
Para interpretar a estatística Hopkins, considere que:
Para avaliar a tendência a clusterização em nosso exemplo, basta aplicar a seguinte formula.
hopkins(df.ss.scaled, m = 10) # m executa o teste de Hopkins, analisando 10 pontos amostrados
## [1] 0.9931838
O resultado 0.9931838 da estatística Hopkins indica que os dados possuem uma forte tendência de agrupamento. Se o valor do teste for maior ou igual a 0.75, pode-se considerar que o conjunto de dados é adequado para Análise de Cluster.
Determinar o número ideal de clusters em um conjunto de dados é um ponto crítico no processo de clusterização. O método K-Means, por exemplo, exige que o usuário defina a priori o número de clusters k.
Na prática, não há uma resposta definitiva, pois o número ótimo de clusters depende da metodologia utilizada para medir similaridades e dos parâmetros escolhidos.
Uma solução simples e popular é usar o dendrograma gerado pela clusterização hierárquica, mas esse método também é subjetivo.
Para ajudar a reduzir o viés da subjetividade, algums métodos podem ser empregados como Elbow, Silhouette e Gap.
Vejamos cada um separadamente.
O Método de Elbow é uma técnica visual muito utilizada para definir o número ideal de clusters em algoritmos de agrupamento, como o K-Means. O objetivo principal dessa técnica é identificar o ponto em que a adição de mais clusters não melhora significativamente a separação dos dados, ajudando assim a evitar tanto a sobrecarga quanto a subdefinição de agrupamentos.
Para aplicá-lo, calcula-se a soma total dos quadrados dentro dos grupos (WCSS) para diferentes valores de \(k\), ou seja, o número de clusters. Portanto, mede-se a variabilidade dos pontos de dados dentro de cada cluster em relação ao centroide (média) desse cluster. Quanto menor essa soma, mais homogêneo é cada grupo, indicando um bom ajuste dos dados ao modelo de agrupamento.
Em seguida, um gráfico é gerado, com o número de clusters no eixo \(x\) e a soma total dos quadrados dentro dos grupos no eixo \(y\). O ponto de inflexão, ou “cotovelo”, é onde a diminuição do WCSS começa a ser menos acentuada, indicando o número ideal de clusters a ser escolhido.
Vejamos o nosso exemplo:
fviz_nbclust(df.ss.scaled, kmeans, method = "wss") +
geom_vline(xintercept = 4, linetype = 2) +
labs(subtitle = "Elbow method")
Como se pode observar no gráfico, à medida que o número de clusters aumenta, o WCSS diminui, pois a variabilidade dentro dos clusters tende a ser menor, já que os elementos são divididos em mais grupos.
O objetivo principal do método é identificar o ponto onde adicionar mais clusters não resulta em uma melhoria significativa na separação dos dados. Esse ponto de inflexão, conhecido como “cotovelo”, aparece no gráfico como uma mudança na curva, e ele indica o número ideal de clusters. Se houver um cotovelo visível, isso sugere o valor de \(k\) que melhor representa a estrutura dos dados, evitando a criação de agrupamentos desnecessários.
Ao interpretar o gráfico, se o “cotovelo” estiver, por exemplo, em \(k = 4\), isso indica que quatro clusters são suficientes para representar a estrutura dos dados de forma eficiente. Se o gráfico não apresentar um cotovelo claro, outras métricas, como o Índice de Silhouette, podem ser usadas como complemento para determinar o número adequado de clusters.
O Método da Silhouette é uma técnica utilizada para avaliar a qualidade dos clusters em uma análise de agrupamento, medindo tanto a coesão quanto a separação entre os clusters. Ele verifica o quão bem cada ponto está ajustado ao seu próprio cluster (coesão) e quão distante ele está dos clusters vizinhos (separação). A medida resultante é um índice que varia de -1 a +1.
O índice de Silhouette pode ser interpretado da seguinte forma:
Vejamos nosso conjunto de dados:
fviz_nbclust(df.ss.scaled, kmeans, method = "silhouette") +
labs(subtitle = "Silhouette method")
Como se pode observar na figura, o Método da Silhouette sugere a formação de dois grupos. Não obstante, a largura média da silhueta (eixo y) quando k = 2, é ligeiramente superior a 0.3. Isto sugere que os clusters podem estar mal separados.
Para interpretar a largura média da silhueta, considere a seguinte escala:
O Método Gap é outra técnica estatística usada para determinar o número ideal de clusters em uma análise de agrupamento. Ele compara a dispersão dos clusters gerados com a dispersão esperada em um conjunto de dados aleatório, ajudando a identificar o número de clusters que melhor representa a estrutura dos dados.
fviz_nbclust(df.ss.scaled, kmeans, nstart = 50, method = "gap_stat", nboot = 500) +
labs(subtitle = "Gap statistic method")
Como se pode observar na figura, o número sugerido de clusters é 4. Por que 4? Porque o número ótimo de clusters geralmente é identificado como o primeiro ponto onde a Gap Statistic atinge um valor máximo e não diminui significativamente nos próximos valores.
Em nosso exemplo, o valor de Gap Statistic está entre 0.30 e 0.35. Isto sugere que há uma moderada evidência de estrutura de agrupamento nos dados, mas não uma separação extremamente forte entre os clusters.
Lembre-se, a escala para interpretação do Gap Statistic:
Conclusão
Método de Elbow: solução sugerida de 4 clusters
Método da Silhueta: solução sugerida de 2 clusters
Método Gap: solução sugerida de 4 clusters
Com base nessas observações, é possível definir \(k = 4\) como o número ideal de clusters nos dados.
A função NbClust() no R é usada para determinar o número
ideal de clusters em uma análise de agrupamento. Ela fornece 30 índices
diferentes para avaliar a melhor quantidade de clusters em um conjunto
de dados, permitindo uma escolha mais precisa.
Agora vamos explorar os aspectos principais dos grupos formados para entender melhor os padrões e as diferenças entre eles.
Primeiro, vamos relembrar a distribuição dos clusters com base no método K-means.
print(cluster_summary)
## Cluster Quantidade
## 1 1 16
## 2 2 11
## 3 3 8
## 4 4 15
fviz_cluster(km.res, data = df.ss,
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid", # Indica dispersão dos dados ao redor dos centróides.
star.plot = TRUE, # Adiciona segmentos dos centróides até os itens.
repel = TRUE, # Evita sobreposição de rótulos.
ggtheme = theme_minimal()
)
AS informações acima apotam que foram identificados 4 clusters com tamanhos variados. O Cluster 1 contém 16 países, o Cluster 2 possui 11 países, o Cluster 3 é composto por 8 países e o Cluster 4 tem 15 países.
A diferença no tamanho dos clusters pode sugerir que os dados estão divididos de maneira desigual, o que pode indicar características distintas ou padrões de agrupamento nos diferentes grupos. Nossa intenção agora é compreender os padrões de agrupamentos.
Como possuímos um conjunto grande de variáveis, vamos classificá-las por temas e depois calcular a média segundos os temas.
A partir da descrição das variávies podemos classificar as variávies em 4 grupos da seguinte maneira: 1) direitos de integridade física, 2) direitos de empoderamento, 3) direito das mulheres e 4) instituições democráticas e justiça.
Vejamos separadamente.
1. Direitos de Integridade Física
Os indicadores que medem a proteção contra abusos físicos cometidos por agentes estatais está dado por:
| Código | Nome do Indicador | Descriação |
|---|---|---|
| PHYSINT | Índice de Direitos de Integridade Física | 0 (nenhum respeito governamental) a 8 (respeito total) |
| DISAP | Desaparecimento | 0 = desaparecimentos frequentes; 1 = desaparecimentos ocasionais; 2 = nenhum desaparecimento no ano. |
| KILL | Execução Extrajudicial | 0 = execuções frequentes; 1 = execuções ocasionais; 2 = nenhuma execução. |
| POLPRIS | Prisão Política | 0 = muitas prisões políticas; 1 = algumas prisões; 2 = nenhuma prisão política. |
| TORT | Tortura | 0 = tortura frequente; 1 = ocasional; 2 = nenhuma tortura. |
Para calcular o valor médio de cada variável para cada grupo, pode-se utilizar o seguinte comando.
resumo1 <- df.ss %>%
group_by(cluster) %>%
summarise(count = n(),
PHYSINT = mean(as.numeric(PHYSINT)), #MÉDIA
DISAP = mean(as.numeric(DISAP)),
KILL = mean(as.numeric(KILL)),
POLPRIS = mean(as.numeric(POLPRIS)),
TORT = mean(as.numeric(TORT))
)
print(resumo1)
## # A tibble: 4 × 7
## cluster count PHYSINT DISAP KILL POLPRIS TORT
## <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 16 5.44 1.94 1.44 1.44 0.625
## 2 2 11 2.09 1.09 0.727 0.273 0
## 3 3 8 1.25 0.875 0.125 0.125 0.125
## 4 4 15 7 2 1.8 1.87 1.33
Do ponto de vista da integridade física, o cluser 4 parece ser, em média, o que os agentes estatais menos cometem abusos físicos. Já o cluster 3, ao contrário, costuma ter desapacimentos, execuções e tortura frequentes, além de muitas prisões políticas.
Lembre-se, o cluster 4, através do método K-means, é formado pelos seguintes países:
df.ss %>%
filter(cluster == 4) %>%
rownames()
## [1] "Slovenia" "Dominica" "Monaco"
## [4] "Vanuatu" "Kiribati" "Korea, Republic of"
## [7] "Lesotho" "Lithuania" "Hungary"
## [10] "Canada" "Tonga" "Botswana"
## [13] "Panama" "Grenada" "Portugal"
Já, o cluster 3, é composto por:
df.ss %>%
filter(cluster == 3) %>%
rownames()
## [1] "Turkey" "Bangladesh" "Sri Lanka" "India" "Thailand"
## [6] "Tunisia" "Uganda" "Colombia"
2. Direitos de Empoderamento
No que diz respeito a liberdade de expressão, associação, movimento, participação política e liberdades civis em geral, encontramos as seguintes evidências sobre empoderamento da população civil.
| Código | Nome do Indicador | Descrição |
|---|---|---|
| NEW_EMPINX | Índice de Direitos de Empoderamento | Varia de 0 (nenhum respeito) a 14 (respeito total). |
| ASSN | Liberdade de Associação e Reunião | 0 = liberdade severamente restringida; 1 = limitada; 2 = plenamente garantida. |
| FORMOV | Liberdade de Movimento Externo | 0 = severamente restrito; 1 = moderadamente restrito; 2 = plenamente livre. |
| DOMMOV | Liberdade de Movimento Interno | 0 = severamente restrito; 1 = moderadamente restrito; 2 = plenamente livre. |
| SPEECH | Liberdade de Expressão | 0 = censura total; 1 = censura parcial; 2 = sem censura. |
| NEW_RELFRE | Liberdade Religiosa | 0 = restrição severa; 1 = moderada; 2 = praticamente nenhuma restrição. |
resumo2 <- df.ss %>%
group_by(cluster) %>%
summarise(count = n(),
NEW_EMPINX = mean(as.numeric(NEW_EMPINX)), #MÉDIA
ASSN = mean(as.numeric(ASSN)),
FORMOV = mean(as.numeric(FORMOV)),
DOMMOV = mean(as.numeric(DOMMOV)),
SPEECH = mean(as.numeric(SPEECH)),
NEW_RELFRE = mean(as.numeric(NEW_RELFRE))
)
print(resumo2)
## # A tibble: 4 × 8
## cluster count NEW_EMPINX ASSN FORMOV DOMMOV SPEECH NEW_RELFRE
## <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 16 9.44 1.25 1.88 1.88 0.938 1.5
## 2 2 11 1.91 0.182 0.455 0.364 0 0.364
## 3 3 8 7.25 0.5 1.75 1.38 0.75 0.75
## 4 4 15 11.5 1.8 1.93 1.93 1.27 1.93
No que tange aos direitos de empoderamento, o cluster 4 é o que mais se aproxima do respeito total. Já o cluster 2 é o agrupamento de países que mais impõe restrições a liberdade de associação, de movimento externo e interno, bom como a liberdade religiosa e de expressão.
O cluster 2, é formado por:
df.ss %>%
filter(cluster == 2) %>%
rownames()
## [1] "Syria"
## [2] "Cote d'Ivoire"
## [3] "Yemen"
## [4] "Korea, Democratic People's Republic of"
## [5] "Vietnam"
## [6] "Turkmenistan"
## [7] "Iraq"
## [8] "Uzbekistan"
## [9] "Zimbabwe"
## [10] "Central African Republic"
## [11] "Swaziland"
3. Direitos das Mulheres
A autonomia das mulheres nas esferas econômica e política é um tema bastante compleicado. Como se pode observar abaixo, em todos os países elas estão muito distantes de terem seus direitos totalmente garantidos e aplicados.
| Código | Nome do Indicador | Nome do Indicador |
|---|---|---|
| WECON | Direitos Econômicos das Mulheres | 0 = nenhum direito garantido; 1 = direitos na lei, mas sem aplicação; 2 = direitos garantidos com alguma discriminação; 3 = direitos totalmente garantidos e aplicados. |
| WOPOL | Direitos Políticos das Mulheres | 0 = nenhum direito garantido; 1 = direitos na lei, mas sem aplicação; 2 = direitos garantidos com alguma discriminação; 3 = direitos totalmente garantidos e aplicados. |
resumo3 <- df.ss %>%
group_by(cluster) %>%
summarise(count = n(),
WECON = mean(as.numeric(WECON)), #MÉDIA
WOPOL = mean(as.numeric(WOPOL))
)
print(resumo3)
## # A tibble: 4 × 4
## cluster count WECON WOPOL
## <int> <int> <dbl> <dbl>
## 1 1 16 1.06 2.25
## 2 2 11 0.727 1.91
## 3 3 8 0.875 2.25
## 4 4 15 1.73 1.87
Como relação aos direitos econômicos e políticos da mulheres, em nossa amostra, nenhum grupo de países possui garantidos e aplicados totalmente esses direito. Com relação aos direitos políticos, ou estão garantidos com algum tipo de discriminação (clusteres 1 e 3), ou estão garantidos na lei, porém sem aplicação (clusters 2 e 4.) Do ponto de vista econômico essa situação é ainda pior, pois, em média, ou a lei é inexiste ou não é aplicada.
4. Instituições Democráticas e Justiça
Indicador sobre a independência do sistema judiciário, essencial para o funcionamento democrático.
| Código | Nome do Indicador | Descrição |
|---|---|---|
| INJUD | Independência do Judiciário | 0 = não independente; 1 = parcialmente independente; 2 = geralmente independente. |
| ELECSD | Autodeterminação Eleitoral | 0 = direito inexistente; 1 = limitado; 2 = participação política amplamente garantida. |
| WORKER | Direitos dos Trabalhadores | 0 = severamente restritos; 1 = moderadamente restritos; 2 = plenamente protegidos. |
resumo4 <- df.ss %>%
group_by(cluster) %>%
summarise(count = n(),
INJUD = mean(as.numeric(INJUD)), #MÉDIA
ELECSD = mean(as.numeric(ELECSD)),
WORKER = mean(as.numeric(WORKER))
)
print(resumo4)
## # A tibble: 4 × 5
## cluster count INJUD ELECSD WORKER
## <int> <int> <dbl> <dbl> <dbl>
## 1 1 16 0.25 1.25 0.75
## 2 2 11 0 0.273 0.273
## 3 3 8 0.5 1.25 0.875
## 4 4 15 1.87 1.67 1
Como se pode observar na tabela acima, o Cluster 4 é o conjunto de países que possuir maior grau de independencia do judiciário em relação aos militares. O contrário não ocorre com o Cluster 2.
Visto conjuntamente:
resumo <- df.ss %>%
group_by(cluster) %>%
summarise(count = n(),
PHYSINT = mean(as.numeric(PHYSINT)),
DISAP = mean(as.numeric(DISAP)),
KILL = mean(as.numeric(KILL)),
POLPRIS = mean(as.numeric(POLPRIS)),
TORT = mean(as.numeric(TORT)),
NEW_EMPINX = mean(as.numeric(NEW_EMPINX)),
ASSN = mean(as.numeric(ASSN)),
FORMOV = mean(as.numeric(FORMOV)),
DOMMOV = mean(as.numeric(DOMMOV)),
SPEECH = mean(as.numeric(SPEECH)),
NEW_RELFRE = mean(as.numeric(NEW_RELFRE)),
WECON = mean(as.numeric(WECON)),
WOPOL = mean(as.numeric(WOPOL)),
INJUD = mean(as.numeric(INJUD)),
ELECSD = mean(as.numeric(ELECSD)),
WORKER = mean(as.numeric(WORKER))
)
head(resumo)
CONCLUSÃO
Ao analisar de forma integrada todas as métricas obtidas a partir de nossa amostra de 50 países referentes ao ano de 2011, podemos concluir que:
Os países do cluster 1 compartilham um perfil de respeito razoável aos direitos humanos, mantendo um equilíbrio entre boas práticas e moderadas deficiências, o que os diferencia dos grupos com desempenho mais polarizado, como os clusters 2 e 3.
O cluster 2, por exemplo, reúne países que têm índices baixos em praticamente todas as dimensões avaliadas, caracterizando contextos de alta repressão e deficiência na garantia dos direitos humanos fundamentais.
Já o cluster 3, é formado por países que compartilham um cenário marcado por graves deficiências no respeito à integridade física, indicativo de práticas de repressão intensas, mas se diferenciam daqueles do Cluster 2 por apresentarem meios (institucionais ou outros) que, de forma relativa, possibilitam níveis intermediários de empoderamento.
Por fim, o cluster 4, caracteriza-se pelo alto desempenho em respeito aos direitos humanos, indicando que os países nele agrupados possuem bons históricos de garantia dos direitos de integridade física e de promoção das liberdades individuais e coletivas. Eles se destacam dos demais por apresentarem números próximos aos valores máximos possíveis nesses indicadores.
Por que o analista internacional deve se preocupar com a identificação de perfis de países?
Por que a partir dos perfis identificados para cada cluster, podemos sugerir orientações de políticas de direitos humanos adaptadas às características e necessidades específicas de cada grupo. Abaixo seguem alguns exemplos de ações focalizadas para cada agrupamento.
RECOMENDAÇÕES
Cluster 1 – Perfil de respeito razoável aos direitos humanos com moderado equilíbrio em relação às liberdades individuais
Políticas Sugeridas:
Fortalecimento Institucional Gradual: Incentivar a criação ou o aprimoramento de mecanismos de monitoramento e transparência, como comissões independentes de direitos humanos, que possam identificar e corrigir deficiências pontuais.
Promoção da Participação Cidadã: Desenvolver programas que estimulem a participação da sociedade civil na fiscalização e no debate de políticas públicas, de modo a consolidar boas práticas e reduzir eventuais deficiências.
Programas de Capacitação: Investir em treinamento para as forças de segurança e no judiciário, com foco na prevenção de abusos e na garantia dos direitos fundamentais.
Cluster 2 – Perfil de alta repressão sobre a população e baixa liberdade individual
Políticas Sugeridas:
Reformas Estruturais: Implantar políticas de reforma profunda no setor de segurança e justiça, visando romper com práticas repressivas históricas.
Fortalecimento dos Direitos Fundamentais: Estabelecer a criação de organismos de controle e verificação independentes, capazes de monitorar abusos e garantir a responsabilização de agentes estatais.
Incentivo à Sociedade Civil e Liberdade de Expressão: Promover reformas que ampliem o espaço para a participação de organizações não governamentais e a imprensa, como meio de pressão para a implementação efetiva dos direitos humanos.
Colaboração Internacional: Buscar apoio e cooperação com organismos internacionais para a implementação de padrões mínimos de proteção dos direitos humanos.
Cluster 3 – Perfil de altíssimas repressão sobre a população com potencial intermediário de empoderamento
Políticas Sugeridas:
Redução da Violência Estatal: Implementar políticas que priorizem a reforma de práticas repressivas, com foco na proteção da integridade física dos cidadãos. Isso pode incluir a modernização das forças de segurança e o fortalecimento de mecanismos de controle interno e externo.
Aproveitamento dos Mecanismos Institucionais Existentes: Fortalecer as estruturas que já apresentam níveis intermediários de empoderamento, incentivando programas de educação cívica e a expansão de canais de denúncia e participação social.
Transição e Reconciliação: Em contextos onde as violações já são severas, iniciativas voltadas para medidas de justiça transicional e reconciliação podem contribuir para a construção de um cenário de maior respeito e proteção dos direitos humanos.
Cluster 4 – Perfil de garantia dos direitos humanos
Políticas Sugeridas:
Consolidação dos Avanços: Adotar medidas que garantam a manutenção dos altos padrões já alcançados, como sistemas de monitoramento contínuo e avaliações periódicas das políticas públicas de direitos humanos. Há espaço também para aprimorar a autonomia da mulher.
Políticas de Inovação e Prevenção: Estimular a atualização e a inovação em práticas de proteção dos direitos, evitando retrocessos mesmo em contextos políticos e econômicos desafiadores.
Papel Pioneiro e Cooperação Internacional: Incentivar esses países a atuarem como referência e a compartilharem boas práticas com nações que estejam em processo de modernização e reforma, potencializando esforços de cooperação internacional e assistência técnica em direitos humanos.