library(rio)
setwd("~/Documents/Estadística 2 ")
data= import("datapre2.xlsx")
## New names:
## • `` -> `...1`
str(data)
## 'data.frame': 196 obs. of 50 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 ...
## $ covidPositivos : num 8126 389 2174 3481 456 ...
## $ covidFallecidos : num 462 72 281 111 88 60 336 26 31 21 ...
library(readxl)
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(tidyr)
library(cluster)
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
head(data)
## ...1 key Código pared1_Ladrillo pared2_Piedra
## 1 1 AMAZONAS+BAGUA 102 4633 46
## 2 2 AMAZONAS+BONGARA 103 1602 9
## 3 3 AMAZONAS+CHACHAPOYAS 101 3782 22
## 4 4 AMAZONAS+CONDORCANQUI 104 291 7
## 5 5 AMAZONAS+LUYA 105 430 7
## 6 6 AMAZONAS+RODRIGUEZ DE MENDOZA 106 1546 7
## pared3_Adobe pared4_Tapia pared5_Quincha pared6_Piedra pared7_Madera
## 1 6639 222 2518 127 4484
## 2 2729 240 157 36 2505
## 3 5881 2476 309 168 1270
## 4 672 8 386 7 8145
## 5 5217 6052 346 54 606
## 6 2778 155 720 28 3646
## pared8_Triplay pared9_Otro pared10_Total techo1_Concreto techo2_Madera
## 1 851 0 19520 2187 294
## 2 30 0 7308 692 75
## 3 91 0 13999 2262 160
## 4 200 0 9716 56 188
## 5 45 0 12757 187 43
## 6 24 0 8904 480 48
## techo3_Tejas techo4_Planchas techo5_Caña techo6_Triplay techo7_Paja
## 1 179 13186 160 106 3408
## 2 382 6084 38 5 32
## 3 3393 8005 50 14 115
## 4 177 2036 15 10 7234
## 5 3071 9343 26 12 75
## 6 2810 5495 15 5 51
## techo8_Otro techo9_Total piso1_Parquet piso2_Láminas piso3_Losetas
## 1 0 19520 6 19 647
## 2 0 7308 5 2 165
## 3 0 13999 23 36 1077
## 4 0 9716 2 0 20
## 5 0 12757 4 0 46
## 6 0 8904 3 4 264
## piso4_Madera piso5_Cemento piso6_Tierra piso7_Otro piso8_Total agua1_Red
## 1 157 7121 11569 1 19520 9429
## 2 132 2917 4087 0 7308 4569
## 3 240 6189 6434 0 13999 10647
## 4 1523 943 7228 0 9716 1307
## 5 295 1911 10501 0 12757 7172
## 6 176 2974 5483 0 8904 5256
## agua2_Red_fueraVivienda agua3_Pilón agua4_Camión agua5_Pozo agua6_Manantial
## 1 4392 793 59 1792 270
## 2 1497 215 0 474 67
## 3 1619 184 49 876 92
## 4 867 1003 2 2564 431
## 5 3097 1112 0 819 132
## 6 1278 154 0 1020 211
## agua7_Río agua8_Otro agua9_Vecino agua10_Total elec1_Sí elec2_No elec3_Total
## 1 2648 56 81 19520 13204 6316 19520
## 2 388 61 37 7308 6025 1283 7308
## 3 488 24 20 13999 12248 1751 13999
## 4 3428 80 34 9716 1792 7924 9716
## 5 369 9 47 12757 10886 1871 12757
## 6 948 29 8 8904 6895 2009 8904
## departamento provincia Castillo Keiko ganaCastillo covidPositivos
## 1 AMAZONAS BAGUA 25629 10770 1 8126
## 2 AMAZONAS BONGARA 8374 5209 1 389
## 3 AMAZONAS CHACHAPOYAS 15671 10473 1 2174
## 4 AMAZONAS CONDORCANQUI 13154 1446 1 3481
## 5 AMAZONAS LUYA 12606 7840 1 456
## 6 AMAZONAS RODRÍGUEZ DE MENDOZA 7967 5491 1 110
## covidFallecidos
## 1 462
## 2 72
## 3 281
## 4 111
## 5 88
## 6 60
# Filtrar para excluir la provincia de Lima
data_filtered <- data %>%
filter(provincia != "Lima")
# Seleccionar las variables de interés
data_selected <- data_filtered %>%
select(agua1_Red, Keiko, covidFallecidos)
# Normalizar las variables
data_normalized <- as.data.frame(scale(data_selected))
# Aplicar K-Means Clustering
set.seed(123) # Para reproducibilidad
kmeans_result <- kmeans(data_normalized, centers = 4) # Cambia "centers" según el número de grupos deseado
# Agregar resultados al dataframe original
data_filtered$Cluster <- kmeans_result$cluster
# Visualizar los resultados
fviz_cluster(kmeans_result, data = data_normalized, geom = "point",
ellipse.type = "convex", ggtheme = theme_minimal())

