Introducción

El objetivo de este trabajo es analizar la relación entre el Índice de Masa Corporal (IMC) y dos posibles predictores: la altura y el peso. Para ello, se utilizará un modelo de regresión lineal múltiple que permita determinar en qué medida estas variables explican las variaciones en el IMC.

Para este análisis, se usará una base de datos obtenida de la pagina kaggle, con el fin de aplicar los conceptos fundamentales de la regresión lineal. La base de datos utilizada en este análisis se encuentra en formato Excel y contiene un total de 200 registros correspondientes a diferentes individuos. Cada observación incluye información sobre tres variables cuantitativas: peso, altura y el índice de masa corporal (IMC), calculado con base en las dos anteriores. En el análisis se evaluarán los supuestos del modelo clásico de regresión, como la linealidad, normalidad de los residuos, homocedasticidad e independencia de errores, así como medidas de ajuste como el coeficiente de determinación y el análisis de varianza (ANOVA).

Análisis exploratorio y visualización de datos

datos <- read_excel ("IMC.xlsx")
head(datos)
## # A tibble: 6 × 3
##   altura  peso   IMC
##    <dbl> <dbl> <dbl>
## 1    174    96    31
## 2    189    87    24
## 3    185   110    32
## 4    195   104    27
## 5    149    61    27
## 6    189   104    29

Estadísticas descriptivas

summary(datos)
##      altura           peso             IMC       
##  Min.   :140.0   Min.   : 50.00   Min.   :12.00  
##  1st Qu.:159.0   1st Qu.: 81.75   1st Qu.:28.00  
##  Median :172.0   Median :106.50   Median :36.00  
##  Mean   :171.9   Mean   :107.33   Mean   :36.77  
##  3rd Qu.:187.0   3rd Qu.:135.00   3rd Qu.:45.00  
##  Max.   :199.0   Max.   :160.00   Max.   :77.00

A partir del resumen estadístico de las variables consideradas, se pueden observar los siguientes aspectos clave:

  • Altura: La altura de los individuos en la muestra varía entre 140 cm y 199 cm, con una media de aproximadamente 171.9 cm y una mediana de 172 cm, lo que indica una distribución relativamente simétrica. El rango intercuartílico (Q3 - Q1) es de 28 cm (187 - 159), lo cual refleja una dispersión moderada.

  • Peso: El peso va desde 50 kg hasta 160 kg, con una media de 107.33 kg y una mediana de 106.5 kg, valores muy cercanos entre sí, lo que sugiere que la distribución también es aproximadamente simétrica. El 50% central de los datos (entre el primer y tercer cuartil) está comprendido entre 81.75 kg y 135 kg, mostrando una dispersión considerable.

  • IMC (Índice de Masa Corporal): El IMC presenta una media de 36.77 y una mediana de 36, lo cual indica que los datos están levemente sesgados a la derecha. El valor mínimo de IMC es 12, y el máximo es 77, lo cual podría indicar la presencia de valores extremos o atípicos. La mayor concentración de datos se encuentra entre 28 (Q1) y 45 (Q3), lo que sugiere una población con sobrepeso u obesidad, según los rangos comunes del IMC.

En conjunto, estos datos sugieren una posible relación positiva entre el peso y el IMC, mientras que la relación con la altura podría ser más compleja, algo que se evaluará en el análisis de regresión.

Modelo de regresión lineal multiple

El modelo de regresión lineal se expresa matematicamente como: \[ \text{y} = \beta_0 + \beta_1 \cdot x_1 + \beta_2 \cdot x_2 + \varepsilon \]

modelo <- lm(IMC ~ altura + peso, data = datos)
summary(modelo)
## 
## Call:
## lm(formula = IMC ~ altura + peso, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.4579 -1.4377 -0.5303  0.9368 10.6240 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 74.807764   1.874446   39.91   <2e-16 ***
## altura      -0.439337   0.010503  -41.83   <2e-16 ***
## peso         0.349181   0.005628   62.05   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.478 on 197 degrees of freedom
## Multiple R-squared:  0.9641, Adjusted R-squared:  0.9637 
## F-statistic:  2642 on 2 and 197 DF,  p-value: < 2.2e-16

El modelo presenta un coeficiente de determinación ajustado (\(R^2_{Ajustado}\)) de 0.9637, indicando que aproximadamente el 96.37% de la variabilidad del IMC puede ser explicada por la altura y el peso.

Respecto a los coeficientes, se observa que la altura tiene un efecto negativo y significativo sobre el IMC, lo que implica que, manteniendo constante el peso, un aumento en la altura se asocia con una disminución en el IMC. Por otro lado, el peso presenta un efecto positivo y significativo, lo que significa que, manteniendo constante la altura, un aumento en el peso se asocia con un incremento en el IMC.

En conjunto, estos resultados son coherentes con la definición y cálculo del IMC como una función del peso y la altura, y validan la pertinencia del modelo para explicar la variabilidad del índice en la muestra analizada.

