IMPORTAR DATAS

library(rio)
presicovid = import("dataOK_all.xlsx")
## New names:
## • `` -> `...1`

viviendas con agua por red pública

presicovid$agua_percent <- (presicovid$agua1_Red / presicovid$agua10_Total) * 100
presicovid$tasa_covid <- (presicovid$countFallecidos / presicovid$countPositivos) * 1000
presicovid$razon_presi <- presicovid$Keiko / presicovid$Castillo
options(repos = c(CRAN = "https://cran.rstudio.com/"))
# Instalar y cargar el paquete caret si aún no está instalado
install.packages("caret")
## Installing package into 'C:/Users/Romina/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'caret' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'caret'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problema al copiar
## C:\Users\Romina\AppData\Local\R\win-library\4.3\00LOCK\caret\libs\x64\caret.dll
## a C:\Users\Romina\AppData\Local\R\win-library\4.3\caret\libs\x64\caret.dll:
## Permission denied
## Warning: restored 'caret'
## 
## The downloaded binary packages are in
##  C:\Users\Romina\AppData\Local\Temp\RtmpW61mOT\downloaded_packages
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
# Seleccionar las columnas que deseas estandarizar
columns_to_standardize <- presicovid[, 51:53]

# Crear el objeto de preprocesamiento con el método de estandarización
preProc <- preProcess(columns_to_standardize, method = c("center", "scale"))

# Aplicar la transformación para estandarizar las columnas
standardized_columns <- predict(preProc, columns_to_standardize)

# Asignar las columnas estandarizadas de nuevo al dataframe original
presicovid[, 51:53] <- standardized_columns

# Verificar el resultado
print(head(presicovid[, 51:53]))
##   agua_percent tasa_covid razon_presi
## 1  -0.35767647 -1.1425581 -0.38149003
## 2   0.38593873 -0.5361040 -0.03106791
## 3   1.09391603 -0.8001609  0.04925502
## 4  -2.18071172 -1.2606334 -0.92027166
## 5   0.05637991 -0.4987786 -0.03127341
## 6   0.20333970  1.1681410  0.08556784
str(presicovid)
## 'data.frame':    196 obs. of  53 variables:
##  $ ...1                   : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ key                    : chr  "AMAZONAS+BAGUA" "AMAZONAS+BONGARA" "AMAZONAS+CHACHAPOYAS" "AMAZONAS+CONDORCANQUI" ...
##  $ Código                 : num  102 103 101 104 105 106 107 202 203 204 ...
##  $ pared1_Ladrillo        : num  4633 1602 3782 291 430 ...
##  $ pared2_Piedra          : num  46 9 22 7 7 7 35 1 0 3 ...
##  $ pared3_Adobe           : num  6639 2729 5881 672 5217 ...
##  $ pared4_Tapia           : num  222 240 2476 8 6052 ...
##  $ pared5_Quincha         : num  2518 157 309 386 346 ...
##  $ pared6_Piedra          : num  127 36 168 7 54 28 518 65 7 6 ...
##  $ pared7_Madera          : num  4484 2505 1270 8145 606 ...
##  $ pared8_Triplay         : num  851 30 91 200 45 24 210 18 0 1 ...
##  $ pared9_Otro            : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ pared10_Total          : num  19520 7308 13999 9716 12757 ...
##  $ techo1_Concreto        : num  2187 692 2262 56 187 ...
##  $ techo2_Madera          : num  294 75 160 188 43 48 340 57 12 8 ...
##  $ techo3_Tejas           : num  179 382 3393 177 3071 ...
##  $ techo4_Planchas        : num  13186 6084 8005 2036 9343 ...
##  $ techo5_Caña            : num  160 38 50 15 26 15 196 10 8 5 ...
##  $ techo6_Triplay         : num  106 5 14 10 12 5 62 17 4 3 ...
##  $ techo7_Paja            : num  3408 32 115 7234 75 ...
##  $ techo8_Otro            : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ techo9_Total           : num  19520 7308 13999 9716 12757 ...
##  $ piso1_Parquet          : num  6 5 23 2 4 3 20 0 0 5 ...
##  $ piso2_Láminas          : num  19 2 36 0 0 4 32 0 0 1 ...
##  $ piso3_Losetas          : num  647 165 1077 20 46 ...
##  $ piso4_Madera           : num  157 132 240 1523 295 ...
##  $ piso5_Cemento          : num  7121 2917 6189 943 1911 ...
##  $ piso6_Tierra           : num  11569 4087 6434 7228 10501 ...
##  $ piso7_Otro             : num  1 0 0 0 0 0 0 0 0 0 ...
##  $ piso8_Total            : num  19520 7308 13999 9716 12757 ...
##  $ agua1_Red              : num  9429 4569 10647 1307 7172 ...
##  $ agua2_Red_fueraVivienda: num  4392 1497 1619 867 3097 ...
##  $ agua3_Pilón            : num  793 215 184 1003 1112 ...
##  $ agua4_Camión           : num  59 0 49 2 0 0 117 0 0 0 ...
##  $ agua5_Pozo             : num  1792 474 876 2564 819 ...
##  $ agua6_Manantial        : num  270 67 92 431 132 211 471 121 61 27 ...
##  $ agua7_Río              : num  2648 388 488 3428 369 ...
##  $ agua8_Otro             : num  56 61 24 80 9 29 104 2 1 6 ...
##  $ agua9_Vecino           : num  81 37 20 34 47 8 177 9 4 6 ...
##  $ agua10_Total           : num  19520 7308 13999 9716 12757 ...
##  $ elec1_Sí               : num  13204 6025 12248 1792 10886 ...
##  $ elec2_No               : num  6316 1283 1751 7924 1871 ...
##  $ elec3_Total            : num  19520 7308 13999 9716 12757 ...
##  $ departamento           : chr  "AMAZONAS" "AMAZONAS" "AMAZONAS" "AMAZONAS" ...
##  $ provincia              : chr  "BAGUA" "BONGARA" "CHACHAPOYAS" "CONDORCANQUI" ...
##  $ Castillo               : num  25629 8374 15671 13154 12606 ...
##  $ Keiko                  : num  10770 5209 10473 1446 7840 ...
##  $ ganaCastillo           : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ countPositivos         : num  8126 389 2174 3481 456 ...
##  $ countFallecidos        : num  462 72 281 111 88 60 336 26 31 21 ...
##  $ agua_percent           : num  -0.3577 0.3859 1.0939 -2.1807 0.0564 ...
##  $ tasa_covid             : num  -1.143 -0.536 -0.8 -1.261 -0.499 ...
##  $ razon_presi            : num  -0.3815 -0.0311 0.0493 -0.9203 -0.0313 ...
chaolima <- subset(presicovid, provincia != "LIMA")
dataClus=chaolima[,c(51:53)]
row.names(dataClus)=chaolima$provincia
library(cluster)
g.dist = daisy(dataClus, metric="gower")
library(ggplot2)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

