PUNTO 3
Una empresa farmaceutica ha realizado un estudio con n = 30 empleados que han consumido un nuevo suplemento durante 6 meses. Para cada sujeto se registraron las siguientes variables: Universidad del Rosario 2 de 3 a) X1: Resistencia f´ısica (minutos). b) X2: Tiempo de reacci´on (ms). c) X3: Memoria a corto plazo (puntuacion)
Cargar datos
setwd("C:/Users/prestamour/Downloads")
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
library(MVN)
## Warning: package 'MVN' was built under R version 4.4.3
farmaceutica = read_excel("farmaceutica.xlsx")
a)
# ---- (a) Cargar datos y calcular media, n y matriz de covarianza ----
# Cambia la ruta según dónde tengas el archivo
datos <- read_excel("farmaceutica.xlsx")
n <- nrow(datos) # tamaño de muestra
media <- colMeans(datos) # vector de medias
S <- cov(datos) # matriz de covarianza
cat("n =", n, "\n")
## n = 30
cat("Media muestral:\n")
## Media muestral:
print(media)
## Resistencia Tiempo_Reaccion Memoria
## 35.65105 249.68097 80.45005
cat("Matriz de covarianza S:\n")
## Matriz de covarianza S:
print(S)
## Resistencia Tiempo_Reaccion Memoria
## Resistencia 13.277140 6.323688 9.47725
## Tiempo_Reaccion 6.323688 22.634125 10.48137
## Memoria 9.477250 10.481371 28.21304
b)
# ---- (b) Verificar simetría y valores propios ----
cat("¿Es es simetrica? :", all(S == t(S)), "\n")
## ¿Es es simetrica? : TRUE
valprop <- eigen(S)$values
cat("Valores propios de S:\n")
## Valores propios de S:
print(valprop)
## [1] 40.944273 14.656308 8.523729
c)
# ---- (c) Prueba de normalidad multivariada (Mardia) ----
# Ejecutar Mardia sin especificar mvnTest
mardia <- mvn(data = datos)
# Mostrar todo el resultado
print(mardia)
## $multivariate_normality
## Test Statistic p.value Method MVN
## 1 Henze-Zirkler 0.626 0.42 asymptotic ✓ Normal
##
## $univariate_normality
## Test Variable Statistic p.value Normality
## 1 Anderson-Darling Resistencia 0.241 0.753 ✓ Normal
## 2 Anderson-Darling Tiempo_Reaccion 0.402 0.337 ✓ Normal
## 3 Anderson-Darling Memoria 0.425 0.297 ✓ Normal
##
## $descriptives
## Variable n Mean Std.Dev Median Min Max 25th 75th
## 1 Resistencia 30 35.651 3.644 35.688 27.512 44.067 33.371 38.038
## 2 Tiempo_Reaccion 30 249.681 4.758 250.441 240.030 259.326 246.247 253.278
## 3 Memoria 30 80.450 5.312 81.821 68.369 89.909 76.794 84.476
## Skew Kurtosis
## 1 -0.068 3.158
## 2 -0.235 2.387
## 3 -0.424 2.446
##
## $data
## # A tibble: 30 × 3
## Resistencia Tiempo_Reaccion Memoria
## <dbl> <dbl> <dbl>
## 1 38.5 251. 82.0
## 2 33.5 252. 81.6
## 3 32.6 240. 76.4
## 4 34.5 246. 83.9
## 5 34.0 246. 83.7
## 6 33.3 240. 73.8
## 7 36.5 247. 78.1
## 8 38.1 256. 84.7
## 9 38.3 255. 79.8
## 10 40.5 255. 75.9
## # ℹ 20 more rows
##
## $subset
## NULL
##
## $outlierMethod
## [1] "none"
##
## attr(,"class")
## [1] "mvn"
d)
# ---- (d) Prueba T^2 de Hotelling ----
mu0 <- c(35, 250, 80) # vector bajo H0
d <- as.matrix(media - mu0) # diferencia
T2 <- n * t(d) %*% solve(S) %*% d # estadístico T^2
p <- ncol(datos)
Fstat <- ((n - p) / (p * (n - 1))) * T2 # conversión a F
gl1 <- p
gl2 <- n - p
pvalue <- 1 - pf(Fstat, df1 = gl1, df2 = gl2)
cat("T^2 =", T2, "\n")
## T^2 = 1.610505
cat("F =", Fstat, " con gl =", gl1, ",", gl2, "\n")
## F = 0.4998119 con gl = 3 , 27
cat("p-valor =", pvalue, "\n")
## p-valor = 0.6855578
# Valor crítico para comparación
Fcrit <- qf(1 - 0.05, df1 = gl1, df2 = gl2)
T2crit <- (p * (n - 1) / (n - p)) * Fcrit
cat("Valor critico F =", Fcrit, "\n")
## Valor critico F = 2.960351
cat("Valor critico T^2 =", T2crit, "\n")
## Valor critico T^2 = 9.53891