Este ejercicio tiene el objetivo de aplicar el Clustering jerarquico a un conjunto de datos nutricionales de tal manera que se puedan encontrar las combinaciones adecuadas de alimentos. Dataset disponible en Kaggle (https://www.kaggle.com/ofrancisco/emoji-diet-nutritional-data-sr28/data).
Cargamos el conjunto de datos y observamos sus variables
library(ggplot2)
library(ggdendro)
library(readxl)
library(PerformanceAnalytics)
# Importar los datos
Dieta <- read_excel("Dieta.xlsx")
# Nombres de las variables
names(Dieta)
## [1] "names" "Calories (kcal)"
## [3] "Carbohydrates (g)" "Total Sugar (g)"
## [5] "Protein (g)" "Total Fat (g)"
## [7] "Saturated Fat (g)" "Monounsaturated Fat (g)"
## [9] "Polyunsaturated Fat (g)" "Total Fiber (g)"
## [11] "Cholesterol (mg)" "Vitamin B6 (mg)"
## [13] "Vitamin A (IU)" "Vitamin B12 (ug)"
## [15] "Vitamin C (mg)" "Vitamin D (IU)"
## [17] "Vitamin E (IU)" "Vitamin K (ug)"
## [19] "Thiamin (mg)" "Riboflavin (mg)"
## [21] "Niacin (mg)" "Folate (ug)"
## [23] "Pantothenic Acid (mg)" "Choline (mg)"
## [25] "Calcium (g)" "Copper (mg)"
## [27] "Iron (mg)" "Magnesium (mg)"
## [29] "Manganese (mg)" "Phosphorus (g)"
## [31] "Potassium (g)" "Selenium (ug)"
## [33] "Sodium (g)" "Zinc (mg)"
Dada la cantidad de variables solo se muestra la matriz de correlación para 5 variables. EL objetivo aquà es simplemente observar si hay al menos un par de variables relacionadas, lo cual se logra observar.
chart.Correlation(Dieta[,2:6], histogram=TRUE, pch="+")
Se realiza el agrupamiento jerarquico a través de la funcion hclust() de R, la cual realiza el cálculo de distancias y el agrapamiento de los elementos.
DietaN<-Dieta
DietaN[,c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34)]<-scale(Dieta[,c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34)])
#DietaN[(2:34)]<-Dieta[(2:34)]
# crear columna con secuencia de números
DietaN$ID <- seq(1,nrow(DietaN))
# pegar la marca al numero de sequencia creado
DietaN$ID <- do.call(paste0,DietaN[c(1,35)])
# renombrar las filas
rownames(DietaN) <- DietaN$ID
head(DietaN,3)
matrizDistancias<- dist(DietaN)
#Realizamos el Dendrograma
hcDieta<-hclust(matrizDistancias)
#Graficamos el Dendrograma
plot(hcDieta)
#Graficamos el Dendrograma incluyendo una rotación
grafica_Dendograma<-ggdendrogram(hcDieta,rotate = TRUE,size=2)
grafica_Dendograma