la ecuación de la recta de mínimos cuadrados es: \[ \text{IMC}=74.807764−0.439337 \cdot \text{altura} + 0.349181 \cdot \text{peso} + \varepsilon_i \]

Verificación de supuestos

Linealidad

plot(IMC ~ altura, data = datos, main = "IMC vs Altura", xlab = "Altura", ylab = "IMC")
abline(lm(IMC ~ altura, data = datos), col = "blue", lwd = 2)

plot(IMC ~ peso, data = datos, main = "IMC vs Peso", xlab = "Peso", ylab = "IMC")
abline(lm(IMC ~ peso, data = datos), col = "blue", lwd = 2)

pairs(datos[, c("altura", "IMC", "peso")])

En el gráfico de dispersión entre IMC y altura, se observó una relación negativa, con una notable dispersión de los puntos alrededor de la tendencia. Esta dispersión sugiere cierta variabilidad en la relación, pero en general se aprecia una dirección descendente coherente con el coeficiente negativo obtenido en el modelo.

En el gráfico de IMC vs peso, se evidenció una relación positiva, también con dispersión en los puntos, aunque menos pronunciada que en el caso anterior. La tendencia creciente es clara y consistente con el coeficiente positivo estimado en el modelo de regresión, lo cual respalda la existencia de una relación lineal entre el IMC y el peso.

En cuanto al gráfico de pares, se confirmó visualmente que:

  • La relación entre IMC y altura es negativa.

  • La relación entre IMC y peso es positiva.

  • La relación entre altura y peso no muestra una tendencia clara, ya que los puntos se encuentran dispersos de forma aleatoria.

Independencia

cor(datos[, c("IMC", "altura", "peso")])
##               IMC      altura       peso
## IMC     1.0000000 -0.51163211 0.80303751
## altura -0.5116321  1.00000000 0.06493845
## peso    0.8030375  0.06493845 1.00000000
# Correlación entre altura y peso.
cor(datos$altura, datos$peso)
## [1] 0.06493845
  • Existe una correlación moderada y negativa entre IMC y altura.

  • Hay una correlación fuerte y positiva entre IMC y peso, lo cual es esperable, ya que el IMC se calcula en función del peso.

  • La correlación entre altura y peso es baja (r ≈ 0.065), lo que descarta la presencia de multicolinealidad significativa entre las variables independientes.

Por lo tanto, no se detecta colinealidad preocupante entre las variables predictoras, lo cual refuerza la estabilidad del modelo.

Normalidad

residuos <- residuals(modelo)

# Histograma de los residuos
hist(residuos, main = "Histograma de los residuos", xlab = "Residuos", col = "skyblue", breaks = 20)

# Gráfico Q-Q (Quantile-Quantile)
qqnorm(residuos)
qqline(residuos, col = "red")

  • Histograma de residuos: El histograma muestra una forma aproximadamente simétrica, aunque con una leve asimetría positiva (cola más larga hacia la derecha), lo que indica que algunos residuos tienden a ser más grandes en valor absoluto que otros.

  • Gráfico Q-Q (Quantile-Quantile): En este gráfico, la mayoría de los puntos siguen la línea recta roja (que representa la distribución normal esperada), pero se observa una desviación en los extremos, especialmente en la parte superior derecha, lo que sugiere colas más pesadas de lo que sería típico en una distribución normal.

