Objetivo

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).

Datos

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)"

Cálculo de la matriz de correlaciones

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="+")

Visualización del Dendrograma

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