title: “Ejercicio 6.19 - Transporte de Leche” author: “Análisis Multivariado” date: “2025-08-27” output: html_document —

Planteamiento

En la primera fase de un estudio sobre el costo de transporte de leche desde las granjas hasta las plantas, se recopilaron datos de costos para dos tipos de camiones: gasolina (n₁ = 36) y diésel (n₂ = 23).
Las variables consideradas son:
- X₁ = Fuel (combustible)
- X₂ = Repair (mantenimiento)
- X₃ = Capital (capital)

Se busca probar si los vectores de medias difieren entre los dos tipos de camiones y analizar qué componentes son responsables.


Lectura de Datos

# Cargar librerías necesarias
library(Hotelling)
library(MASS)

# Leer los datos
data <- read.table("T6-10.dat", header = FALSE)
colnames(data) <- c("Fuel", "Repair", "Capital", "Group")

# Convertir grupo a factor
data$Group <- factor(data$Group, labels = c("Gasoline", "Diesel"))

# Verificar estructura
summary(data)
##       Fuel           Repair          Capital           Group   
##  Min.   : 4.24   Min.   : 1.350   Min.   : 3.28   Gasoline:23  
##  1st Qu.: 9.12   1st Qu.: 5.145   1st Qu.: 8.15   Diesel  :36  
##  Median :10.28   Median : 8.890   Median :11.23                
##  Mean   :11.39   Mean   : 9.145   Mean   :12.93                
##  3rd Qu.:12.70   3rd Qu.:12.575   3rd Qu.:17.00                
##  Max.   :29.11   Max.   :21.520   Max.   :35.18
table(data$Group)
## 
## Gasoline   Diesel 
##       23       36
# Prueba Hotelling T²
res <- hotelling.test(cbind(Fuel, Repair, Capital) ~ Group, data = data)
res
## Test stat:  50.913 
## Numerator df:  3 
## Denominator df:  55 
## P-value:  1e-07
#(b) Combinación lineal responsable de la diferencia

# Separar grupos
X1 <- subset(data, Group == "Gasoline")[,1:3]
X2 <- subset(data, Group == "Diesel")[,1:3]

# Medias
mean1 <- colMeans(X1)
mean2 <- colMeans(X2)
diff <- mean1 - mean2

# Covarianzas
S1 <- cov(X1); S2 <- cov(X2)
n1 <- nrow(X1); n2 <- nrow(X2)

# Covarianza agrupada (pooled)
Spooled <- ((n1-1)*S1 + (n2-1)*S2)/(n1+n2-2)

# Vector discriminante
lin_comb <- ginv(Spooled) %*% diff
lin_comb
##            [,1]
## [1,] -0.2547452
## [2,]  0.1339036
## [3,]  0.3188296
#El vector discriminante indica qué combinación de costos explica mayormente la diferencia entre grupos.

#(c) Intervalos de Confianza Simultáneos (99%)

# Intervalos Bonferroni
alpha <- 0.01
p <- 3
gmean <- diff
Sp <- Spooled*(1/n1 + 1/n2)

bonf_int <- function(j){
  error <- qt(1-alpha/(2*p), df=n1+n2-2)*sqrt(Sp[j,j])
  c(gmean[j]-error, gmean[j]+error)
}

intervalos <- sapply(1:3, bonf_int)
rownames(intervalos) <- c("LI", "LS")
colnames(intervalos) <- colnames(X1)
intervalos
##         Fuel    Repair   Capital
## LI -5.365502 -1.076004  4.360802
## LS  1.139584  6.375352 12.794295
#d) Eliminando outliers (obs. 9 y 21 en gasolina)

# Eliminar observaciones 9 y 21 de gasolina
X1_sin <- X1[-c(9,21),]
data_sin <- rbind(
  cbind(X1_sin, Group="Gasoline"),
  cbind(X2, Group="Diesel")
)

data_sin <- as.data.frame(data_sin)
data_sin$Group <- factor(data_sin$Group)

# Nueva prueba Hotelling T²
res_sin <- hotelling.test(cbind(Fuel,Repair,Capital) ~ Group, data=data_sin)
res_sin
## Test stat:  49.252 
## Numerator df:  3 
## Denominator df:  53 
## P-value:  1.804e-07