Cargar data
load("mundo98.rda")
Adecuación de data
names(mundo98)
## [1] "region" "tfr" "contraception"
## [4] "educationMale" "educationFemale" "lifeMale"
## [7] "lifeFemale" "infantMortality" "GDPperCapita"
## [10] "economicActivityMale" "economicActivityFemale" "illiteracyMale"
## [13] "illiteracyFemale"
Adecuación y tipificación de datos
datos <- na.omit(mundo98[,c(8, 9, 12)])
datos.tip <- scale(datos[, c(2,3)] )
head(datos.tip)
## GDPperCapita illiteracyMale
## Afghanistan -0.1765170 1.9512080
## Algeria -0.4152190 0.4560493
## Argentina 0.7672352 -0.7927163
## Armenia -0.6285465 -0.9887109
## Azerbaijan -0.6345277 -0.9887109
## Bahamas 1.5810334 -0.9215127
Selección de muestra
set.seed(4)
muestra3 <- datos.tip[sample(1:nrow(datos.tip), 50,
replace=FALSE),]
set.seed(2)
muestra2 <- datos.tip[sample(1:nrow(datos.tip), 50,
replace=FALSE),]
set.seed(1)
muestra1 <- datos.tip[sample(1:nrow(datos.tip), 50,
replace=FALSE),]
Calculo de la matriz inicial de distancias
d <- dist(muestra3)
Generación de conglomerados con la función “hclust”
fit <- hclust(d)
plot(fit)
___
Regla de Mojena
mean(fit$height) + 3*sd(fit$height) < fit$height
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [49] TRUE
Método gráfico
plot(fit$height, col = "blue", pch=19 )
Cálculo de clusters
# Compute k-means with k = 3
set.seed(1)
conglomerados <- kmeans(datos.tip, 3, nstart = 25)
Centros de los clusters o conglomerados
# Print the results
print(conglomerados$centers)
## GDPperCapita illiteracyMale
## 1 -0.5639932 1.3853892
## 2 1.9441196 -0.5350372
## 3 -0.3022460 -0.5248364
Agregamos los clusters
clasificacion <- cbind(datos, cluster = conglomerados$cluster)
head(clasificacion)
## infantMortality GDPperCapita illiteracyMale cluster
## Afghanistan 154 2848 52.8 1
## Algeria 44 1531 26.1 1
## Argentina 22 8055 3.8 3
## Armenia 25 354 0.3 3
## Azerbaijan 33 321 0.3 3
## Bahamas 14 12545 1.5 2
Caracterización
library(Rmisc)
est.des <- summarySE(clasificacion, measurevar="GDPperCapita", groupvars=c("cluster"), na.rm=T)
est.des
## cluster N GDPperCapita sd se ci
## 1 1 43 710.1628 1066.928 162.7051 328.3521
## 2 2 26 14548.2692 5409.135 1060.8186 2184.7968
## 3 3 87 2154.3103 1834.268 196.6541 390.9355
est.des <- summarySE(clasificacion, measurevar="illiteracyMale", groupvars=c("cluster"), na.rm=T)
est.des
## cluster N illiteracyMale sd se ci
## 1 1 43 42.695814 12.385992 1.8888461 3.811846
## 2 2 26 8.401538 7.873130 1.5440479 3.180026
## 3 3 87 8.583701 7.702072 0.8257488 1.641534
Contraste en otra variable
est.des <- summarySE(clasificacion, measurevar="infantMortality", groupvars=c("cluster"), na.rm=T)
est.des
## cluster N infantMortality sd se ci
## 1 1 43 90.88372 35.83840 5.465305 11.029432
## 2 2 26 13.38462 17.25822 3.384615 6.970746
## 3 3 87 37.66667 23.55827 2.525712 5.020949
Graficamos las diferencias
library(ggplot2)
grafico <- ggplot(clasificacion, aes(infantMortality)) + geom_boxplot(aes(color = factor(cluster)))
grafico