Desarrollo

Punto 5

Un investigador quiere evaluar el efecto de 4 suplementos diet´eticos diferentes sobre el rendimiento cognitivo (medido en una escala estandarizada). Se reclutaron 50 participantes, y cada uno recibi´o los 4 suplementos en orden aleatorio, con periodos de lavado de 4 semanas entre ellos. Los suplementos son:

  • S1: Placebo

  • S2: Omega-3

  • S3: Vitaminas B

  • S4: Combinacion Omega-3 + Vitaminas B

Los datos se encuentran en el archivo suplementos.xlsx.

#Cargar datos
setwd("C:/Users/prestamour/Downloads")
library(readxl)
library(MVN)
library(Hotelling)

data = read_excel("suplementos.xlsx")

a) Prueba si existe normalidad multivariada

Prueba de normalidad multivariada

H0: Los datos provienen de una distribución normal multivariada

H1: Los datos no provienen de una distribución normal multivariada

# Asegúrese de tener el paquete "MVN" instalado
# install.packages("MVN")
library(MVN)
library(dplyr)
library(readxl)

# Cargar los datos (cambie la ruta si es necesario)
suplementos <- read_excel("suplementos.xlsx")

# Suponiendo que las columnas de los datos son S1, S2, S3, S4
# del data.frame "suplementos"
data_suplementos <- suplementos %>% select(S1, S2, S3, S4)

# Prueba de normalidad multivariada
# H0: Los datos provienen de una distribución normal multivariada
# H1: Los datos no provienen de una distribución normal multivariada
# La función mvn() realiza varias pruebas, incluyendo la de Mardia.
resultado_mardia <- mvn(data = data_suplementos, mvn_test = "mardia")
resultado_mardia
## $multivariate_normality
##              Test Statistic p.value     Method      MVN
## 1 Mardia Skewness    24.096   0.238 asymptotic ✓ Normal
## 2 Mardia Kurtosis    -0.922   0.356 asymptotic ✓ Normal
## 
## $univariate_normality
##               Test Variable Statistic p.value Normality
## 1 Anderson-Darling       S1     0.310   0.543  ✓ Normal
## 2 Anderson-Darling       S2     0.640   0.090  ✓ Normal
## 3 Anderson-Darling       S3     0.381   0.389  ✓ Normal
## 4 Anderson-Darling       S4     0.194   0.888  ✓ Normal
## 
## $descriptives
##   Variable  n    Mean Std.Dev  Median    Min     Max   25th    75th   Skew
## 1       S1 50  99.306   4.542 100.096 87.727 107.452 95.855 102.216 -0.236
## 2       S2 50 100.374   5.052 100.346 88.362 108.814 96.514 104.588 -0.015
## 3       S3 50  99.469   4.839  99.204 88.496 108.605 96.393 103.005 -0.147
## 4       S4 50 100.180   4.689 100.496 90.658 110.944 96.985 102.731  0.224
##   Kurtosis
## 1    2.511
## 2    2.124
## 3    2.367
## 4    2.702
## 
## $data
## # A tibble: 50 × 4
##       S1    S2    S3    S4
##    <dbl> <dbl> <dbl> <dbl>
##  1 100.  105.  103.  103. 
##  2 101.  102.  102.   99.4
##  3  92.4  93.4  93.9  92.7
##  4 101.  102.   94.9 101. 
##  5  97.2  99.3  99.7 101. 
##  6  93.6  95.2  88.5  92.1
##  7  94.8  95.7 103.   98.9
##  8 102.  108.  103.  109. 
##  9 101.  105.  104.  102. 
## 10 105.  101.  101.  101. 
## # ℹ 40 more rows
## 
## $subset
## NULL
## 
## $outlierMethod
## [1] "none"
## 
## attr(,"class")
## [1] "mvn"