shapiro.test(residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.89319, p-value = 9.459e-11

Aunque la prueba de Shapiro indica una desviación significativa de la normalidad, los gráficos muestran que la mayoría de los residuos están razonablemente alineados con la distribución normal, salvo algunas desviaciones en los extremos.

Por tanto, aunque el supuesto de normalidad no se cumple estrictamente, la distribución de los residuos es lo suficientemente cercana a la normal como para que el modelo siga siendo útil en términos prácticos, especialmente dado que el tamaño de la muestra es grande (con una muestra más grande, el modelo tiende a aumentar su sensibilidad a las desviaciones).

Homocedasticidad

residuos <- residuals(modelo)
valores_ajustados <- fitted(modelo)

# Gráfico
plot(valores_ajustados, residuos,
     main = "Residuos vs Valores Ajustados",
     xlab = "Valores Ajustados",
     ylab = "Residuos",
     pch = 20,
     col = "blue")
abline(h = 0, col = "red", lwd = 2)

Para verificar el supuesto de homocedasticidad, se examinó el gráfico de residuos versus los valores ajustados del modelo. Sin embargo, en este caso, los puntos muestran una tendencia a seguir una forma curva, lo que indica que los residuos no están distribuidos de forma aleatoria. Este patrón sugiere la presencia de heterocedasticidad, es decir, que la varianza de los errores no es constante a lo largo del rango de los valores predichos.

Este hallazgo viola el supuesto de homocedasticidad del modelo de regresión lineal, lo que podría afectar la validez de las inferencias estadísticas realizadas (como los intervalos de confianza y los tests de significancia).

Gráfico del modelo

datos.limpios <- datos[is.finite(datos$altura) & is.finite(datos$peso), ]

plotting.data <- expand.grid(
  altura = seq(min(datos.limpios$altura), max(datos.limpios$altura), length.out = 30),
  peso = c(min(datos.limpios$peso), mean(datos.limpios$peso), max(datos.limpios$peso))
)

plotting.data$predicted.IMC <- predict.lm(modelo, newdata = plotting.data)

plotting.data$peso <- round(plotting.data$peso, digits = 2)
plotting.data$peso <- as.factor(plotting.data$peso)

IMC.plot <- ggplot(datos.limpios, aes(x = altura, y = IMC)) +
  geom_point()

IMC.plot <- IMC.plot +
  geom_line(data = plotting.data, aes(x = altura, y = predicted.IMC, color = peso), linewidth = 1.25)

IMC.plot <- IMC.plot +
  theme_bw() +
  labs(
    title = "Índice de Masa Corporal (IMC) en función de la altura\ny el peso",
    x = "Altura (cm)",
    y = "IMC",
    color = "Peso (kg)"
  )

# Mostrar el gráfico con la fórmula del modelo
IMC.plot + annotate(geom = "text", x = 170, y = 1.75, label = "IMC = 74.81 - (0.44*altura) + (0.35*peso)")

ANOVA

Normalidad ANOVA

residuos <- resid(modelo)

# Prueba de Lilliefors para normalidad de los residuos
lillie.test(residuos)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  residuos
## D = 0.11217, p-value = 2.026e-06

Se aplicó la prueba de normalidad de Lilliefors a los residuos del modelo de regresión. El valor p obtenido fue 2.026e-06, lo que indica que existe suficiente evidencia estadística para rechazar la hipótesis nula de normalidad.

Por lo tanto, se concluye que los residuos no se distribuyen normalmente, lo cual constituye una violación del supuesto de normalidad del modelo de regresión lineal múltiple.

Homocedasticidad ANOVA

bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 12.308, df = 2, p-value = 0.002125

Dado que el p-valor es menor al nivel de significancia de 0.05, se rechaza la hipótesis nula de homocedasticidad, lo que indica que existe evidencia estadística de heterocedasticidad en el modelo.

anova(modelo)
## Analysis of Variance Table
## 
## Response: IMC
##            Df  Sum Sq Mean Sq F value    Pr(>F)    
## altura      1  8813.7  8813.7  1435.0 < 2.2e-16 ***
## peso        1 23646.3 23646.3  3849.9 < 2.2e-16 ***
## Residuals 197  1210.0     6.1                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(modelo)

La variable peso presenta un valor de F = 3849.9 y altura un valor de F = 1435.0, ambos con un valor p < 2.2e-16, lo que indica que las dos variables explican de manera significativa la variabilidad del IMC en la muestra analizada.

La suma de cuadrados residual (1210.0) es considerablemente menor que la suma de cuadrados explicada por las variables (8813.7 para altura y 23646.3 para peso), lo cual sugiere que el modelo captura una gran proporción de la variabilidad total del IMC. Esto también se alinea con el alto R² obtenido previamente (96.4%), indicando un excelente ajuste del modelo.

Conclusiones

El presente análisis tuvo como objetivo explorar la relación entre el índice de masa corporal (IMC) y dos variables predictoras: altura y peso. Tras aplicar un modelo de regresión lineal múltiple, se encontró que tanto la altura como el peso son variables significativamente asociadas al IMC (p < 0.001). En particular, el peso mostró una relación positiva con el IMC, mientras que la altura presentó una relación negativa. El modelo explicó aproximadamente el 96.4% de la variabilidad del IMC (R² ajustado = 0.9637), lo que indica un excelente poder explicativo.

Respecto a la verificación de los supuestos del modelo:

Asimismo, el análisis de varianza (ANOVA) realizado sobre el modelo confirmó la significancia estadística de ambas variables independientes —altura y peso— en la explicación del IMC. Los resultados mostraron valores de p menores a 0.001 para ambas variables, lo cual indica que cada una aporta de forma significativa al modelo. En particular, el peso presentó una mayor contribución explicativa que la altura, reflejada en un valor F más elevado.

Cabe destacar que la base de datos utilizada presenta ciertas inconsistencias intencionales, como valores atípicos y desequilibrios entre las variables, lo cual fue señalado en la descripción original del conjunto de datos. Estos aspectos fueron diseñados para dificultar la construcción de un modelo predictivo exacto, con fines académicos. Por esta razón, algunas desviaciones en el cumplimiento de los supuestos del modelo, como la homocedasticidad, pueden atribuirse directamente a la naturaleza artificial y desbalanceada del conjunto de datos, más que a errores en el análisis realizado.

En conclusión, aunque el modelo presenta un alto grado de ajuste y significancia estadística de las variables independientes, algunas violaciones a los supuestos (particularmente la homocedasticidad) sugieren que podría ser necesario considerar transformaciones, modelos alternativos o métodos robustos para asegurar la validez de los resultados inferenciales.