library(rio)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(cluster)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(BBmisc)
## 
## Attaching package: 'BBmisc'
## The following objects are masked from 'package:dplyr':
## 
##     coalesce, collapse, symdiff
## The following object is masked from 'package:base':
## 
##     isFALSE
data = import("dataOK_all.xlsx")
## New names:
## • `` -> `...1`
data_seleccionada <- data %>%
  select(provincia, agua1_Red, agua10_Total, Castillo, Keiko, covidPositivos, covidFallecidos)
data_seleccionada <- data_seleccionada %>%
  mutate(agua_red_publica_porcentaje = (agua1_Red / agua10_Total) * 100)
data_seleccionada <- data_seleccionada %>%
  mutate(razon_votacion_keiko_castillo = Keiko / Castillo)
data_seleccionada <- data_seleccionada %>%
  mutate(tasa_fallecidos_1000_contagiados = (covidFallecidos / covidPositivos) * 1000)
dataClus <- data_seleccionada %>%
  select(agua_red_publica_porcentaje, razon_votacion_keiko_castillo, tasa_fallecidos_1000_contagiados) %>%
  `rownames<-`(data_seleccionada$provincia)

###PAM

dataClus_scaled <- scale(dataClus)
g.dist <- dist(dataClus_scaled, method = "euclidean")
fviz_nbclust(dataClus_scaled, pam,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F)

set.seed(123)
res.pam=pam(g.dist,1,cluster.only = F)

dataClus$pam=res.pam$cluster
silPAM=data.frame(res.pam$silinfo$widths)
silPAM$country=row.names(silPAM)
poorPAM=silPAM[silPAM$sil_width<0,'country']%>%sort()
poorPAM
## character(0)

###AGNES

fviz_nbclust(dataClus, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "agnes")

set.seed(123)

res.agnes<- hcut(g.dist, k = 1,hc_func='agnes',hc_method = "ward.D")

dataClus$agnes=res.agnes$cluster
silAGNES=data.frame(res.agnes$silinfo$widths)
silAGNES$country=row.names(silAGNES)
poorAGNES=silAGNES[silAGNES$sil_width<0,'country']%>%sort()
poorAGNES
## character(0)

###DIANA

fviz_nbclust(dataClus, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "diana")

set.seed(123)
res.diana <- hcut(g.dist, k = 1,hc_func='diana')
dataClus$diana=res.diana$cluster
silDIANA=data.frame(res.diana$silinfo$widths)
silDIANA$country=row.names(silDIANA)
poorDIANA=silDIANA[silDIANA$sil_width<0,'country']%>%sort()
poorDIANA
## character(0)