b) Las hipotesis de investigacion son:

  • ¿Los suplementos S2, S3, S4 son mejores que el placebo S1?

  • ¿El suplemento combinado (S4) es mejor que el promedio de los suplementos individuales (S2 y S3)?

  • ¿Existe diferencia entre los suplementos individuales (S2 vs S3)? Defina las hipótesis y la matriz de contrastes.

Definición de las hipótesis

H0_1: mu_S1 = mu_S2, mu_S1 = mu_S3, mu_S1 = mu_S4

Se puede reformular como un solo contraste:

H0_1: mu_S2 - mu_S1 = 0, mu_S3 - mu_S1 = 0, mu_S4 - mu_S1 = 0

H0_2: mu_S4 = (mu_S2 + mu_S3) / 2 => 2*mu_S4 - mu_S2 - mu_S3 = 0

H0_3: mu_S2 = mu_S3 => mu_S2 - mu_S3 = 0

# Definición de las hipótesis y la matriz de contrastes
# Matriz de contrastes C
C <- matrix(c(
-1, 1, 0, 0, # Contraste 1: S2 vs S1
-1, 0, 1, 0, # Contraste 2: S3 vs S1
-1, 0, 0, 1, # Contraste 3: S4 vs S1
0, -1, -1, 2, # Contraste 4: S4 vs (S2+S3)/2
0, 1, -1, 0 # Contraste 5: S2 vs S3
), ncol = 4, byrow = TRUE)

# Nombrar las columnas para mayor claridad
colnames(C) <- c("S1", "S2", "S3", "S4")
print(C)
##      S1 S2 S3 S4
## [1,] -1  1  0  0
## [2,] -1  0  1  0
## [3,] -1  0  0  1
## [4,]  0 -1 -1  2
## [5,]  0  1 -1  0

c) Use el marco teórico de medidas repetidas y la estadıstica T2 de para contrastar las hipótesis, a un nivel de significancia de 0.01.

# Contraste de las hipótesis con la estadística T2 de Hotelling.
# Asegúrese de tener el paquete "Hotelling" instalado
# install.packages("Hotelling")
library(Hotelling)

# Extraer el vector de medias y la matriz de covarianza
# de los datos de los suplementos
x_bar <- colMeans(data_suplementos)
S <- cov(data_suplementos)
n <- nrow(data_suplementos)

# Contraste de las hipótesis (S2, S3, S4 vs S1)
# Se crea la matriz C para este contraste específico
C1 <- matrix(c(
-1, 1, 0, 0,
-1, 0, 1, 0,
-1, 0, 0, 1
), ncol = 4, byrow = TRUE)
contrast_S1 <- C1 %*% x_bar
var_contrast_S1 <- C1 %*% S %*% t(C1)
T2_S1 <- n * t(contrast_S1) %*% solve(var_contrast_S1) %*% contrast_S1
cat("Estadística T^2 para los suplementos vs placebo:", T2_S1, "\n")
## Estadística T^2 para los suplementos vs placebo: 4.068868
# Contraste de la hipótesis (S4 vs promedio de S2 y S3)
C2 <- matrix(c(
0, -1, -1, 2
), ncol = 4, byrow = TRUE)
contrast_S2 <- C2 %*% x_bar
var_contrast_S2 <- C2 %*% S %*% t(C2)
T2_S2 <- n * t(contrast_S2) %*% solve(var_contrast_S2) %*% contrast_S2
cat("Estadística T^2 para S4 vs (S2+S3)/2:", T2_S2, "\n")
## Estadística T^2 para S4 vs (S2+S3)/2: 0.3562682
# Contraste de la hipótesis (S2 vs S3)
C3 <- matrix(c(
0, 1, -1, 0
), ncol = 4, byrow = TRUE)
contrast_S3 <- C3 %*% x_bar
var_contrast_S3 <- C3 %*% S %*% t(C3)
T2_S3 <- n * t(contrast_S3) %*% solve(var_contrast_S3) %*% contrast_S3
cat("Estadística T^2 para S2 vs S3:", T2_S3, "\n")
## Estadística T^2 para S2 vs S3: 1.972374
# P-valor para cada prueba (con Hotelling's T^2)
# El p-valor se calcula a partir de la distribución F.
# Para la primera hipótesis (p = 3, n = 50)
p_S1 <- 3
F_S1 <- (n - p_S1) / ((n - 1) * p_S1) * T2_S1
p_value_S1 <- 1 - pf(F_S1, p_S1, n - p_S1)
cat("P-valor para suplementos vs placebo:", p_value_S1, "\n")
## P-valor para suplementos vs placebo: 0.2852303
# Para la segunda hipótesis (p = 1, n = 50)
p_S2 <- 1
F_S2 <- (n - p_S2) / ((n - 1) * p_S2) * T2_S2
p_value_S2 <- 1 - pf(F_S2, p_S2, n - p_S2)
cat("P-valor para S4 vs (S2+S3)/2:", p_value_S2, "\n")
## P-valor para S4 vs (S2+S3)/2: 0.5533342
# Para la tercera hipótesis (p = 1, n = 50)
p_S3 <- 1
F_S3 <- (n - p_S3) / ((n - 1) * p_S3) * T2_S3
p_value_S3 <- 1 - pf(F_S3, p_S3, n - p_S3)
cat("P-valor para S2 vs S3:", p_value_S3, "\n")
## P-valor para S2 vs S3: 0.1665034

