library(ggplot2)
library(pander)
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(readxl)
Se desea hacer un cluster jerarquico con la base de datos de Calidad de vida de los departamentos de Colombia. Para esto, primero se organiza la base de datos.
Datos <-read_excel("D:/ENAR/UNIVERSIDAD/6TO SEMESTRE/programacion R/YDRAY-Datos_Calidad_Vida.xlsx")
View(Datos)
Datos = data.frame(Datos)
# Teniendo en cuenta las variables:
#Calidad de vida (ICV)
#Tasa de urbanización (TURB)
#Índice de necesidades básicas insatisfechas (NBI)
#Generación de recursos propios (GENREPRO)
#Índice de desarrollo fiscal (IDESFISCAL)
Datos_cluster = Datos[,2:6]
row.names(Datos_cluster)=Datos[,1]
pander(Datos_cluster)
| ICV | TURB | NBI | GENREPRO | IDESFISCAL | |
|---|---|---|---|---|---|
| Amazonas | 43.86 | 0.08128 | 76.18 | 3.479 | 11.07 |
| Antioquia | 65.65 | 0.4618 | 38.02 | 16.62 | 59.11 |
| Arauca | 67.79 | 0.5843 | 57 | 6.58 | 57.03 |
| Atlantico | 68.87 | 0.801 | 42.48 | 8.853 | 44.77 |
| Bogota | 86.92 | 0.9977 | 9 | 40.08 | 70.08 |
| Bolivar | 55.43 | 0.517 | 66.73 | 6.303 | 54.63 |
| Boyaca | 59.94 | 0.2926 | 42.59 | 9.932 | 57.52 |
| Caldas | 68.3 | 0.4754 | 24.44 | 14.67 | 57.57 |
| Caqueta | 58.37 | 0.4037 | 51.19 | 11.95 | 56.43 |
| Casanare | 63.82 | 0.5321 | 44.74 | 7.196 | 66.56 |
| Cauca | 53.95 | 0.2389 | 58.61 | 12.13 | 57.73 |
| Cesar | 63.09 | 0.5695 | 53.56 | 12.18 | 55.87 |
| Choco | 47.11 | 0.354 | 73.03 | 10.85 | 52.58 |
| Cordoba | 55.68 | 0.3956 | 65.46 | 8.289 | 50.32 |
| Cundinamarc | 66.31 | 0.367 | 30.25 | 21.04 | 62.5 |
| Guainia | 28.6 | 0.06712 | 95.11 | 0.3444 | 6.233 |
| Guaviare | 51.81 | 0.4265 | 53.75 | 10.78 | 48.9 |
| Huila | 61.63 | 0.4272 | 41.3 | 10.08 | 58.23 |
| LaGuajira | 59.67 | 0.5391 | 61.27 | 7.613 | 58.64 |
| Magdalena | 56.85 | 0.5002 | 62.83 | 6.309 | 54.5 |
| Meta | 65.39 | 0.4713 | 46.1 | 15.73 | 59.86 |
| Nariño | 56.89 | 0.2824 | 56.52 | 8.588 | 61.96 |
| NorteDeSa | 60.52 | 0.3864 | 45.12 | 8.035 | 56.14 |
| Putumayo | 60.13 | 0.4377 | 39.31 | 10.57 | 57.75 |
| Quindio | 75.45 | 0.6679 | 20.58 | 19.02 | 58.28 |
| Risaralda | 68.85 | 0.5056 | 27 | 16.39 | 58.71 |
| Santander | 60.95 | 0.3288 | 38.06 | 10.8 | 59.21 |
| Sucre | 59.02 | 0.5043 | 61.96 | 5.579 | 51.43 |
| Tolima | 63.86 | 0.444 | 39.6 | 14.12 | 57.19 |
| ValleDelC | 74.77 | 0.5942 | 21.52 | 28.38 | 60.49 |
| Vaupes | 39.38 | 0.1372 | 85.5 | 5.9 | 30.09 |
| Vichada | 52.71 | 0.4832 | 71.5 | 6.757 | 54.37 |
Procedemos a la parte gráfica
plot(Datos_cluster)
Datos_cluster2=scale(Datos_cluster)
Ahora, hacemos el cluster
Distan = dist(Datos_cluster2)
Cluster1 = hclust(Distan)
plot(Cluster1)
Después de realizar el cluster, necesitamos verificar el número de grupos optimos de los datos en cuestión. Es decir, sin hacer agrupaciones forzadas.
plot(Cluster1$height, type = "b")
grupos=cutree(Cluster1,k = 3)
grupos
## Amazonas Antioquia Arauca Atlantico Bogota Bolivar
## 1 2 2 2 3 2
## Boyaca Caldas Caqueta Casanare Cauca Cesar
## 2 2 2 2 2 2
## Choco Cordoba Cundinamarc Guainia Guaviare Huila
## 2 2 2 1 2 2
## LaGuajira Magdalena Meta Nariño NorteDeSa Putumayo
## 2 2 2 2 2 2
## Quindio Risaralda Santander Sucre Tolima ValleDelC
## 2 2 2 2 2 2
## Vaupes Vichada
## 1 2
grupos=cutree(Cluster1, k=5)
grupos
## Amazonas Antioquia Arauca Atlantico Bogota Bolivar
## 1 2 3 3 4 3
## Boyaca Caldas Caqueta Casanare Cauca Cesar
## 5 2 5 3 5 3
## Choco Cordoba Cundinamarc Guainia Guaviare Huila
## 5 5 2 1 5 5
## LaGuajira Magdalena Meta Nariño NorteDeSa Putumayo
## 3 3 2 5 5 5
## Quindio Risaralda Santander Sucre Tolima ValleDelC
## 2 2 5 3 2 2
## Vaupes Vichada
## 1 5
plot(Datos_cluster, col= grupos)
datos_cluster3=data.frame(Datos_cluster,grupos)
datos_cluster3$grupos=as.factor(datos_cluster3$grupos)
p1=ggplot(datos_cluster3,aes(x=grupos,y=ICV,fill=grupos))+geom_boxplot()+theme_bw()+ggtitle(" Calidad de vida (ICV)") +theme(legend.position = "bottom", plot.title = element_text(hjust= 0.5))
p1
p2=ggplot(datos_cluster3,aes(x=grupos,y=TURB,fill=grupos))+geom_boxplot()+theme_bw()+ggtitle("Tasa de urbanicación (TURB)") +theme(legend.position = "bottom", plot.title = element_text(hjust= 0.5))
p2
p3=ggplot(datos_cluster3,aes(x=grupos,y=NBI,fill=grupos))+geom_boxplot()+theme_bw()+ggtitle("Índice de necesidades básicas insatisfechas (NBI)") +theme(legend.position = "bottom", plot.title = element_text(hjust= 0.5))
p3
p4=ggplot(datos_cluster3,aes(x=grupos,y=GENREPRO,fill=grupos))+geom_boxplot()+theme_bw()+ggtitle(" Genreación de recursos propios (GENREPRO) ") +theme(legend.position = "bottom", plot.title = element_text(hjust= 0.5))
p4
p5=ggplot(datos_cluster3,aes(x=grupos,y=IDESFISCAL,fill=grupos))+geom_boxplot()+theme_bw()+ggtitle(" Índice de desarrollo fiscal (IDESFISCAL) ") +theme(legend.position = "bottom", plot.title = element_text(hjust= 0.5))
p5
Con base en los resultados obtenidos podemos decir:
El grupo con mejor calidad de vida es el grupo 4, seguido del grupo 2 en el cual se encuentran regiones que normalmente suele prestarselemás atención. Así también se observa que el grupo 1, en el cual se encuentran las regiones más vulnerables, no solo en este aspecto sino que además presenta el mayor índice de necesidades insatisfechas, una tasa de urbanización baja, como es de esperarse,pues suelen ser regiones un poco olvidadas. En el caso de la generación de recursos propios este grupo también presenta un valor bajo al igual que el índice de desarrollo fiscal, el cul es bajo también. Por otro lado, el grupo cuatro, como era de esperarse, ya que es la capital, presentó los mejores resultados, teniendo encuenta que es entre las ciudades que más atención se le brinda.