DatasetE <- read.table(
"C:/Users/Juan David Ajiaco/Downloads/DatasetE.txt",
header = TRUE,
stringsAsFactors = TRUE,
sep = "\t",
na.strings = "NA",
dec = ".",
strip.white = TRUE
)
# Comprobar que la base se cargó correctamente
head(DatasetE)
## Genero Edad Peso Historial_familiar_con_sobrepeso FAVC FCVC NCP
## 1 Femenino 21 64.0 Si No A veces Tres
## 2 Femenino 21 56.0 Si No Siempre Tres
## 3 Masculino 23 77.0 Si No A veces Tres
## 4 Masculino 27 87.0 No No Siempre Tres
## 5 Masculino 22 89.8 No No A veces Entre 1 y 2
## 6 Masculino 29 53.0 No Si A veces Tres
## CAEC FUMA CH2O SCC FAF TUE CALC
## 1 A veces No Entre 1 y 2L No Ninguna 3-5 horas No
## 2 A veces Si Más de 2L Si 4-5 días 0-2 horas A veces
## 3 A veces No Entre 1 y 2L No 2-4 días 3-5 horas Frecuentemente
## 4 A veces No Entre 1 y 2L No 2-4 días 0-2 horas Frecuentemente
## 5 A veces No Entre 1 y 2L No Ninguna 0-2 horas A veces
## 6 A veces No Entre 1 y 2L No Ninguna 0-2 horas A veces
## MTRANS NObeyesdad Altura IMC Superficie_Corporal
## 1 Transporte público Peso normal 1.62 24.39 1.697
## 2 Transporte público Peso normal 1.52 24.24 1.538
## 3 Transporte público Peso normal 1.80 23.77 1.962
## 4 Caminar Sobrepeso I 1.80 26.85 2.086
## 5 Transporte público Sobrepeso II 1.78 28.34 2.107
## 6 Automóvil Peso normal 1.62 20.20 1.544
library(RcmdrMisc)
## Cargando paquete requerido: car
## Cargando paquete requerido: carData
## Cargando paquete requerido: sandwich
library(Rcmdr)
## Cargando paquete requerido: splines
## Cargando paquete requerido: effects
## Registered S3 method overwritten by 'lme4':
## method from
## na.action.merMod car
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
## The Commander GUI is launched only in interactive sessions
##
## Attaching package: 'Rcmdr'
## The following object is masked from 'package:base':
##
## errorCondition
library(car)
library(carData)
library(sandwich)
library(effects)
library(colorspace)
library(colorspace)
library("tidyverse")
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.1 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.3 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some() masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library("GGally")
library("corrplot")
## corrplot 0.95 loaded
library("plotly")
##
## Attaching package: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
library(tidyverse)
library("cluster")
library("factoextra")
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
library(GGally)
library(corrplot)
library(plotly)
library(cluster)
library(factoextra)
library(cluster)
library(dplyr)
library(aplpack)
library(ggplot2)
library(knitr)
La obesidad es un problema de salud que sigue creciendo y afecta a distintos grupos, este proyecto tuvo como objetivo analizar la relación entre hábitos alimenticios, estilo de vida y la obesidad en una muestra de 104 individuos del dataset Estimation of Obesity Levels Based on Eating Habits and Physical Condition, analizando variables como la frecuencia del consumo de alimentos calóricos, número de comidas diarias, ingesta de agua, actividad física, otros comportamientos como el uso de tecnología, consumo de alcohol, tabaco y otras variables. Los resultados muestran que el alto consumo de calorías y la baja actividad física se asocian con mayores niveles de sobrepeso y obesidad, mientras que hábitos saludables como el consumo regular de agua y el ejercicio frecuente se relacionan con un menor riesgo. En conclusión, la obesidad no depende de una sola variable, sino de la combinación de varios aspectos de la vida diaria. Los resultados muestran que adoptar hábitos más saludables, como una mejor alimentación y mayor actividad física, puede ayudar en la prevención.
La obesidad es un problema de salud que ha aumentado bastante en los últimos años, afecta a personas de todas las edades y contextos sociales. Se ha demostrado que factores como los hábitos alimenticios y el estilo de vida influyen directamente en el desarrollo de la obesidad. Este proyecto análiza una muestra de 104 individuos obtenida del DatasetE Estimation of Obesity Levels Based on Eating Habits and Physical Condition. Se examinan variables relacionadas con la alimentación, la actividad física y otros comportamientos, para ver su relación con el nivel de obesidad. El estudio se desarrolla mediante la clasificación y analisis de las variables, lo que permite identificar relaciones relevantes. Se busca aportar una comprensión más clara de los factores asociados a la obesidad.
¿Cómo influyen los hábitos alimenticios y el estilo de vida en el nivel de obesidad de los individuos de la muestra?
Analizar la relación entre los hábitos alimenticios y el estilo de vida con los niveles de obesidad en una muestra de 104 individuos, para identificar factores asociados al desarrollo de sobrepeso y obesidad.
cat("Gráfico de tallo-hojas: Edad\n")
## Gráfico de tallo-hojas: Edad
stem(DatasetE$Edad)
##
## The decimal point is at the |
##
## 16 | 0
## 18 | 00000
## 20 | 000000000000000000000000000000
## 22 | 000000000000000000000000000000000000
## 24 | 0000000
## 26 | 0000
## 28 | 0000
## 30 | 0000000
## 32 |
## 34 | 000
## 36 |
## 38 | 00
## 40 | 00
## 42 |
## 44 | 0
## 46 |
## 48 |
## 50 |
## 52 | 0
## 54 | 0
cat("Gráfico de tallo-hojas: Peso\n")
## Gráfico de tallo-hojas: Peso
stem(DatasetE$Peso)
##
## The decimal point is 1 digit(s) to the right of the |
##
## 4 | 4
## 4 | 5555899
## 5 | 0002233
## 5 | 5555556678889
## 6 | 000000000022223444
## 6 | 555556778889
## 7 | 0002222
## 7 | 556677889
## 8 | 000000022234
## 8 | 556778
## 9 | 000014
## 9 | 59
## 10 | 2
## 10 | 5
## 11 | 2
## 11 |
## 12 |
## 12 |
## 13 | 0
cat("Gráfico de tallo-hojas: Altura\n")
## Gráfico de tallo-hojas: Altura
stem(DatasetE$Altura)
##
## The decimal point is 2 digit(s) to the left of the |
##
## 150 | 0000
## 152 | 0000
## 154 | 000
## 156 | 0
## 158 | 0
## 160 | 000000000
## 162 | 000000000
## 164 | 0000000000000000000
## 166 | 00000000
## 168 | 0000000
## 170 | 000000
## 172 | 0000
## 174 | 00000
## 176 | 000000
## 178 | 000
## 180 | 0000000
## 182 | 00
## 184 | 000
## 186 |
## 188 | 0
## 190 |
## 192 | 00
cat("Grafico de tallo-hojas: IMC\n")
## Grafico de tallo-hojas: IMC
stem(DatasetE$IMC)
##
## The decimal point is at the |
##
## 16 | 9
## 17 | 6689
## 18 | 58
## 19 | 022355679
## 20 | 122346778
## 21 | 0033555788
## 22 | 000035556788
## 23 | 02588
## 24 | 22234446688
## 25 | 78
## 26 | 345799
## 27 | 01247788
## 28 | 011379
## 29 | 00444444
## 30 | 5677
## 31 | 1
## 32 | 0
## 33 | 13
## 34 | 9
## 35 | 3
## 36 | 2
cat("Grafico de tallo-hojas: Superficie_Corporal\n")
## Grafico de tallo-hojas: Superficie_Corporal
stem(DatasetE$Superficie_Corporal)
##
## The decimal point is 1 digit(s) to the left of the |
##
## 13 | 58
## 14 | 11356679
## 15 | 12244456688
## 16 | 00122333455666667799
## 17 | 002222335556789
## 18 | 01223777779
## 19 | 111222223456678899
## 20 | 012234799
## 21 | 12233
## 22 | 3
## 23 | 244
## 24 |
## 25 |
## 26 | 3
Edad: concentración fuerte en los 20 años, con pocos casos en edades mayores. Peso: mayor distribución entre 50–80 kg, pero también casos extremos hacia 40 y 100 kg. Altura: gran concentración alrededor de 160–165 cm, baja dispersión.
# Clasificar el IMC
IMC_cat <- cut(DatasetE$IMC,
breaks = c(0, 18.5, 25, 30, Inf),
labels = c("Bajo peso", "Normal",
"Sobrepeso", "Obesidad"),
right = FALSE)
# Frecuencias
tabla_IMC <- table(IMC_cat)
# Pastel
piechart(tabla_IMC,
main = "Clasificación del IMC",
col = rainbow_hcl(4),
scale = "percent")
IMC_cat <- cut(DatasetE$IMC,
breaks = c(0,18.5,25,30,Inf),
labels = c("Bajo peso","Normal","Sobrepeso","Obesidad"),
right = FALSE)
tabla_IMC <- table(IMC_cat)
barplot(tabla_IMC,
main = "Clasificación del IMC",
xlab = "Categoría",
ylab = "Frecuencia",
col = rainbow(4))
SC_cat <- cut(DatasetE$Superficie_Corporal,
breaks = seq(floor(min(DatasetE$Superficie_Corporal)*10)/10,
ceiling(max(DatasetE$Superficie_Corporal)*10)/10,
by = 0.2),
include.lowest = TRUE)
tabla_SC <- table(SC_cat)
piechart(tabla_SC,
main = "Superficie Corporal",
col = rainbow_hcl(length(tabla_SC)),
scale = "percent")
SC_cat <- cut(DatasetE$Superficie_Corporal,
breaks = seq(floor(min(DatasetE$Superficie_Corporal)*10)/10,
ceiling(max(DatasetE$Superficie_Corporal)*10)/10,
by = 0.2),
include.lowest = TRUE)
tabla_SC <- table(SC_cat)
barplot(tabla_SC,
main = "Distribución de la Superficie Corporal",
xlab = "Superficie Corporal (m²)",
ylab = "Frecuencia",
col = rainbow(length(tabla_SC)),
las = 2)
with(DatasetE, piechart(Genero, xlab="", ylab="", main="Genero", col=rainbow_hcl(2), scale="percent", ))
with(DatasetE, Barplot(Genero, xlab="Genero", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de, barras: La distribución se preseenta asi: 54 hombres y 50 mujeres.
Gráfico de pastel: Esto corresponde a 52% hombres y 48% mujeres.
Existe una ligera predominancia masculina. La muestra está relativamente balanceada en términos de género.
with(DatasetE, piechart(Historial_familiar_con_sobrepeso, scale ="percent", main="Historial_familiar_con_sobrepeso"))
with(DatasetE, Barplot(Historial_familiar_con_sobrepeso, xlab="Historial_familiar_con_sobrepeso", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 76 individuos tienen antecedentes familiares de sobrepeso, mientras que 28 no.
Gráfico de pastel: 73% “sí” frente a 27% “no”.
La mayoría tienen predisposición familiar al sobrepeso, lo cual puede ser relevante en el análisis del estado nutricional.
with(DatasetE, piechart(FAVC, xlab="", ylab="", main="FAVC",
col=palette()[2:3], scale="percent"))
with(DatasetE, Barplot(FAVC, xlab="FAVC", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 63 personas consumen frecuentemente alimentos altos en calorías, mientras que 41 no.
Gráfico de pastel: 61% “sí” frente a 39% “no”.
Predomina el hábito de consumir alimentos calóricos, lo que podría influir directamente en el estado nutricional y el riesgo de sobrepeso.
with(DatasetE, piechart(FCVC, xlab="", ylab="", main="FCVC",
col=palette()[2:4], scale="percent"))
with(DatasetE, Barplot(FCVC, xlab="FCVC", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: La categoría más frecuente es “algunas veces” con 64 individuos, seguida de “siempre” con 31, y un grupo reducido en “never”.
Gráfico de pastel: 62% “a veces”, 30% “siempre” y 9% “nunca”.
Aunque la mayoría consume vegetales ocasionalmente, no es un hábito en toda la población, siendo un consumo insuficiente para algunos.
with(DatasetE, piechart(NCP, xlab="", ylab="", main="NCP",
col=palette()[2:4], scale="percent"))
with(DatasetE, Barplot(NCP, xlab="NCP", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: La mayoría (78 individuos) consume tres comidas principales, seguido de 17 que consumen entre 1 y 2, y unos pocos más de tres.
Gráfico de pastel: Un 75% para “tres”, 16% para “entre 1 y 2” y 9% para “más de tres”.
Lo mas comun son las tres comidas diarias, siendo asi en la mayoria de la muestra.
with(DatasetE, piechart(CAEC, xlab="", ylab="", main="CAEC", col=palette()[2:5],
scale="percent"))
with(DatasetE, Barplot(CAEC, xlab="CAEC", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: La categoría más frecuente es “algunas veces” con 65 individuos, seguida de “frecuentemente” con 23, “siempre” con 9 y “no” con 7.
Gráfico de pastel: Esto corresponde a 62% “a veces”, 22% “frecuentemente”, 9% “siempre” y 7% “no”.
La mayoría de los participantes tienden a comer entre comidas ocasionalmente, lo que indica un hábito moderado de picar alimentos fuera de los horarios principales.
with(DatasetE, piechart(FUMA, xlab="", ylab="", main="FUMA",
col=palette()[2:3], scale="percent"))
with(DatasetE, Barplot(FUMA, xlab="FUMA", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 94 individuos no fuman, mientras que una minoría sí lo hace.
Gráfico de pastel: 90% “no” frente a 10% “sí”.
Fumar es poco común en la muestra, predominando claramente los no fumadores.
with(DatasetE, piechart(CH2O, xlab="", ylab="", main="CH2O", col=palette()[2:4],
scale="percent"))
with(DatasetE, Barplot(CH2O, xlab="CH2O", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 64 personas consumen entre 1 y 2 litros, 24 más de 2 litros y 16 menos de un litro.
Gráfico de pastel: 62% “entre 1 y 2 L”, 23% “más de 2 L” y 15% “menos de 1 L”.
La mayoría mantiene un consumo moderado, aunque un grupo no tan grande supera los 2 litros, lo cual es positivo para la salud.
with(DatasetE, piechart(SCC, xlab="", ylab="", main="SCC", col=palette()[2:3],
scale="percent"))
with(DatasetE, Barplot(SCC, xlab="SCC", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 91 individuos no monitorean sus calorías, mientras que una minoría sí lo hace.
Gráfico de pastel: 88% “no” frente a 12% “sí”.
El monitoreo de calorías es poco frecuente en la muestra, lo que puede influir en el cuiddao del peso.
with(DatasetE, piechart(FAF, xlab="", ylab="", main="FAF", col=palette()[2:5],
scale="percent"))
with(DatasetE, Barplot(FAF, xlab="FAF", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 41 personas no realizan actividad física, 24 lo hacen 1–2 días, 30 lo hacen 2–4 días y 9 lo hacen 4–5 días.
Gráfico de pastel: 39% “no tengo”, 23% “1–2 días”, 29% “2–4 días” y 9% “4–5 días”.
La mayor parte de la muestra no realiza actividad física, aunque también hay un grupo que mantiene cierta actividad.
with(DatasetE, piechart(TUE, xlab="", ylab="", main="TUE", col=palette()[2:4],
scale="percent"))
with(DatasetE, Barplot(TUE, xlab="TUE", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 53 personas usan entre 0–2 horas, 38 entre 3–5 horas y 13 más de 5 horas.
Gráfico de pastel: 51% “0–2 horas”, 37% “3–5 horas” y 12% “más de 5 horas”.
El uso moderado de dispositivos tiene mayor frecuencia, aunque tambien un grupo pasa más de 3 horas al día en ellos.
with(DatasetE, piechart(CALC, xlab="", ylab="", main="CALC", col=palette()[2:5],
scale="percent"))
with(DatasetE, Barplot(CALC, xlab="CALC", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 56 “algunas veces”, 36 “no”, 11 “frecuentemente” y un valor mínimo en “siempre”.
Gráfico de pastel: 54% “a veces”, 35% “no”, 11% “frecuentemente” y 1% “siempre”.
El consumo ocasional de alcohol es lo más común, mientras que el consumo frecuente o diario es muy poco.
with(DatasetE, piechart(MTRANS, xlab="", ylab="", main="MTRANS",
col=palette()[2:6], scale="percent",cex=0.8 ))
legend("topleft",
legend = levels(DatasetE$MTRANS),
fill = palette()[2:6],
cex = 0.8,
bty = "n")
with(DatasetE, Barplot(MTRANS, xlab="MTRANS", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de barras: 65 usan transporte público, 24 automóvil, 13 caminan, y muy pocos usan bicicleta o moto.
Gráfico de pastel: 62% transporte público, 23% automóvil, 12% caminata, 2% moto y 2% bicicleta.
El transporte público es el medio de trasporte mas usado, seguido por el automóvil, hábitos urbanos típicos.
with(DatasetE, piechart(NObeyesdad, xlab="", ylab="", main="NObeyesdad",
col=palette()[2:6], scale="percent"))
legend("topright", legend=levels(DatasetE$NObeyesdad),
fill=palette()[2:6], cex=0.8, bty="n",)
with(DatasetE, Barplot(NObeyesdad, xlab="NObeyesdad", ylab="Frequency",
label.bars=TRUE, axes=FALSE))
Gráfico de pastel: 56% Peso Normal, 5% Peso Insuficiente, 21% Sobrepeso nivel 2, 8% Sobrepeso nivel 2 y 9% Obesidad tipo 1.
Gráfico de barras: Lo más frecuente es el Peso Normal, seguida de Sobrepeso nivel 2 y Obesidad tipo 1.
Aunque la mayoría presenta peso normal, existe una proporción considerable con sobrepeso y obesidad, lo que muestra la relevancia del estudio.
.Table <- xtabs(~ FCVC + SCC, data = DatasetE)
cat("\nTabla de frecuencias:\n")
##
## Tabla de frecuencias:
print(.Table)
## SCC
## FCVC No Si
## A veces 61 3
## Nunca 8 1
## Siempre 22 9
cat("\nPorcentajes por filas:\n")
##
## Porcentajes por filas:
row_perc <- prop.table(.Table, 1)
print(round(row_perc * 100, 2))
## SCC
## FCVC No Si
## A veces 95.31 4.69
## Nunca 88.89 11.11
## Siempre 70.97 29.03
cat("\nPorcentajes por columnas:\n")
##
## Porcentajes por columnas:
col_perc <- prop.table(.Table, 2)
print(round(col_perc * 100, 2))
## SCC
## FCVC No Si
## A veces 67.03 23.08
## Nunca 8.79 7.69
## Siempre 24.18 69.23
colores <- c("red", "orange", "lightblue", "purple")
par(mar = c(5, 4, 4, 10))
barplot(t(row_perc),
col = colores,
border = "black",
main = "Proporciones por filas (FCVC vs SCC)",
xlab = "FCVC",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = colnames(row_perc),
fill = colores,
bty = "n",
xpd = TRUE)
barplot(col_perc,
col = colores,
border = "black",
main = "Proporciones por columnas (FCVC vs SCC)",
xlab = "SCC",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = rownames(col_perc),
fill = colores,
bty = "n",
xpd = TRUE)
Tabla de frecuencias: Quienes siempre consumen vegetales: 22 no monitorean calorías y 9 sí. Quienes nunca consumen vegetales: 8 no monitorean y 1 sí. Quienes consumen vegetales a veces: 61 no monitorean y 3 sí.
Porcentajes por filas: “Siempre”: 71% no monitorean, 29% sí. “Never”: 89% no, 11% sí. “Algunas veces”: 95% no, 5% sí.
Aunque los que consumen vegetales con mayor frecuencia, en su mayoría monitorear más sus calorías, en general el control calórico es bajo en todos los grupos.
.Table <- xtabs(~ NCP + CAEC, data = DatasetE)
cat("\nTabla de frecuencias:\n")
##
## Tabla de frecuencias:
print(.Table)
## CAEC
## NCP A veces Frecuentemente Nunca Siempre
## Entre 1 y 2 14 2 0 1
## Más de tres 1 7 0 1
## Tres 50 14 7 7
cat("\nPorcentajes por filas:\n")
##
## Porcentajes por filas:
row_perc <- prop.table(.Table, 1)
print(round(row_perc * 100, 2))
## CAEC
## NCP A veces Frecuentemente Nunca Siempre
## Entre 1 y 2 82.35 11.76 0.00 5.88
## Más de tres 11.11 77.78 0.00 11.11
## Tres 64.10 17.95 8.97 8.97
cat("\nPorcentajes por columnas:\n")
##
## Porcentajes por columnas:
col_perc <- prop.table(.Table, 2)
print(round(col_perc * 100, 2))
## CAEC
## NCP A veces Frecuentemente Nunca Siempre
## Entre 1 y 2 21.54 8.70 0.00 11.11
## Más de tres 1.54 30.43 0.00 11.11
## Tres 76.92 60.87 100.00 77.78
colores <- c("red", "orange", "lightblue", "purple")
par(mar = c(5, 4, 4, 10))
barplot(t(row_perc),
col = colores,
border = "black",
main = "Proporciones por filas (NCP vs CAEC)",
xlab = "NCP",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = colnames(row_perc),
fill = colores,
bty = "n",
xpd = TRUE)
barplot(col_perc,
col = colores,
border = "black",
main = "Proporciones por columnas (NCP vs CAEC)",
xlab = "CAEC",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = rownames(col_perc),
fill = colores,
bty = "n",
xpd = TRUE)
Tabla de frecuencias: Quienes comen tres comidas: 50 “algunas veces”, 14 “frecuentemente”, 7 “siempre” y 7 “no”. Quienes comen entre 1 y 2 comidas: 14 “algunas veces”, 2 “frecuentemente”, 1 “siempre”.
Porcentajes por filas: “Tres comidas”: 64% a veces comen entre comidas, 18% frecuentemente, 9% siempre, 9% nunca. “Entre 1 y 2”: 82% a veces, 12% frecuentemente, 6% siempre.
Lo más común es comer entre comidas “a veces”, mayormente en quienes mantienen tres comidas principales.
.Table <- xtabs(~ CH2O + CALC, data = DatasetE)
cat("\nTabla de frecuencias:\n")
##
## Tabla de frecuencias:
print(.Table)
## CALC
## CH2O A veces Frecuentemente No Siempre
## Entre 1 y 2L 34 10 19 1
## Más de 2L 14 1 9 0
## Menos de 1L 8 0 8 0
cat("\nPorcentajes por filas:\n")
##
## Porcentajes por filas:
row_perc <- prop.table(.Table, 1)
print(round(row_perc * 100, 2))
## CALC
## CH2O A veces Frecuentemente No Siempre
## Entre 1 y 2L 53.12 15.62 29.69 1.56
## Más de 2L 58.33 4.17 37.50 0.00
## Menos de 1L 50.00 0.00 50.00 0.00
cat("\nPorcentajes por columnas:\n")
##
## Porcentajes por columnas:
col_perc <- prop.table(.Table, 2)
print(round(col_perc * 100, 2))
## CALC
## CH2O A veces Frecuentemente No Siempre
## Entre 1 y 2L 60.71 90.91 52.78 100.00
## Más de 2L 25.00 9.09 25.00 0.00
## Menos de 1L 14.29 0.00 22.22 0.00
colores <- c("red", "orange", "lightblue", "purple")
par(mar = c(5, 4, 4, 10))
barplot(t(row_perc),
col = colores,
border = "black",
main = "Proporciones por filas (CH2O vs CALC)",
xlab = "CH2O",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = colnames(row_perc),
fill = colores,
bty = "n",
xpd = TRUE)
barplot(col_perc,
col = colores,
border = "black",
main = "Proporciones por columnas (CH2O vs CALC)",
xlab = "CALC",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = rownames(col_perc),
fill = colores,
bty = "n",
xpd = TRUE)
Tabla de frecuencias: Quienes beben entre 1 y 2 L de agua: 34 “algunas veces” alcohol, 19 “no”, 10 “frecuentemente”, 1 “siempre”. Quienes beben menos de 1 L: mitad “no” y mitad “algunas veces”. Quienes beben más de 2 L: predominan “algunas veces” (14) y “no” (9).
Porcentajes por filas: Entre 1 y 2 L”: 53% alcohol “algunas veces”, 30% “no”. “Menos de 1 L”: 50% “no”, 50% “algunas veces”. “Más de 2 L”: 58% “algunas veces”, 38% “no”.
El consumo ocasional de alcohol es el más frecuente en todos los niveles del consumo de agua, aunque quienes beben menos de 1 L estan entre “no” y “algunas veces”.
.Table <- xtabs(~ FAF + TUE, data = DatasetE)
cat("\nTabla de frecuencias:\n")
##
## Tabla de frecuencias:
print(.Table)
## TUE
## FAF 0-2 horas 3-5 horas Más de 5 horas
## 1-2 días 13 9 2
## 2-4 días 13 12 5
## 4-5 días 4 3 2
## Ninguna 23 14 4
cat("\nPorcentajes por filas:\n")
##
## Porcentajes por filas:
row_perc <- prop.table(.Table, 1)
print(round(row_perc * 100, 2))
## TUE
## FAF 0-2 horas 3-5 horas Más de 5 horas
## 1-2 días 54.17 37.50 8.33
## 2-4 días 43.33 40.00 16.67
## 4-5 días 44.44 33.33 22.22
## Ninguna 56.10 34.15 9.76
cat("\nPorcentajes por columnas:\n")
##
## Porcentajes por columnas:
col_perc <- prop.table(.Table, 2)
print(round(col_perc * 100, 2))
## TUE
## FAF 0-2 horas 3-5 horas Más de 5 horas
## 1-2 días 24.53 23.68 15.38
## 2-4 días 24.53 31.58 38.46
## 4-5 días 7.55 7.89 15.38
## Ninguna 43.40 36.84 30.77
colores <- c("red", "orange", "lightblue", "purple")
par(mar = c(5, 4, 4, 10))
barplot(t(row_perc),
col = colores,
border = "black",
main = "Proporciones por filas (FAF vs TUE)",
xlab = "FAF",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = colnames(row_perc),
fill = colores,
bty = "n",
xpd = TRUE)
barplot(col_perc,
col = colores,
border = "black",
main = "Proporciones por columnas (FAF vs TUE)",
xlab = "TUE",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = rownames(col_perc),
fill = colores,
bty = "n",
xpd = TRUE)
Tabla de frecuencias: Quienes hacen 1–2 días de actividad física: 13 usan 0–2 horas de tecnología, 9 usan 3–5 horas y 2 más de 5 horas. Quienes hacen 2–4 días: 13 usan 0–2 horas, 12 usan 3–5 horas y 5 más de 5 horas. Quienes hacen 4–5 días: 4 usan 0–2 horas, 3 usan 3–5 horas y 2 más de 5 horas. Quienes no realizan actividad física: 23 usan 0–2 horas, 14 usan 3–5 horas y 4 más de 5 horas.
Porcentajes por filas: “No tengo”: 56% usan 0–2 horas, 34% 3–5 horas, 10% más de 5. “2–4 días”: 43% usan 0–2 horas, 40% 3–5 horas, 17% más de 5. “4–5 días”: 44% usan 0–2 horas, 33% 3–5 horas, 22% más de 5.
La mayoría de los grupos usan moderadamente dispositivos, sin embargo, quienes realizan más actividad física muestran mayor uso, más de 5 horas, lo que sugiere que la práctica de ejercicio no necesariamente reduce el tiempo frente a pantallas.
.Table <- xtabs(~ FAVC + NObeyesdad, data = DatasetE)
cat("\nTabla de frecuencias:\n")
##
## Tabla de frecuencias:
print(.Table)
## NObeyesdad
## FAVC Bajo peso Obesidad I Obesidad II Peso normal Sobrepeso I Sobrepeso II
## No 4 0 1 24 3 9
## Si 1 9 1 34 5 13
cat("\nPorcentajes por filas:\n")
##
## Porcentajes por filas:
row_perc <- prop.table(.Table, 1)
print(round(row_perc * 100, 2))
## NObeyesdad
## FAVC Bajo peso Obesidad I Obesidad II Peso normal Sobrepeso I Sobrepeso II
## No 9.76 0.00 2.44 58.54 7.32 21.95
## Si 1.59 14.29 1.59 53.97 7.94 20.63
cat("\nPorcentajes por columnas:\n")
##
## Porcentajes por columnas:
col_perc <- prop.table(.Table, 2)
print(round(col_perc * 100, 2))
## NObeyesdad
## FAVC Bajo peso Obesidad I Obesidad II Peso normal Sobrepeso I Sobrepeso II
## No 80.00 0.00 50.00 41.38 37.50 40.91
## Si 20.00 100.00 50.00 58.62 62.50 59.09
colores <- c("red", "orange", "lightblue", "purple", "pink", "cyan")
par(mar = c(5, 4, 4, 10))
barplot(t(row_perc),
col = colores,
border = "black",
main = "Proporciones por filas (FAVC vs NObeyesdad)",
xlab = "FAVC",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = colnames(row_perc),
fill = colores,
bty = "n",
xpd = TRUE)
barplot(col_perc,
col = colores,
border = "black",
main = "Proporciones por columnas (FAVC vs NObeyesdad)",
xlab = "NObeyesdad",
ylab = "Proporción")
legend("right",
inset = c(-0.32, 0),
legend = rownames(col_perc),
fill = colores,
bty = "n",
xpd = TRUE)
Tabla de frecuencias: Entre quienes no consumen comida calórica frecuente: predominan Peso Normal (24) y Sobrepeso nivel 2 (9), con muy baja obesidad. Entre quienes sí consumen comida calórica frecuente: predominan Peso Normal (34), Obesidad tipo 1 (9) y Sobrepeso nivel 2 (13). Porcentajes por filas: “No”: 59% peso normal, 22% sobrepeso nivel II, 10% insuficiente peso, casi nula obesidad. “si”: 54% peso normal, 14% obesidad tipo I, 21% sobrepeso nivel II.
Porcentajes por columnas: En Peso Normal, 41% provienen de “no” y 59% de “sí”. En Obesidad tipo 1, todos los casos (100%) provienen de quienes consumen comida calórica frecuente. En Sobrepeso nivel 2, 59% provienen de “sí” y 41% de “no”.
El consumo frecuente de comidas calóricas está muy relacionado con la obesidad y sobrepeso. Mientras que quienes no lo hacen mantienen un peso normal, los que sí lo hacen tienen los casos de obesidad tipo I y una mayor frecuencia de sobrepeso nivel II.
with(DatasetE, Hist(IMC, scale="frequency", breaks="Sturges",
col="lightyellow"))
## Histograma Superficie Corporal
with(DatasetE, Hist(Superficie_Corporal, scale="frequency", breaks="Sturges",
col="orange"))
with(DatasetE, Hist(Edad, scale="frequency", breaks="Sturges",
col="lightblue"))
with(DatasetE, Hist(Altura, scale ="frequency", breaks ="Sturges",
col="lightgreen"))
with(DatasetE, Hist(Peso, scale ="frequency", breaks = "Sturges", col="lightpink"))
numSummary(DatasetE[,c("Edad", "Altura", "Peso", "IMC", "Superficie_Corporal"), drop=FALSE],
statistics=c("mean","var", "skewness", "kurtosis"),
quantiles=c(0,.25,.5,.75,1), type="2")
## mean var skewness kurtosis n
## Edad 24.644231 43.22171397 2.4816320 7.04438918 104
## Altura 1.679615 0.00882121 0.3441853 -0.05581808 104
## Peso 69.517308 254.66319268 0.8322144 1.07991323 104
## IMC 24.488558 19.22065906 0.4888001 -0.41455167 104
## Superficie_Corporal 1.792442 0.05657188 0.6019441 0.56047054 104
Edad (Edad)
Media (24.64): La edad promedio de la muestra son jóvenes adultos, lo que coincide con lo que se observa en el histograma, se concentra alrededor de los 20–22 años.
Varianza (43.22): Alta, lo que indica dispersión en los datos: aunque la mayoría son jóvenes, hay casos que llegan hasta los 55 años.
Asimetría (2.48): Positiva, la distribución está hacia la derecha, con mas valores bajos (jóvenes) y pocos casos altos en edades mayores.
Curtosis (7.04): Elevada, la distribución es “picuda”, lo que significa que la mayoría se concentra en un rango de juventud, pero tambien existen valores de edad altos. Presenta una curtosis leptocúrtica.
Altura (Altura)
Media (1.68 m): La altura promedio es típica de adultos jóvenes, lo que coincide con el histograma centrado en 1.60–1.70 m.
Varianza (0.0088): Baja, indica que los valores están muy concentrados alrededor de la media, con poca dispersión.
Asimetría (0.34): Positiva, la distribución es casi simétrica, pero tiene una tendencia a alturas de mayor medida.
Curtosis (-0.05): Cercana a 0, la distribución no muestra picos extremos. Presenta una curtosis platicúrtica.
Peso (Peso)
Media (69.52 kg): En el histograma se muestra concentración entre 50–80 kg, y el promedio se ubica cerca de los 70 kg.
Varianza (254.66): Alta porque deja ver gran dispersión, con individuos que llegan hasta 130 kg.
Asimetría (0.83): Positiva, la distribución está mas hacia la derecha, por algunos casos de peso elevado.
Curtosis (1.08): Moderada, la distribución presenta dispersión y es puntuiagudo . Presenta una curtosis leptocúrtica.
summary(DatasetE)
## Genero Edad Peso
## Femenino :50 Min. :17.00 Min. : 44.00
## Masculino:54 1st Qu.:21.00 1st Qu.: 58.00
## Median :22.00 Median : 66.50
## Mean :24.64 Mean : 69.52
## 3rd Qu.:24.25 3rd Qu.: 80.00
## Max. :55.00 Max. :130.00
## Historial_familiar_con_sobrepeso FAVC FCVC NCP
## No:28 No:41 A veces:64 Entre 1 y 2:17
## Si:76 Si:63 Nunca : 9 Más de tres: 9
## Siempre:31 Tres :78
##
##
##
## CAEC FUMA CH2O SCC FAF
## A veces :65 No:94 Entre 1 y 2L:64 No:91 1-2 días:24
## Frecuentemente:23 Si:10 Más de 2L :24 Si:13 2-4 días:30
## Nunca : 7 Menos de 1L :16 4-5 días: 9
## Siempre : 9 Ninguna :41
##
##
## TUE CALC MTRANS
## 0-2 horas :53 A veces :56 Automóvil :24
## 3-5 horas :38 Frecuentemente:11 Bicicleta : 1
## Más de 5 horas:13 No :36 Caminar :12
## Siempre : 1 Moto : 2
## Transporte público:65
##
## NObeyesdad Altura IMC Superficie_Corporal
## Bajo peso : 5 Min. :1.500 Min. :16.94 Min. :1.354
## Obesidad I : 9 1st Qu.:1.627 1st Qu.:21.02 1st Qu.:1.627
## Obesidad II : 2 Median :1.660 Median :23.98 Median :1.757
## Peso normal :58 Mean :1.680 Mean :24.49 Mean :1.792
## Sobrepeso I : 8 3rd Qu.:1.750 3rd Qu.:27.77 3rd Qu.:1.950
## Sobrepeso II:22 Max. :1.930 Max. :36.16 Max. :2.633
Edad (Edad) Rango: 17 – 55 años Media: 24.64 años Mediana: 22 años
Altura (Altura) Rango: 1.50 – 1.93 m Media: 1.68 m Mediana: 1.66 m
Peso (Peso) Rango: 44 – 130 Media: 69.52 kg Mediana: 66.5 kg
Genero: moda = masculino (54 casos).
Historial_familiar_con_sobrepeso: moda = si (76).
FAVC: moda = si (63).
FCVC: moda = algunas veces (64).
NCP: moda = tres (78).
CAEC: moda = algunas veces (66).
FUMA: moda = no (94).
CH2O: moda = entre una y dos (64).
SCC: moda = no (91).
FAF: moda = no tengo(41).
TUE: moda = 0–2 horas (53). CALC: moda = algunas veces (56).
MTRANS: moda = transporte público (65).
NObeyesdad: moda = peso normal (58).
cat("Media recortada y Media (10%) de Edad\n\n")
## Media recortada y Media (10%) de Edad
mean(DatasetE$Edad, trim = 0.1)
## [1] 23.30952
mean(DatasetE$Edad)
## [1] 24.64423
cat("Media recortada y Media (10%) de Peso\n\n")
## Media recortada y Media (10%) de Peso
mean(DatasetE$Peso, trim = 0.1)
## [1] 68.47381
mean(DatasetE$Peso)
## [1] 69.51731
cat("Media recortada y Media (10%) de Altura\n\n")
## Media recortada y Media (10%) de Altura
mean(DatasetE$Altura, trim = 0.1)
## [1] 1.677619
mean(DatasetE$Altura)
## [1] 1.679615
cat("Media recortada y Media (10%) de IMC\n\n")
## Media recortada y Media (10%) de IMC
mean(DatasetE$IMC, trim = 0.1)
## [1] 24.24667
mean(DatasetE$IMC)
## [1] 24.48856
cat("Media recortada y Media (10%) de Superficie_Corporal\n\n")
## Media recortada y Media (10%) de Superficie_Corporal
mean(DatasetE$Superficie_Corporal, trim = 0.1)
## [1] 1.781274
mean(DatasetE$Superficie_Corporal)
## [1] 1.792442
Los resultados muestran que las medias recortadas son menores que la medias en Edad y Peso, lo que muestra la existencia de algunos valores atípicos que influyen en el comportamiento del grupo en conjunto, a diferencia de lo que sucede en la altura, la cual muestra que ambas medidas son muy cercanas entre si.
mad(DatasetE$Peso, na.rm = TRUE)
## [1] 17.0499
mad(DatasetE$Altura, na.rm = TRUE)
## [1] 0.088956
mad(DatasetE$Edad, na.rm = TRUE)
## [1] 1.4826
mad(DatasetE$IMC, na.rm = TRUE)
## [1] 4.959297
mad(DatasetE$Superficie_Corporal, na.rm = TRUE)
## [1] 0.2342508
mean(abs(DatasetE$Peso - mean(DatasetE$Peso, na.rm = TRUE)))
## [1] 12.87507
mean(abs(DatasetE$Altura - mean(DatasetE$Altura, na.rm = TRUE)))
## [1] 0.07399408
mean(abs(DatasetE$Edad - mean(DatasetE$Edad, na.rm = TRUE)))
## [1] 4.485577
mean(abs(DatasetE$IMC - mean(DatasetE$Edad, na.rm = TRUE)))
## [1] 3.682559
mean(abs(DatasetE$Superficie_Corporal - mean(DatasetE$Edad, na.rm = TRUE)))
## [1] 22.85179
Peso: (MAD: 12.9 / MEDA:17.0) El peso varía bastante entre personas. Es una variable muy dispersa. Altura: (MAD: 0.07 / MEDA: 0.09) Las alturas son muy similares, casi no cambian entre individuos. Edad: (MAD: 4.5 / MEDA: 1.5) Hay cierta variación en edades, pero la mayoría se concentra en jóvenes adultos.
sd(DatasetE$Peso, na.rm = TRUE)
## [1] 15.95817
sd(DatasetE$Altura, na.rm = TRUE)
## [1] 0.0939213
sd(DatasetE$Edad, na.rm = TRUE)
## [1] 6.574322
sd(DatasetE$IMC, na.rm = TRUE)
## [1] 4.384137
sd(DatasetE$Superficie_Corporal, na.rm = TRUE)
## [1] 0.2378484
Peso: 15.96, muestra una alta dispersión, se notan diferencias entre individuos. Altura: 0.094, muestra baja dispersión, la mayoría tiene alturas similares. Edad: 6.57, muestra dispersión moderada, no se nota tanta diferencia entre los individuos.
cat("Coeficiente de variación - Peso\n")
## Coeficiente de variación - Peso
cv_peso <- sd(DatasetE$Peso, na.rm = TRUE) / mean(DatasetE$Peso, na.rm = TRUE)
print(cv_peso)
## [1] 0.2295568
cat("Coeficiente de variación - Altura\n")
## Coeficiente de variación - Altura
cv_altura <- sd(DatasetE$Altura, na.rm = TRUE) / mean(DatasetE$Altura, na.rm = TRUE)
print(cv_altura)
## [1] 0.05591834
cat("Coeficiente de variación - Edad\n")
## Coeficiente de variación - Edad
cv_edad <- sd(DatasetE$Edad, na.rm = TRUE) / mean(DatasetE$Edad, na.rm = TRUE)
print(cv_edad)
## [1] 0.2667692
cat("Coeficiente de variación - IMC\n")
## Coeficiente de variación - IMC
cv_imc <- sd(DatasetE$IMC, na.rm = TRUE) / mean(DatasetE$IMC, na.rm = TRUE)
print(cv_imc)
## [1] 0.179028
cat("Coeficiente de variación - Superficie_Corporal\n")
## Coeficiente de variación - Superficie_Corporal
cv_superficie <- sd(DatasetE$Superficie_Corporal, na.rm = TRUE) / mean(DatasetE$Superficie_Corporal, na.rm = TRUE)
print(cv_superficie)
## [1] 0.1326952
Altura: Es la que tiene coeficiente de variabilidad mas bajo osea que los datos de la muestra no varian tanto entre si, respecto a la media.
Peso: Tiene coeficiente de variabilidad alto osea que los datos de la muestra varian bastante uno respecto al otro, comparado a la media respecto a la media.
Edad: Tiene el coeficiente de variabilidad mas alto de los 3, osea que los datos muestran mayor lejania entre ellos y su media.
#percentiles para edad
quantile(DatasetE$Superficie_Corporal, probs = c(0.25, 0.5, 0.75, 0.9, 1))
## 25% 50% 75% 90% 100%
## 1.62700 1.75700 1.94975 2.08670 2.63300
# Rango intercuartil
IQR(DatasetE$Superficie_Corporal)
## [1] 0.32275
# diagrama de caja y bigotes
boxplot(DatasetE$Superficie_Corporal, main = "Caja y Bigotes - Superficie_Corporal", ylab = "m2",col = "lightblue")
#percentiles para edad
quantile(DatasetE$IMC, probs = c(0.25, 0.5, 0.75, 0.9, 1))
## 25% 50% 75% 90% 100%
## 21.0225 23.9750 27.7725 30.1450 36.1600
# Rango intercuartil
IQR(DatasetE$IMC)
## [1] 6.75
# diagrama de caja y bigotes
boxplot(DatasetE$IMC, main = "Caja y Bigotes - IMC", ylab = "imc",col = "lightblue")
#percentiles para edad
quantile(DatasetE$Edad, probs = c(0.25, 0.5, 0.75, 0.9, 1))
## 25% 50% 75% 90% 100%
## 21.00 22.00 24.25 31.00 55.00
# Rango intercuartil
IQR(DatasetE$Edad)
## [1] 3.25
# diagrama de caja y bigotes
boxplot(DatasetE$Edad, main = "Caja y Bigotes - Edad", ylab = "Años",col = "lightblue")
# percentiles para altura
quantile(DatasetE$Altura, probs = c(0.25, 0.5, 0.75, 0.9, 1))
## 25% 50% 75% 90% 100%
## 1.6275 1.6600 1.7500 1.8000 1.9300
# Rango intercuartil
IQR(DatasetE$Altura)
## [1] 0.1225
# diagrama de caja y bigotes
boxplot(DatasetE$Altura, main = "Caja y Bigotes - Altura", ylab = "metros", col = "lightblue")
# Percentiles para Peso
quantile(DatasetE$Peso, probs = c(0.25, 0.5, 0.75, 0.9, 1))
## 25% 50% 75% 90% 100%
## 58.00 66.50 80.00 89.94 130.00
# Rango intercuartil
IQR(DatasetE$Peso)
## [1] 22
# diagrama de caja y bigotes
boxplot(DatasetE$Peso, main = "Caja y Bigotes - Peso", ylab = "Kg", col = "lightblue")
Los diagramas de caja y bigotes muestran diferentes niveles de dispersión y la presencia de algunos valores atípicos, especialmente en las variables relacionadas con el peso y el IMC. Esto evidencia que la muestra presenta una alta variabilidad, permitiendo identificar diferencias en la distribución de los datos entre los individuos analizados.
# Seleccionar las variables
variables <- DatasetE[, c("Peso", "Edad", "Altura", "IMC", "Superficie_Corporal")]
# Crear matriz de diagramas de dispersión
pairs(variables,
main = "Matriz de diagramas de dispersión",
pch = 19)
ggpairs(variables)
# Dispersión Edad vs Peso
plot(DatasetE$Edad, DatasetE$Peso, main = "Dispersión Edad vs Peso", xlab = "Edad (años)", ylab = "Peso (kg)", col = "darkblue", pch = 19)
# Dispersión Altura vs Peso
plot(DatasetE$Altura, DatasetE$Peso, main = "Dispersión Altura vs Peso", xlab = "Altura (m)", ylab = "Peso (kg)", col = "darkgreen", pch = 19)
# Dispersión Edad vs Altura
plot(DatasetE$Edad, DatasetE$Altura, main = "Dispersión Edad vs Altura", xlab = "Edad (años)", ylab = "Altura (m)", col = "purple", pch = 19)
Los diagramas de dispersión nos muestran una relación positiva entre la
altura y el peso, ya que, en general, las personas con mayor estatura
tienden a presentar un mayor peso. En contraste, las relaciones entre
edad y peso y entre edad y altura son más dispersas, lo que muestra una
asociación menos marcada entre estas variables.
La matriz de diagramas de dispersión a su vez confirma las relaciones vistas en la matriz de correlación. Se evidencia una correlación muy fuerte entre Peso y Superficie Corporal (0.985), seguida de Peso e IMC (0.864), donde los puntos siguen una tendencia ascendente al igual que Altura y Superficie Corporal (0.744) . Edad y Altura (0.039) muestran una relación prácticamente nula.
# Covarianza entre Edad y Peso
cov(DatasetE$Edad, DatasetE$Peso)
## [1] 34.19165
# Covarianza entre Edad y Altura
cov(DatasetE$Edad, DatasetE$Altura)
## [1] 0.02393951
# Covarianza entre Edad e IMC
cov(DatasetE$Edad, DatasetE$IMC)
## [1] 10.97006
# Covarianza entre Edad y Superficie Corporal
cov(DatasetE$Edad, DatasetE$Superficie_Corporal)
## [1] 0.4464599
# Covarianza entre Peso y Altura
cov(DatasetE$Peso, DatasetE$Altura)
## [1] 0.9318514
# Covarianza entre Peso e IMC
cov(DatasetE$Peso, DatasetE$IMC)
## [1] 60.4676
# Covarianza entre Peso y Superficie Corporal
cov(DatasetE$Peso, DatasetE$Superficie_Corporal)
## [1] 3.7379
# Covarianza entre Altura e IMC
cov(DatasetE$Altura, DatasetE$IMC)
## [1] 0.06440429
# Covarianza entre Altura y Superficie Corporal
cov(DatasetE$Altura, DatasetE$Superficie_Corporal)
## [1] 0.01661755
# Covarianza entre IMC y Superficie Corporal
cov(DatasetE$IMC, DatasetE$Superficie_Corporal)
## [1] 0.8063693
# Matriz de covarianzas
cov(DatasetE[, c("Edad",
"Peso",
"Altura",
"IMC",
"Superficie_Corporal")])
## Edad Peso Altura IMC
## Edad 43.22171397 34.1916542 0.02393951 10.97006441
## Peso 34.19165422 254.6631927 0.93185138 60.46759802
## Altura 0.02393951 0.9318514 0.00882121 0.06440429
## IMC 10.97006441 60.4675980 0.06440429 19.22065906
## Superficie_Corporal 0.44645986 3.7379000 0.01661755 0.80636928
## Superficie_Corporal
## Edad 0.44645986
## Peso 3.73790004
## Altura 0.01661755
## IMC 0.80636928
## Superficie_Corporal 0.05657188
se puede ver que las mayores covarianzas corresponden al peso y el IMC, indicando que ambas variables presentan una variación más marcada. En diferencia, la altura muestra covarianzas bajas con las demás variables, mientras que la superficie corporal presenta una asociación positiva, aunque de menor magnitud.
y a su vez muestra que el peso es la variable con mayor variabilidad y la que presenta las asociaciones más fuertes con las demás variables. La relación positiva más destacada es entre peso e IMC, indicando que ambas aumentan a la vez. La altura presenta covarianzas bajas con las demás variables. En general, el peso es la variable que más influye en la variabilidad conjunta de los datos.
variables <- DatasetE[, c(
"Edad",
"Peso",
"Altura",
"IMC",
"Superficie_Corporal"
)]
# Calcular la matriz de correlación de Pearson
cor_pearson <- cor(
variables,
method = "pearson",
use = "complete.obs"
)
# Mostrar la matriz de correlación
cor_pearson
## Edad Peso Altura IMC
## Edad 1.00000000 0.3259013 0.03877039 0.3806046
## Peso 0.32590125 1.0000000 0.62172665 0.8642820
## Altura 0.03877039 0.6217267 1.00000000 0.1564108
## IMC 0.38060461 0.8642820 0.15641075 1.0000000
## Superficie_Corporal 0.28551644 0.9847915 0.74387955 0.7733027
## Superficie_Corporal
## Edad 0.2855164
## Peso 0.9847915
## Altura 0.7438796
## IMC 0.7733027
## Superficie_Corporal 1.0000000
# Graficar la matriz de correlación
corrplot(
cor_pearson,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45)
Vemos una correlación muy fuerte entre Peso y Superficie Corporal
(0.98), seguida de Peso e IMC (0.86), indicando una asociación positiva
elevada. También se observa una correlación alta entre IMC y Superficie
Corporal (0.77) y entre Altura y Superficie Corporal (0.74). En
contraste, la Edad presenta correlaciones bajas con las demás variables,
siendo la menor con Altura (0.04).
se denota que la relación más fuerte se presenta entre el peso y la altura, con una correlación positiva de 0.622, lo que indica que, a mayor altura tiende a observarse un mayor peso. A pesar de eso la edad presenta una correlación positiva débil con el peso (0.326) y una correlación prácticamente nula con la altura (0.039), lo que muestra que la edad tiene una influencia limitada sobre estas variables.
cor_spearman <- cor(
variables,
method = "spearman"
)
cor_spearman
## Edad Peso Altura IMC Superficie_Corporal
## Edad 1.0000000 0.3629901 0.1444730 0.3693184 0.3375361
## Peso 0.3629901 1.0000000 0.6220084 0.8672057 0.9821424
## Altura 0.1444730 0.6220084 1.0000000 0.1828821 0.7456322
## IMC 0.3693184 0.8672057 0.1828821 1.0000000 0.7664467
## Superficie_Corporal 0.3375361 0.9821424 0.7456322 0.7664467 1.0000000
corrplot(cor_spearman,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black")
se ve una correlación muy fuerte entre Peso y Superficie Corporal (0.98)
y entre Peso e IMC (0.87). También hay correlación fuerte entre Altura y
Superficie Corporal (0.75), mientras que la Edad presenta asociaciones
débiles con las demás variables, siendo la menor con Altura (0.14).
cor_kendall <- cor(
variables,
method = "kendall"
)
cor_kendall
## Edad Peso Altura IMC Superficie_Corporal
## Edad 1.0000000 0.2597304 0.1092576 0.2583384 0.2440880
## Peso 0.2597304 1.0000000 0.4629421 0.6951799 0.9069617
## Altura 0.1092576 0.4629421 1.0000000 0.1376317 0.5642572
## IMC 0.2583384 0.6951799 0.1376317 1.0000000 0.5830915
## Superficie_Corporal 0.2440880 0.9069617 0.5642572 0.5830915 1.0000000
corrplot(cor_kendall,
method = "color",
type = "upper",
addCoef.col = "black",
tl.col = "black")
muestra una correlación muy fuerte entre Peso y Superficie Corporal
(0.91), seguida de Peso e IMC (0.70). También se observa una correlación
moderada entre IMC y Superficie Corporal (0.58) y entre Altura y
Superficie Corporal (0.56). En contraste, la Edad presenta asociaciones
débiles con las demás variables, siendo la menor con Altura (0.11), lo
que indica una escasa relación entre estas variables.
plot_ly(
data = variables,
x = ~Altura,
y = ~Peso,
z = ~IMC,
type = "scatter3d",
mode = "markers",
marker = list(size = 4)
)
El gráfico 3D es creciente entre las tres variables, evidenciando que a medida que aumenta el peso, también tiende a aumentar el IMC, especialmente en individuos con mayor altura. La mayor concentración de personas se encuentra entre 60 y 90 kg de peso, 1.60 y 1.80 m de altura e IMC entre 22 y 30.
plot_ly(
data = variables,
x = ~Edad,
y = ~Peso,
z = ~Superficie_Corporal,
type = "scatter3d",
mode = "markers",
marker = list(size = 4)
)
El gráfico 3D tiene relación positiva entre el peso y la superficie corporal, donde a mayor peso, mayor superficie corporal. La edad presenta una relación menor, ya que los datos se encuentran dispersos a lo largo de este eje sin una tendencia marcada. La mayor concentración de observaciones corresponde a individuos con 20 a 35 años, 60 a 90 kg de peso y una superficie corporal entre 1.7 y 2.1.
library(cluster)
# Seleccionar variables categóricas
variables_categoricas <- DatasetE[, c(
"Genero",
"Historial_familiar_con_sobrepeso",
"FAVC",
"FUMA",
"SCC",
"MTRANS"
)]
# Convertir variables a factores
variables_categoricas[] <- lapply(
variables_categoricas,
factor
)
# Calcular distancia de Gower
distancia_gower <- daisy(
variables_categoricas,
metric = "gower"
)
# Convertir a matriz
matriz_gower <- as.matrix(distancia_gower)
# Mostrar matriz de distancia de los primeros 5 individuos
matriz_gower[1:5, 1:5]
## 1 2 3 4 5
## 1 0.0000000 0.3333333 0.1666667 0.5000000 0.3333333
## 2 0.3333333 0.0000000 0.5000000 0.8333333 0.6666667
## 3 0.1666667 0.5000000 0.0000000 0.3333333 0.1666667
## 4 0.5000000 0.8333333 0.3333333 0.0000000 0.1666667
## 5 0.3333333 0.6666667 0.1666667 0.1666667 0.0000000
# Buscar los pares de individuos más similares
# Se eliminan las comparaciones de cada individuo consigo mismo
matriz_gower[lower.tri(matriz_gower, diag = TRUE)] <- NA
# Crear tabla con todos los pares de individuos
pares_similares <- which(
!is.na(matriz_gower),
arr.ind = TRUE
)
# Crear tabla ordenada por menor distancia
resultado_similitud <- data.frame(
Individuo_1 = pares_similares[, 1],
Individuo_2 = pares_similares[, 2],
Distancia_Gower = matriz_gower[pares_similares]
)
# Ordenar de menor a mayor distancia
resultado_similitud <- resultado_similitud[
order(resultado_similitud$Distancia_Gower),
]
# Mostrar los 10 pares más similares
head(resultado_similitud, 10)
## Individuo_1 Individuo_2 Distancia_Gower
## 26 5 8 0
## 45 9 10 0
## 54 9 11 0
## 55 10 11 0
## 71 5 13 0
## 74 8 13 0
## 84 6 14 0
## 100 9 15 0
## 101 10 15 0
## 102 11 15 0
la matriz de distancias Gower muestra los pares de individuos de mayor similitud en las variables categóricas. Esto muestra que los individuos presentan una distancia de Gower igual a 0. Esto indica que dichos individuos coinciden completamente en las variables consideradas que son género, historial familiar de sobrepeso, FAVC, FUMA, SCC y MTRANS.
Se seleccionó la distancia de Gower debido a que el conjunto de datos analizados contiene variables de diferentes tipos, incluyendo variables numéricas, continuas, ordinales y nominales ( en este caso tenemos en cuenta la mayoria de los datos por nuestra hipotesis de las causas de obesidad) . Esta medida nos permite combinar adecuadamente estas características al calcular la similitud entre individuos, sin necesidad de transformar las variables categóricas en valores numéricos que puedan generar distorsiones. De esta manera, la distancia de Gower nos permite obtener una comparación más representativa de las características físicas y hábitos de los individuos.
library(cluster)
# Crear una copia de la base de datos
datos <- DatasetE
nominales <- c(
"Genero",
"Historial_familiar_con_sobrepeso",
"FAVC",
"FUMA",
"SCC",
"MTRANS"
)
datos[nominales] <- lapply(datos[nominales], factor)
ordinales <- c(
"FCVC",
"NCP",
"CAEC",
"CH2O",
"FAF",
"TUE",
"CALC",
"NObeyesdad"
)
datos$FCVC <- factor(datos$FCVC,
ordered = TRUE)
datos$NCP <- factor(datos$NCP,
ordered = TRUE)
datos$CAEC <- factor(datos$CAEC,
ordered = TRUE)
datos$CH2O <- factor(datos$CH2O,
ordered = TRUE)
datos$FAF <- factor(datos$FAF,
ordered = TRUE)
datos$TUE <- factor(datos$TUE,
ordered = TRUE)
datos$CALC <- factor(datos$CALC,
ordered = TRUE)
datos$NObeyesdad <- factor(datos$NObeyesdad,
ordered = TRUE)
distancia <- daisy(
datos,
metric = "gower"
)
as.matrix(distancia)[1:5, 1:5]
## 1 2 3 4 5
## 1 0.0000000 0.2872475 0.1506237 0.3671619 0.3047976
## 2 0.2872475 0.0000000 0.3668742 0.4263392 0.4692380
## 3 0.1506237 0.3668742 0.0000000 0.2199338 0.2354109
## 4 0.3671619 0.4263392 0.2199338 0.0000000 0.2370837
## 5 0.3047976 0.4692380 0.2354109 0.2370837 0.0000000
grupos <- pam(
distancia,
k = 6
)
datos$Grupo <- grupos$clustering
table(datos$Grupo)
##
## 1 2 3 4 5 6
## 18 11 13 16 28 18
tabla_numericas <- datos %>%
group_by(Grupo) %>%
summarise(
Edad = mean(Edad),
Altura = mean(Altura),
Peso = mean(Peso),
IMC = mean(IMC),
Superficie_Corporal = mean(Superficie_Corporal)
)
as.data.frame (tabla_numericas)
## Grupo Edad Altura Peso IMC Superficie_Corporal
## 1 1 24.72222 1.738889 78.27778 25.78833 1.936333
## 2 2 23.09091 1.614545 52.72727 20.21636 1.534909
## 3 3 24.00000 1.679231 62.83077 22.06231 1.706308
## 4 4 27.50000 1.623750 63.71875 23.95938 1.687125
## 5 5 23.07143 1.717143 72.33929 24.48214 1.850429
## 6 6 25.88889 1.651667 76.61111 28.03222 1.871556
moda <- function(x){
names(sort(table(x), decreasing = TRUE))[1]
}
tabla_ordinales <- datos %>%
group_by(Grupo) %>%
summarise(
FCVC = moda(FCVC),
NCP = moda(NCP),
CAEC = moda(CAEC),
CH2O = moda(CH2O),
FAF = moda(FAF),
TUE = moda(TUE),
CALC = moda(CALC),
NObeyesdad = moda(NObeyesdad)
)
as.data.frame (tabla_ordinales)
## Grupo FCVC NCP CAEC CH2O FAF TUE CALC
## 1 1 A veces Tres A veces Entre 1 y 2L 2-4 días 3-5 horas A veces
## 2 2 Siempre Tres A veces Más de 2L 2-4 días 0-2 horas No
## 3 3 A veces Tres A veces Entre 1 y 2L Ninguna 0-2 horas A veces
## 4 4 Siempre Tres A veces Entre 1 y 2L Ninguna 0-2 horas A veces
## 5 5 A veces Tres A veces Entre 1 y 2L 1-2 días 3-5 horas A veces
## 6 6 A veces Tres A veces Entre 1 y 2L Ninguna 0-2 horas No
## NObeyesdad
## 1 Peso normal
## 2 Peso normal
## 3 Peso normal
## 4 Peso normal
## 5 Peso normal
## 6 Sobrepeso II
moda <- function(x) {
x <- na.omit(x)
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
tabla_nominales <- datos %>%
group_by(Grupo) %>%
summarise(
Genero = moda(Genero),
Historial_familiar = moda(Historial_familiar_con_sobrepeso),
FAVC = moda(FAVC),
FUMA = moda(FUMA),
SCC = moda(SCC),
MTRANS = moda(MTRANS)
)
as.data.frame (tabla_nominales)
## Grupo Genero Historial_familiar FAVC FUMA SCC MTRANS
## 1 1 Masculino Si No No No Transporte público
## 2 2 Femenino Si No No Si Transporte público
## 3 3 Masculino No No No No Transporte público
## 4 4 Femenino Si Si No No Automóvil
## 5 5 Masculino Si Si No No Transporte público
## 6 6 Femenino Si Si No No Transporte público
perfil_chernoff <- datos %>%
group_by(Grupo) %>%
summarise(
IMC = mean(IMC),
Peso = mean(Peso),
NObeyesdad = mean(as.numeric(NObeyesdad)),
Edad = mean(Edad),
FAF = mean(as.numeric(FAF)),
FCVC = mean(as.numeric(FCVC)),
CH2O = mean(as.numeric(CH2O)),
TUE = mean(as.numeric(TUE)),
Historial_familiar = mean(as.numeric(Historial_familiar_con_sobrepeso))
)
as.data.frame(perfil_chernoff)
## Grupo IMC Peso NObeyesdad Edad FAF FCVC CH2O
## 1 1 25.78833 78.27778 4.555556 24.72222 2.388889 1.444444 1.611111
## 2 2 20.21636 52.72727 2.909091 23.09091 2.272727 2.636364 1.727273
## 3 3 22.06231 62.83077 4.307692 24.00000 3.230769 1.307692 1.230769
## 4 4 23.95938 63.71875 3.937500 27.50000 2.562500 2.562500 1.250000
## 5 5 24.48214 72.33929 3.964286 23.07143 2.071429 1.357143 1.464286
## 6 6 28.03222 76.61111 4.944444 25.88889 3.666667 1.333333 1.944444
## TUE Historial_familiar
## 1 2.055556 1.777778
## 2 1.363636 1.727273
## 3 1.076923 1.076923
## 4 1.375000 1.812500
## 5 1.892857 1.892857
## 6 1.500000 1.833333
datos_caras <- perfil_chernoff[, -1]
datos_caras <- scale(datos_caras)
datos_caras <- perfil_chernoff[, c(
"IMC",
"Peso",
"Edad",
"NObeyesdad",
"FAF",
"FCVC",
"CH2O",
"TUE",
"Historial_familiar"
)]
faces(
datos_caras,
labels = paste("Grupo", perfil_chernoff$Grupo),
main = "Perfiles de los grupos obtenidos con distancia de Gower"
)
## effect of variables:
## modified item Var
## "height of face " "IMC"
## "width of face " "Peso"
## "structure of face" "Edad"
## "height of mouth " "NObeyesdad"
## "width of mouth " "FAF"
## "smiling " "FCVC"
## "height of eyes " "CH2O"
## "width of eyes " "TUE"
## "height of hair " "Historial_familiar"
## "width of hair " "IMC"
## "style of hair " "Peso"
## "height of nose " "Edad"
## "width of nose " "NObeyesdad"
## "width of ear " "FAF"
## "height of ear " "FCVC"
interpretacion <- data.frame(
Grupo = c(
"Grupo 1",
"Grupo 2",
"Grupo 3",
"Grupo 4",
"Grupo 5",
"Grupo 6"
),
Interpretacion = c(
"Presenta un IMC y peso elevados, con un nivel de obesidad alto. Se caracteriza por una actividad física intermedia, bajo consumo de vegetales y consumo moderado de agua, lo que sugiere un perfil asociado a hábitos alimenticios poco favorables.",
"Es el grupo con menor peso e IMC. Presenta mayor consumo de vegetales y menor uso de tecnología, indicando un perfil con hábitos de vida más saludables y menor riesgo de obesidad.",
"Posee un IMC bajo y un consumo elevado de vegetales, además de bajo uso de tecnología y menor historial familiar de sobrepeso. Aunque presenta menor consumo de agua, refleja un perfil con hábitos generalmente saludables.",
"Corresponde al grupo con mayor edad promedio y buena actividad física. Presenta un IMC intermedio y consumo moderado de vegetales, aunque con menor consumo de agua y un historial familiar relativamente alto.",
"Presenta peso e IMC relativamente elevados, acompañado de menor actividad física y mayor antecedente familiar de sobrepeso. Este perfil sugiere una mayor predisposición al sobrepeso.",
"Es el grupo con el mayor IMC y el mayor nivel de obesidad. Aunque realiza más actividad física que los demás grupos, presenta bajo consumo de vegetales y un elevado antecedente familiar, indicando que el estado nutricional depende de múltiples factores además de la actividad física."
),
stringsAsFactors = FALSE
)
kable(
interpretacion,
caption = "Interpretación de los perfiles obtenidos mediante la distancia de Gower y las caras de Chernoff"
)
| Grupo | Interpretacion |
|---|---|
| Grupo 1 | Presenta un IMC y peso elevados, con un nivel de obesidad alto. Se caracteriza por una actividad física intermedia, bajo consumo de vegetales y consumo moderado de agua, lo que sugiere un perfil asociado a hábitos alimenticios poco favorables. |
| Grupo 2 | Es el grupo con menor peso e IMC. Presenta mayor consumo de vegetales y menor uso de tecnología, indicando un perfil con hábitos de vida más saludables y menor riesgo de obesidad. |
| Grupo 3 | Posee un IMC bajo y un consumo elevado de vegetales, además de bajo uso de tecnología y menor historial familiar de sobrepeso. Aunque presenta menor consumo de agua, refleja un perfil con hábitos generalmente saludables. |
| Grupo 4 | Corresponde al grupo con mayor edad promedio y buena actividad física. Presenta un IMC intermedio y consumo moderado de vegetales, aunque con menor consumo de agua y un historial familiar relativamente alto. |
| Grupo 5 | Presenta peso e IMC relativamente elevados, acompañado de menor actividad física y mayor antecedente familiar de sobrepeso. Este perfil sugiere una mayor predisposición al sobrepeso. |
| Grupo 6 | Es el grupo con el mayor IMC y el mayor nivel de obesidad. Aunque realiza más actividad física que los demás grupos, presenta bajo consumo de vegetales y un elevado antecedente familiar, indicando que el estado nutricional depende de múltiples factores además de la actividad física. |
En general, los grupos evidencian la existencia de diferentes perfiles asociados al estado nutricional. Los grupos con mayores niveles de obesidad (1, 5 y 6) presentan en común valores más altos de IMC y peso, un mayor antecedente familiar de sobrepeso y un menor consumo de vegetales, lo que sugiere que estos factores están relacionados con un mayor riesgo de obesidad dentro de la población . En cambio, los grupos 2 y 3 muestran menores valores de IMC y peso, acompañados de un mayor consumo de vegetales y un menor uso de tecnología, características que reflejan hábitos más saludables. Además, se observa que una mayor actividad física, como ocurre en el grupo 6, no necesariamente se traduce en menores niveles de obesidad, lo que confirma que la obesidad es el resultado de la interacción de múltiples factores, como la alimentación, los antecedentes familiares y las características corporales.
hist(DatasetE$Superficie_Corporal, probability = TRUE, col = "lightgray", main = "Comparacion de anchos de banda (Superficie Corporal)", xlab = "Superficie Corporal", ylim = c(0, 2))
lines(density(DatasetE$Superficie_Corporal, bw = 0.05), col = "red", lwd = 2)
lines(density(DatasetE$Superficie_Corporal, bw = 0.1), col = "blue", lwd = 2)
lines(density(DatasetE$Superficie_Corporal, bw = 0.2), col = "green", lwd = 2)
# Valor óptimo
bw_opt_sc <- bw.SJ(DatasetE$Superficie_Corporal)
lines(density(DatasetE$Superficie_Corporal, bw = bw_opt_sc), col = "purple", lwd = 2)
legend("topright", legend = c("h=0.05", "h=0.1", "h=0.2", paste("bw.SJ=", round(bw_opt_sc,3))),
col = c("red", "blue", "green", "purple"), lwd = 2)
hist(DatasetE$IMC, probability = TRUE, col = "lightgray",main = "Comparación de anchos de banda (IMC)", xlab = "IMC")
lines(density(DatasetE$IMC, bw = 1), col = "red", lwd = 2)
lines(density(DatasetE$IMC, bw = 2), col = "blue", lwd = 2)
lines(density(DatasetE$IMC, bw = 3), col = "green", lwd = 2)
bw_opt_imc <- bw.SJ(DatasetE$IMC)
lines(density(DatasetE$IMC, bw = bw_opt_imc), col = "purple", lwd = 2)
legend("topright", legend = c("h=1", "h=2", "h=3", paste("bw.SJ≈", round(bw_opt_imc,3))), col = c("red", "blue", "green", "purple"), lwd = 2)
hist(DatasetE$Peso, probability = TRUE, col = "lightgray", main = "Comparación de anchos de banda (Peso)", xlab = "Peso", ylim = c(0, 0.03))
lines(density(DatasetE$Peso, bw = 4), col = "red", lwd = 2)
lines(density(DatasetE$Peso, bw = 7), col = "blue", lwd = 2)
lines(density(DatasetE$Peso, bw = 10), col = "green", lwd = 2)
bw_opt_peso <- bw.SJ(DatasetE$Peso)
lines(density(DatasetE$Peso, bw = bw_opt_peso), col = "purple", lwd = 2)
legend("topright", legend = c("h=4", "h=7", "h=10", paste("bw.SJ =", round(bw_opt_peso,3))), col = c("red", "blue", "green", "purple"), lwd = 2)
hist(DatasetE$Altura, probability = TRUE, col = "lightgray", main = "Comparación de anchos de banda (Altura)", xlab = "Altura", ylim = c(0, 6))
lines(density(DatasetE$Altura, bw = 0.02), col = "red", lwd = 2)
lines(density(DatasetE$Altura, bw = 0.03), col = "blue", lwd = 2)
lines(density(DatasetE$Altura, bw = 0.04), col = "green", lwd = 2)
bw_opt_altura <- bw.SJ(DatasetE$Altura)
lines(density(DatasetE$Altura, bw = bw_opt_altura), col = "purple", lwd = 2)
legend("topright", legend = c("h=0.02", "h=0.03", "h=0.04", paste("bw.SJ≈", round(bw_opt_altura,3))), col = c("red", "blue", "green", "purple"), lwd = 2)
hist(DatasetE$Edad, probability = TRUE, col = "lightgray", main = "Comparación de anchos de banda (Edad)", xlab = "Edad", ylim = c(0, 0.18))
lines(density(DatasetE$Edad, bw = 2), col = "red", lwd = 2)
lines(density(DatasetE$Edad, bw = 3), col = "blue", lwd = 2)
lines(density(DatasetE$Edad, bw = 4), col = "green", lwd = 2)
bw_opt_edad <- bw.SJ(DatasetE$Edad)
lines(density(DatasetE$Edad, bw = bw_opt_edad), col = "purple", lwd = 2)
legend("topright", legend = c("h=2", "h=3", "h=4", paste("bw.SJ≈", round(bw_opt_edad,3))), col = c("red", "blue", "green", "purple"), lwd = 2)
superficie corporal
La distribución presenta mayor concentración entre 1.6 y 2.0 m², con una ligera asimetría hacia la derecha. Preferimos el ancho de banda de Sheather-Jones (0.087) ofrece una curva equilibrada.
imc
La mayor densidad se encuentra entre 20 y 30 de IMC, con una ligera cola hacia valores altos. Preferimos el ancho de banda de Sheather-Jones (1.392) representa adecuadamente la forma general sin perder información importante.
peso
La distribución del peso se concentra principalmente entre 55 y 85 kg, con una cola hacia los valores más altos. Preferimos el ancho de banda de Sheather-Jones (5.318) da un buen equilibrio entre suavidad y detalle de la distribución.
altura
La altura presenta una distribución aproximadamente unimodal, concentrada entre 1.60 y 1.80 m. Preferimos el ancho de banda de Sheather-Jones (0.022) logra una estimación suave conservando la forma principal de los datos.
edad
La distribución se concentra principalmente entre los 20 y 25 años, con una cola hacia edades mayores. preferimos el ancho de banda de Sheather-Jones (0.697) suaviza adecuadamente la curva sin ocultar el patrón general de la distribución.
hist(DatasetE$Superficie_Corporal, probability = TRUE, col = "lightgray", main = "Comparación de kernels (Superficie Corporal)", xlab = "Superficie Corporal")
lines(density(DatasetE$Superficie_Corporal, bw = bw_opt_sc , kernel = "gaussian"), col = "red", lwd = 2)
lines(density(DatasetE$Superficie_Corporal, bw = bw_opt_sc , kernel = "epanechnikov"), col = "blue", lwd = 2)
lines(density(DatasetE$Superficie_Corporal, bw = bw_opt_sc , kernel = "rectangular"), col = "green", lwd = 2)
lines(density(DatasetE$Superficie_Corporal, bw = bw_opt_sc , kernel = "triangular"), col = "purple", lwd = 2)
legend("topright", legend = c("Gaussian","Epanechnikov","Rectangular","Triangular"), col = c("red","blue","green","purple"), lwd = 2)
hist(DatasetE$IMC, probability = TRUE, col = "lightgray", main = "Comparación de kernels (IMC)", xlab = "IMC")
lines(density(DatasetE$IMC, bw = bw_opt_imc , kernel = "gaussian"), col = "red", lwd = 2)
lines(density(DatasetE$IMC, bw = bw_opt_imc , kernel = "epanechnikov"), col = "blue", lwd = 2)
lines(density(DatasetE$IMC, bw = bw_opt_imc , kernel = "rectangular"), col = "green", lwd = 2)
lines(density(DatasetE$IMC, bw = bw_opt_imc , kernel = "triangular"), col = "purple", lwd = 2)
legend("topright", legend = c("Gaussian","Epanechnikov","Rectangular","Triangular"), col = c("red","blue","green","purple"), lwd = 2)
hist(DatasetE$Peso, probability = TRUE, col = "lightgray", main = "Comparación de kernels (Peso)", xlab = "Peso")
lines(density(DatasetE$Peso, bw = bw_opt_peso , kernel = "gaussian"), col = "red", lwd = 2)
lines(density(DatasetE$Peso, bw = bw_opt_peso , kernel = "epanechnikov"), col = "blue", lwd = 2)
lines(density(DatasetE$Peso, bw = bw_opt_peso , kernel = "rectangular"), col = "green", lwd = 2)
lines(density(DatasetE$Peso, bw = bw_opt_peso , kernel = "triangular"), col = "purple", lwd = 2)
legend("topright", legend = c("Gaussian","Epanechnikov","Rectangular","Triangular"), col = c("red","blue","green","purple"), lwd = 2)
hist(DatasetE$Altura, probability = TRUE, col = "lightgray",main = "Comparación de kernels (Altura)", xlab = "Altura", ylim = c(0, 6))
lines(density(DatasetE$Altura, bw = bw_opt_altura , kernel = "gaussian"), col = "red", lwd = 2)
lines(density(DatasetE$Altura, bw = bw_opt_altura, kernel = "epanechnikov"), col = "blue", lwd = 2)
lines(density(DatasetE$Altura, bw = bw_opt_altura, kernel = "rectangular"), col = "green", lwd = 2)
lines(density(DatasetE$Altura, bw = bw_opt_altura, kernel = "triangular"), col = "purple", lwd = 2)
legend("topright", legend = c("Gaussian","Epanechnikov","Rectangular","Triangular"), col = c("red","blue","green","purple"), lwd = 2)
hist(DatasetE$Edad, probability = TRUE, col = "lightgray", main = "Comparación de kernels (Edad)", xlab = "Edad", ylim = c(0, 0.2))
lines(density(DatasetE$Edad, bw = 1, kernel = "gaussian"), col = "red", lwd = 2)
lines(density(DatasetE$Edad, bw = 1, kernel = "epanechnikov"), col = "blue", lwd = 2)
lines(density(DatasetE$Edad, bw = 1, kernel = "rectangular"), col = "green", lwd = 2)
lines(density(DatasetE$Edad, bw = 1, kernel = "triangular"), col = "purple", lwd = 2)
legend("topright", legend = c("Gaussian","Epanechnikov","Rectangular","Triangular"), col = c("red","blue","green","purple"), lwd = 2)
sup corporal : La mayor concentración se encuentra entre 1.6 y 2.0 m²;
el kernel gaussiano representa mejor la distribución.
imc: Los valores se concentran principalmente entre 20 y 30; el kernel gaussiano ofrece el ajuste más suave.
peso: La mayor parte de los datos está entre 55 y 85 kg; el kernel gaussiano describe mejor la distribución.
altu: La distribución se concentra entre 1.60 y 1.80 m; el kernel gaussiano proporciona la representación más estable.
edad: La mayor concentración está entre 20 y 25 años; el kernel gaussiano ofrece el mejor ajuste de la densidad.
histograma densi
sup corporal: La media, mediana y moda son cercanas, lo que indica una distribución relativamente simétrica con ligera concentración alrededor de 1.8 m².
imc: La mayor concentración se encuentra entre 20 y 30; la media y la mediana son similares, mientras que la moda se ubica en un valor ligeramente mayor.
peso: La distribución se concentra principalmente entre 55 y 85 kg, con una ligera asimetría hacia los valores altos.
altura: La mayor parte de las observaciones se encuentra entre 1.60 y 1.80 m, mostrando una distribución aproximadamente unimodal.
edad: La mayoría de los individuos tiene entre 20 y 25 años, con una cola hacia edades mayores que evidencia asimetría positiva.
g <- function(x){
x^2 - 4*x + 10
}
g(DatasetE$Edad)
## [1] 367 367 447 631 406 735 447 406 490 406 582 367 406 1527 447
## [16] 406 631 735 790 447 406 2506 406 406 367 330 367 447 295 447
## [31] 735 847 490 1375 406 367 406 367 447 367 367 447 367 367 367
## [46] 367 367 367 330 367 367 330 447 447 406 447 406 367 231 330
## [61] 367 330 406 367 367 447 447 790 447 447 406 490 295 490 447
## [76] 490 490 447 447 295 790 447 295 790 1302 1030 406 847 1095 367
## [91] 1450 631 330 2815 367 535 1095 790 735 330 406 1855 406 262
distancia_media_plot <- function(x){
media <- mean(x)
distancia <- x - media
barplot(distancia,main = "Distancia de cada valor respecto a la Media", ylab = "Distancia", col = ifelse(distancia >= 0, "green", "orange"))
}
distancia_media_plot(DatasetE$Edad)
f <- function(x) {
exp(x) + log(x + 2) - 3*x
}
A travez de medidas de tendencia central, gráficos de pastel, gráficos de barras, tablas cruzadas, histogramas y análisis respectivo, los datos muestran principalmente jóvenes adultos, con edades entre 20 y 22 años, con altura no muy relevante en los niveles de obesidad, el peso presenta mayor asimetría, por la presencia de casos de sobrepeso y obesidad mostrada en los datos, los hábitos alimenticios y el estilo de vida muestran patrones que pueden relacionarse con el sobre peso, como, el consumo de alimentos calóricos en alta frecuencia y la poca actividad física, ademas de la combinación de antecedentes familiares con sobre peso, alimentación y estilo de vida son uno de los factores combinados que influyen directamente en el nivel de obesidad.
Con esto se permite concluir que la obesidad no depende de un solo factor, si no de la combinacion de variables como edad, peso y hábitos alimenticios como cotidianos. El análisis muestra como los hábitos pueden convertirse en factores para el desarrollo de obesidad, también se evidencia que la prevención debe enfocarse en mejorar los hábitos alimenticios y promover la actividad física regular. # Bibliografia
@misc{obesity_ucidata, author = {{UCI Machine Learning Repository}}, title = {Estimation of Obesity Levels Based on Eating Habits and Physical Condition}, year = {2019}, url = {https://doi.org/10.24432/C5H31Z}, note = {DatasetE} }