Conclusiones finales:

  • Hipótesis 1 (Suplementos vs placebo)

    • H₀₁: No hay diferencia entre S2, S3, S4 y el placebo S1

    • T² = 4.068868, p = 0.2852 (> 0.05).
      Conclusión: No hay evidencia estadísticamente significativa para afirmar que los suplementos S2, S3 o S4 mejoren el rendimiento frente al placebo.

  • Hipótesis 2 (Suplemento combinado vs promedio de S2 y S3)

    • H₀₂: El suplemento combinado S4 es igual al promedio de S2 y S3.

    • T² = 0.3563, p = 0.5533 (> 0.05).
      Conclusión: No existe evidencia estadística de que el suplemento combinado (S4) sea mejor que el promedio de los suplementos individuales (S2 y S3).

  • Hipótesis 3 (Comparación entre S2 y S3)

    • H₀₃: No hay diferencia entre S2 y S3.

    • T² = 1.9724, p = 0.1665 (> 0.05).
      Conclusión: No se encuentra diferencia estadísticamente significativa entre los suplementos individuales S2 y S3.

Punto 7

Un investigador educativo quiere evaluar el efecto de 3 metodos de ensenanza diferentes en el rendimiento academico de estudiantes. Se miden dos variables de resultado: Matematicas: Puntuacion en examen de matem´aticas (0-100) Lectura: Puntuacion en examen de lectura (0-100) Se asignaron aleatoriamente 45 estudiantes a 3 grupos (15 por grupo)

  • Grupo 1: Metodo tradicional

  • Grupo 2: Metodo interactivo

  • Grupo 3: Metodo digital Use un nivel de significancia de 0.05 y,

#Cargar datos
setwd("C:/Users/prestamour/Downloads")
library(readxl)
library(MVN)

df = read_excel("puntuacion.xlsx")
# Instalar paquetes si hacen falta (solo la primera vez)
pkgs <- c("readxl","tidyverse","MVN","car","heplots","rstatix","emmeans")
install_if_missing <- function(p) if (!requireNamespace(p, quietly = TRUE)) install.packages(p)
invisible(lapply(pkgs, install_if_missing))

# Cargar librerías
library(readxl)
library(tidyverse)
library(MVN)       # Mardia
library(car)       # Levene
library(heplots)   # boxM
library(rstatix)   # utilidades
library(emmeans)   # post-hoc con ajuste Tukey