# Explorar los datos agrupados
grouped_data <- data_filtered %>%
group_by(Cluster) %>%
summarise(across(everything(), mean))
## Warning: There were 12 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `across(everything(), mean)`.
## ℹ In group 1: `Cluster = 1`.
## Caused by warning in `mean.default()`:
## ! argument is not numeric or logical: returning NA
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 11 remaining warnings.
print(grouped_data)
## # A tibble: 4 × 51
## Cluster ...1 key Código pared1_Ladrillo pared2_Piedra pared3_Adobe
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 135 NA 1501 1850434 10905 51710
## 2 2 102. NA 1161 165420. 3817 34713.
## 3 3 124. NA 1460. 40269. 206. 17011.
## 4 4 94.4 NA 1096. 3721. 48.7 6917.
## # ℹ 44 more variables: pared4_Tapia <dbl>, pared5_Quincha <dbl>,
## # pared6_Piedra <dbl>, pared7_Madera <dbl>, pared8_Triplay <dbl>,
## # pared9_Otro <dbl>, pared10_Total <dbl>, techo1_Concreto <dbl>,
## # techo2_Madera <dbl>, techo3_Tejas <dbl>, techo4_Planchas <dbl>,
## # techo5_Caña <dbl>, techo6_Triplay <dbl>, techo7_Paja <dbl>,
## # techo8_Otro <dbl>, techo9_Total <dbl>, piso1_Parquet <dbl>,
## # piso2_Láminas <dbl>, piso3_Losetas <dbl>, piso4_Madera <dbl>, …
library(cluster)
library(factoextra)
hclust_agglomerative <- hclust(dist(data_normalized), method = "ward.D2")
clusters_agglo <- cutree(hclust_agglomerative, k = 4)
hclust_divisive <- diana(dist(data_normalized))
clusters_divisive <- cutree(as.hclust(hclust_divisive), k = 4)
kmeans_result <- kmeans(data_normalized, centers = 4)
clusters_kmeans <- kmeans_result$cluster
sil_agglo <- silhouette(clusters_agglo, dist(data_normalized))
sil_divisive <- silhouette(clusters_divisive, dist(data_normalized))
sil_kmeans <- silhouette(clusters_kmeans, dist(data_normalized))
mean(sil_agglo[, 3]) # Aglomerativo
## [1] 0.7400686
mean(sil_divisive[, 3]) # Divisivo
## [1] 0.7703502
mean(sil_kmeans[, 3]) # K-Means
## [1] 0.7589749
fviz_silhouette(sil_agglo) + ggtitle("Silueta - Jerárquico Aglomerativo")
## cluster size ave.sil.width
## 1 1 160 0.84
## 2 2 30 0.26
## 3 3 5 0.62
## 4 4 1 0.00

fviz_silhouette(sil_divisive) + ggtitle("Silueta - Jerárquico Divisivo")
## cluster size ave.sil.width
## 1 1 172 0.82
## 2 2 18 0.41
## 3 3 5 0.58
## 4 4 1 0.00

fviz_silhouette(sil_kmeans) + ggtitle("Silueta - K-Means")
## cluster size ave.sil.width
## 1 1 165 0.83
## 2 2 1 0.00
## 3 3 25 0.33
## 4 4 5 0.60