PAM - PARTICIÓN

library(factoextra)
fviz_nbclust(dataClus, pam,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F)

library(kableExtra)
set.seed(123)
res.pam=pam(g.dist,5,cluster.only = F)

#nueva columna
dataClus$pam=res.pam$cluster

# ver

head(dataClus,15)%>%kbl()%>%kable_styling()
agua_percent tasa_covid razon_presi pam
BAGUA -0.3576765 -1.1425581 -0.3814900 1
BONGARA 0.3859387 -0.5361040 -0.0310679 1
CHACHAPOYAS 1.0939160 -0.8001609 0.0492550 2
CONDORCANQUI -2.1807117 -1.2606334 -0.9202717 3
LUYA 0.0563799 -0.4987786 -0.0312734 1
RODRÍGUEZ DE MENDOZA 0.2033397 1.1681410 0.0855678 1
UTCUBAMBA -0.3364349 -0.9875844 -0.1977399 1
AIJA 1.0259083 0.1450176 -0.0559018 2
ANTONIO RAYMONDI 1.5768436 1.3034891 -0.8405290 2
ASUNCIÓN 0.8467027 0.2718473 -0.6090647 2
BOLOGNESI 0.8979283 0.4646200 -0.2093348 2
CARHUAZ 0.9380403 -0.0149440 -0.3169852 2
CARLOS FERMÍN FITZCARRALD 0.5809679 1.4598788 -0.6551620 2
CASMA 0.2768715 0.3663202 1.2717154 4
CORONGO 1.0471040 1.0170847 0.0549304 2
fviz_silhouette(res.pam,print.summary = F)

silPAM=data.frame(res.pam$silinfo$widths)
silPAM$country=row.names(silPAM)
poorPAM=silPAM[silPAM$sil_width<0,'country']%>%sort()
poorPAM
##  [1] "ACOBAMBA"          "AMBO"              "ANDAHUAYLAS"      
##  [4] "AYMARAES"          "CANGALLO"          "CARAVELÍ"         
##  [7] "CASTROVIRREYNA"    "CAYLLOMA"          "CORONEL PORTILLO" 
## [10] "DATEM DEL MARAÑÓN" "HUAMALÍES"         "HUANCAVELICA"     
## [13] "HUANTA"            "JAUJA"             "OCROS"            
## [16] "OXAPAMPA"          "PUERTO INCA"       "SAN MIGUEL"       
## [19] "SANTA CRUZ"        "TARMA"             "UCAYALI"          
## [22] "VILCAS HUAMÁN"     "YAUYOS"