# limpiar nombres (por si hay espacios)
names(df) <- trimws(names(df))

# Asegurarse de tipos
df$Grupo <- factor(df$Grupo)          # Grupo como factor (3 niveles: 1,2,3)
df$Matematicas <- as.numeric(df$Matematicas)
df$Lectura <- as.numeric(df$Lectura)

# Resumen y conteo por grupo
cat("Dimensiones:", dim(df), "\n")
## Dimensiones: 45 3
print(table(df$Grupo))
## 
##  1  2  3 
## 15 15 15
print(df %>% group_by(Grupo) %>% summarise(
  n = n(),
  mean_Mat = mean(Matematicas, na.rm=TRUE),
  sd_Mat = sd(Matematicas, na.rm=TRUE),
  mean_Lec = mean(Lectura, na.rm=TRUE),
  sd_Lec = sd(Lectura, na.rm=TRUE)
))
## # A tibble: 3 × 6
##   Grupo     n mean_Mat sd_Mat mean_Lec sd_Lec
##   <fct> <int>    <dbl>  <dbl>    <dbl>  <dbl>
## 1 1        15     72.5  10.7      65.3   6.83
## 2 2        15     87.4   9.07     82.9   8.04
## 3 3        15     78.0  10.2      74.6   9.43

a) Pruebe normalidad univariada y multivariada por grupo

shapiro_by <- df %>%
  pivot_longer(cols = c(Matematicas, Lectura), names_to = "Variable", values_to = "Valor") %>%
  group_by(Grupo, Variable) %>%
  summarise(W = shapiro.test(Valor)$statistic,
            p_value = shapiro.test(Valor)$p.value) %>%
  ungroup()

cat("\nShapiro-Wilk por grupo y variable:\n")
## 
## Shapiro-Wilk por grupo y variable:
print(shapiro_by)
## # A tibble: 6 × 4
##   Grupo Variable        W p_value
##   <fct> <chr>       <dbl>   <dbl>
## 1 1     Lectura     0.927   0.248
## 2 1     Matematicas 0.920   0.195
## 3 2     Lectura     0.968   0.832
## 4 2     Matematicas 0.943   0.425
## 5 3     Lectura     0.965   0.786
## 6 3     Matematicas 0.955   0.614

b) Realice un analisis de varianza univariado

datos = read_excel("puntuacion.xlsx")
anova_math <- aov(Matematicas ~ Grupo, data = datos)
anova_read <- aov(Lectura ~ Grupo, data = datos)

summary(anova_math)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Grupo        2   1701   850.5   8.478 0.000807 ***
## Residuals   42   4213   100.3                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(anova_read)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Grupo        2   2341  1170.4   17.55 2.89e-06 ***
## Residuals   42   2802    66.7                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

c) Realice un analisis de varianza multivariado

modelo_manova <- manova(cbind(Matematicas, Lectura) ~ Grupo, data = datos)
summary(modelo_manova, test = "Wilks")
##           Df   Wilks approx F num Df den Df    Pr(>F)    
## Grupo      2 0.53228   7.5985      4     82 2.939e-05 ***
## Residuals 42                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

d) Analisis pos hoc TukeyHSD

TukeyHSD(anova_math)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Matematicas ~ Grupo, data = datos)
## 
## $Grupo
##          diff        lwr        upr     p adj
## 2-1 14.900859   6.015805 23.7859126 0.0005765
## 3-1  5.561995  -3.323059 14.4470486 0.2916025
## 3-2 -9.338864 -18.223918 -0.4538103 0.0374955
TukeyHSD(anova_read)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = Lectura ~ Grupo, data = datos)
## 
## $Grupo
##          diff        lwr       upr     p adj
## 2-1 17.655507  10.409781 24.901233 0.0000015
## 3-1  9.373640   2.127914 16.619366 0.0084361
## 3-2 -8.281867 -15.527593 -1.036141 0.0218027