Ejercicio 1:

En un estudio poblacional de corte transversal se evaluaron medidas antopométricas y niveles de presión arterial sistólica en una muestra representativ. De acuerdo al índice de masa corporal se definieron tres grupos de adiposidad así:

Normal (< 25 kg/m^2)

Sobrepeso (25 - 29.9 kg/m^2)

Obesidad (>= 30 kg/m^2)

Los datos de dicho estudio se presentan en la tabla a continuación (los valores en las celdas correspondientes a la presión arterial sistólica de los individuos):

individuo <- c(1,2,3,4,5)
normal <- c(120,110,115,110,125)
sobrepeso <- c(115,130,135,125,120)
obesidad <- c(130,125,140,135,130)

tabla_salud <- data.frame(normal, sobrepeso, obesidad)
print(tabla_salud)
##   normal sobrepeso obesidad
## 1    120       115      130
## 2    110       130      125
## 3    115       135      140
## 4    110       125      135
## 5    125       120      130

Análisis Exploratorio de los Datos (EDA)

Grupo con índice de masa corporal normal (< 25 kg/m^2):

summary(normal)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     110     110     115     116     120     125

Grupo con índice de masa corporal en sobrepeso (25 - 29.9 kg/m^2):

summary(sobrepeso)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     115     120     125     125     130     135

Grupo con índice de masa corporal normal (>= 30 kg/m^2):

summary(obesidad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     125     130     130     132     135     140

Diagrama de cajas y bigotes:

# Creamos un vector con todos los datos:
medias <- c(mean(normal), mean(sobrepeso), mean(obesidad))
pesos <- c(normal, sobrepeso, obesidad)
grupo <- c(rep("Normal", 5), rep("Sobrepeso", 5), rep("Obesidad", 5))
grupo <- factor(grupo, levels = c("Normal", "Sobrepeso", "Obesidad"))

# Dibujamos el diagrama de cajas:
boxplot(pesos~grupo,
        col = c("lightblue", "lightgreen", "orange"),
        main = "Presión por Grupo de Peso")

# Dibujamos las medias en cada caja:
points(1:3, medias, pch = 19, col = "red", cex = 1.2)

Podemos ver que no hay una superposición clara entre las cajas de cada grupo, lo que nos puede dar un indicio de diferencia de medias. No hay presencia de valores atípicos en ninguno de los tres grupos de datos.

El grupo de “Sobrepeso” tiene una menor variabilidad en sus datos que los grupos de “Normal” y “Obesidad”, los cuáles presentan una variabilidad en sus datos similar. Los grupos “Normal” y “Obesidad” tienen una leve asímetria positiva en sus datos, estando sus medias de 1 a 2 puntos por encima de la mediana. Por otro lado, el grupo “Sobrepeso” tiene una distribución completamente simétrica con su media y mediana iguales.

Análisis de Supuestos:

Prueba de normalidad con Shapiro-Wilk:

# ANÁLISIS DE SUPUESTOS
# Pruebas de normalidad:
shapiro.test(normal)
## 
##  Shapiro-Wilk normality test
## 
## data:  normal
## W = 0.90202, p-value = 0.4211
shapiro.test(sobrepeso)
## 
##  Shapiro-Wilk normality test
## 
## data:  sobrepeso
## W = 0.98676, p-value = 0.9672
shapiro.test(obesidad)
## 
##  Shapiro-Wilk normality test
## 
## data:  obesidad
## W = 0.96086, p-value = 0.814

Como podemos ver, el p-value de la spruebas de cada grupo fueron mayores a 0.05. Por lo tanto, todos los grupos presentan una distribución normal y podemos utilizar ANOVA para probar la diferencia de medias entre los grupos.

Prueba de igualdad de varianzas con Test de Levenne:

# Prueba de igualdad de varianzas:
library(car)
## Loading required package: carData
leveneTest(pesos, grupo)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  2  0.3158 0.7351
##       12

El p-value > 0.05, por tanto los grupos presentan igualdad en sus varianzas y ésta no tiene un impacto significativo en nuestra prueba de ANOVA.

ANOVA:

# CONSTRUCCIÓN DE LA TABLA ANOVA
# Calculamos las sumatorias:
k <- 3
n <- 5
N <- n*3
X <- sum(mean(normal), mean(sobrepeso), mean(obesidad))
T1 <- sum(normal)
T2 <- sum(sobrepeso)
T3 <- sum(obesidad)
Ttotal <- sum(T1, T2, T3)

# SSA:
v1 <- c((T1^2/n), (T2^2/n), (T3^2/n))
ssa <- sum(v1) - (Ttotal^2/N)
print(ssa)
## [1] 643.3333
# SSE:
sse <- 0
for (i in 1:k) {
  suma_interna <- 0
  for (j in 1:n) {
    indice <- (i - 1) * n + j
    v <- (pesos[indice] - medias[i])^2
    suma_interna = suma_interna + v
  }
  sse <- sse + suma_interna
}
print(sse)
## [1] 550
# SST:
sst <- ssa + sse
print(sst)
## [1] 1193.333
# MSA:
MSA <- ssa/(k-1)
print(MSA)
## [1] 321.6667
# MSE:
MSE <- sse/(N-k)
print(MSE)
## [1] 45.83333
# Razon F:
razon_F <- MSA/MSE
print(razon_F)
## [1] 7.018182
# Cálculo de ANOVA computacionalmente:
anova <- aov(pesos~grupo)
summary(anova)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## grupo        2  643.3   321.7   7.018 0.00959 **
## Residuals   12  550.0    45.8                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como podemos evidenciar, tanto en el método manual como en el computacional, p-value = 7.018. Entonces, p-value > 0.05 y por tanto no se rechaza la hipótesis nula, lo que implica que no existe diferencia entre las medidas antropométricas y los niveles de presión arterial medios entre los grupos con índices de masa corporal “Normal”, “Sobrepeso” y “Obesidad”.

Tabla de ANOVA:

fuente_variacion <- c("Entre", "Intra", "Total")
suma_cuadrados <- c("SSA = 643.3333", "SSE = 550", "SST = 1193.333")
grados_libertad <- c("k-1 = 2", "N-k = 12", "N-1 = 14")
cuadrado_medio <- c("MSA = 321.6667", "MSE = 45.83333", 0)
razon_f <- c("Razón F = 7.018", 0, 0)
p_value <- c("P-value = 7.018", 0, 0)

tabla_anova <- data.frame(fuente_variacion, suma_cuadrados, grados_libertad, cuadrado_medio, razon_f, p_value)

library(knitr)
kable(tabla_anova, 
      col.names = c("Fuente de variación", "Suma de cuadrados", "gl", "Media de cuadrados", "F", "P"),
      align = "c") 
Fuente de variación Suma de cuadrados gl Media de cuadrados F P
Entre SSA = 643.3333 k-1 = 2 MSA = 321.6667 Razón F = 7.018 P-value = 7.018
Intra SSE = 550 N-k = 12 MSE = 45.83333 0 0
Total SST = 1193.333 N-1 = 14 0 0 0

Ahora, los investigadores del mismo estudio consideraron la posibilidad que los niveles de presión arterial podrían ser influenciados por el nivel de actividad física. Por tal razón, aplicaron el IPAQ (International Physical Activity Questionnaire) con base en sus resultados clasificaron a cada uno de los participantes como sedentarios o no sedentarios.

Los datos se ven a continuación:

normal_s <- c(110, 105, 115, 110, 120)