AGNES - JERÁRQUICA AGLOMERATIVA

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

set.seed(123)
library(factoextra)

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

dataClus$agnes=res.agnes$cluster

# ver

head(dataClus,15)%>%kbl()%>%kable_styling()
agua_percent tasa_covid razon_presi pam agnes
BAGUA -0.3576765 -1.1425581 -0.3814900 1 1
BONGARA 0.3859387 -0.5361040 -0.0310679 1 2
CHACHAPOYAS 1.0939160 -0.8001609 0.0492550 2 2
CONDORCANQUI -2.1807117 -1.2606334 -0.9202717 3 3
LUYA 0.0563799 -0.4987786 -0.0312734 1 2
RODRÍGUEZ DE MENDOZA 0.2033397 1.1681410 0.0855678 1 2
UTCUBAMBA -0.3364349 -0.9875844 -0.1977399 1 1
AIJA 1.0259083 0.1450176 -0.0559018 2 2
ANTONIO RAYMONDI 1.5768436 1.3034891 -0.8405290 2 2
ASUNCIÓN 0.8467027 0.2718473 -0.6090647 2 2
BOLOGNESI 0.8979283 0.4646200 -0.2093348 2 2
CARHUAZ 0.9380403 -0.0149440 -0.3169852 2 2
CARLOS FERMÍN FITZCARRALD 0.5809679 1.4598788 -0.6551620 2 2
CASMA 0.2768715 0.3663202 1.2717154 4 4
CORONGO 1.0471040 1.0170847 0.0549304 2 2
fviz_silhouette(res.agnes,print.summary = F)

silAGNES=data.frame(res.agnes$silinfo$widths)
silAGNES$country=row.names(silAGNES)
poorAGNES=silAGNES[silAGNES$sil_width<0,'country']%>%sort()
poorAGNES
##  [1] "CAJABAMBA"         "CAJATAMBO"         "CARAVELÍ"         
##  [4] "CHINCHEROS"        "CORONEL PORTILLO"  "HUÁNUCO"          
##  [7] "HUAYTARÁ"          "JAÉN"              "JAUJA"            
## [10] "LA UNIÓN"          "LEONCIO PRADO"     "LORETO"           
## [13] "LUYA"              "MANU"              "NAZCA"            
## [16] "OCROS"             "OTUZCO"            "OXAPAMPA"         
## [19] "PACHITEA"          "SÁNCHEZ CARRIÓN"   "SANTIAGO DE CHUCO"
## [22] "SUCRE"             "TARATA"            "TARMA"

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 = 5,hc_func='diana')
dataClus$diana=res.diana$cluster
# veamos
head(dataClus,15)%>%kbl%>%kable_styling()
agua_percent tasa_covid razon_presi pam agnes diana
BAGUA -0.3576765 -1.1425581 -0.3814900 1 1 1
BONGARA 0.3859387 -0.5361040 -0.0310679 1 2 2
CHACHAPOYAS 1.0939160 -0.8001609 0.0492550 2 2 2
CONDORCANQUI -2.1807117 -1.2606334 -0.9202717 3 3 1
LUYA 0.0563799 -0.4987786 -0.0312734 1 2 2
RODRÍGUEZ DE MENDOZA 0.2033397 1.1681410 0.0855678 1 2 2
UTCUBAMBA -0.3364349 -0.9875844 -0.1977399 1 1 1
AIJA 1.0259083 0.1450176 -0.0559018 2 2 2
ANTONIO RAYMONDI 1.5768436 1.3034891 -0.8405290 2 2 2
ASUNCIÓN 0.8467027 0.2718473 -0.6090647 2 2 2
BOLOGNESI 0.8979283 0.4646200 -0.2093348 2 2 2
CARHUAZ 0.9380403 -0.0149440 -0.3169852 2 2 2
CARLOS FERMÍN FITZCARRALD 0.5809679 1.4598788 -0.6551620 2 2 2
CASMA 0.2768715 0.3663202 1.2717154 4 4 2
CORONGO 1.0471040 1.0170847 0.0549304 2 2 2
silDIANA=data.frame(res.diana$silinfo$widths)
silDIANA$country=row.names(silDIANA)
poorDIANA=silDIANA[silDIANA$sil_width<0,'country']%>%sort()
poorDIANA
## [1] "ASCOPE"        "CHICLAYO"      "HUACAYBAMBA"   "LA MAR"       
## [5] "LEONCIO PRADO" "PAITA"         "PASCO"         "SECHURA"
fviz_silhouette(res.diana,print.summary = F)