library(nortest)
library(summarytools)
library(BSDA)
library(inferr)
library(mvnormtest)
library(MVTests)
library(MVN)
library(tidyverse)
library(ggstatsplot)
library(effectsize)
library(car)
library(reshape2)
library(ggthemes)
library(ggpubr)
library(ICSNP)
library(heplots)
library(biotools)
library(ergm)
library(rrcov)
library(Hotelling)
library(echarts4r)
library(gganimate)
library(hrbrthemes)
library(png)
library(gifski)
contexto del problema:se busca comparar el rendimiento de vehículos pertenecientes a cinco marcas reconocidas del mercado automotriz: Toyota, Ford, Hyundai, Chevrolet y Volkswagen. Se evaluaron 350 autos en total, distribuidos equitativamente entre las marcas bajo un Diseño Completamente al Azar (DCA), lo que garantiza que cada unidad experimental fue asignada aleatoriamente sin influencia de factores externos. El objetivo es determinar si existen diferencias significativas entre las marcas en cuanto a múltiples características técnicas y económicas de los vehículos. Para ello, se aplicó un análisis MANOVA, que permite evaluar simultáneamente varias variables de respuesta.
Velocidad máxima: velocidad alcanzada por el vehículo → km/h
Consumo: rendimiento de combustible → km/l
Aceleración: tiempo de 0 a 100 km/h → segundos
Precio: valor comercial estimado → miles de dólares
Emisiones: dióxido de carbono emitido por kilómetro → g/km
Marca: fabricante del vehículo → sin unidad (categórica)
set.seed(123)
# Marcas y repeticiones
marcas <- rep(c("Toyota", "Ford", "Hyundai", "Chevrolet", "Volkswagen"), each = 70)
# Variables dependientes simuladas
velocidad <- rnorm(350, mean = rep(c(190, 200, 185, 195, 188), each = 70), sd = 10)
consumo <- rnorm(350, mean = rep(c(16, 14, 17, 15, 16.5), each = 70), sd = 1.5)
aceleracion <- rnorm(350, mean = rep(c(9.5, 8.8, 10.2, 9.3, 9.0), each = 70), sd = 0.6)
precio <- rnorm(350, mean = rep(c(30, 28, 25, 27, 29), each = 70), sd = 3)
emisiones <- rnorm(350, mean = rep(c(120, 130, 115, 125, 118), each = 70), sd = 10)
# Data frame final
autos <- data.frame(
Marca = marcas,
Velocidad_max = round(velocidad, 1),
Consumo = round(consumo, 2),
Aceleracion = round(aceleracion, 2),
Precio = round(precio, 1),
Emisiones = round(emisiones, 1)
)
Hipótesis de Shapiro-Wilk multivariado
H₀: Los datos provienen de una distribución normal multivariada.
H₁: Los datos NO provienen de una normal multivariada.
library(tidyverse)
toyota = autos %>% filter(Marca == "Toyota") %>%
dplyr::select(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones)
ford = autos %>% filter(Marca == "Ford") %>%
dplyr::select(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones)
hyundai = autos %>% filter(Marca == "Hyundai") %>%
dplyr::select(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones)
chevrolet = autos %>% filter(Marca == "Chevrolet") %>%
dplyr::select(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones)
volkswagen = autos %>% filter(Marca == "Volkswagen") %>%
dplyr::select(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones)
#Ejecutamos el test de normalidad multivariada
library(mvnormtest)
mshapiro.test(t(toyota))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.96508, p-value = 0.04803
mshapiro.test(t(ford))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.92552, p-value = 0.0004645
mshapiro.test(t(hyundai))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.94714, p-value = 0.005153
mshapiro.test(t(chevrolet))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.96199, p-value = 0.03229
mshapiro.test(t(volkswagen))
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.9522, p-value = 0.009468
conclusion:
Como en todas las marcas p < 0.05, rechazamos H₀. A un nivel de significación del 0.5%, existe suficiente evidencia estadística para afirmar que los datos no cumplen el supuesto de normalidad multivariada.
Sin embargo, debido a que contamos con un tamaño de muestra grande (n = 350, 70 por grupo), el Teorema Central del Límite (TCL) nos respalda: al aumentar el tamaño muestral.
H₀: Las matrices de varianzas-covarianzas son iguales entre los grupos (marcas).
H₁: Al menos una matriz de varianzas-covarianzas difiere entre los grupos.
En este caso se evaluaron 3 pruebas para evaluar este supuesto
# MANOVA con 5 respuestas: Velocidad, Consumo, Aceleración, Precio, Emisiones
res <- boxM(autos[, -1], autos$Marca)
res
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: autos[, -1]
## Chi-Sq (approx.) = 36.548, df = 60, p-value = 0.9928
summary(res)
## Summary for Box's M-test of Equality of Covariance Matrices
##
## Chi-Sq: 36.54757
## df: 60
## p-value: 0.9928
##
## log of Covariance determinants:
## Chevrolet Ford Hyundai Toyota Volkswagen
## 11.13877 10.72263 10.93171 10.75061 11.48488
##
## Eigenvalues:
## Chevrolet Ford Hyundai Toyota Volkswagen pooled
## 1 123.5055709 97.9369713 109.3741906 91.5285303 121.6573435 102.8216093
## 2 80.6349734 79.4242280 89.7329031 77.2978375 105.1141321 92.2590158
## 3 8.7326293 7.7449957 9.2115855 8.5522379 8.1838240 8.6009040
## 4 2.4113255 2.2995390 1.6776331 2.1567286 2.2290557 2.1821441
## 5 0.3280159 0.3275034 0.3687094 0.3575441 0.4168155 0.3772915
##
## Statistics based on eigenvalues:
## Chevrolet Ford Hyundai Toyota Volkswagen
## product 6.878691e+04 4.537090e+04 55921.925473 4.665829e+04 9.723453e+04
## sum 2.156125e+02 1.877332e+02 210.365022 1.798929e+02 2.376012e+02
## precision 2.779049e-01 2.747109e-01 0.290944 2.940041e-01 3.347068e-01
## max 1.235056e+02 9.793697e+01 109.374191 9.152853e+01 1.216573e+02
## pooled
## product 6.717346e+04
## sum 2.062410e+02
## precision 3.081126e-01
## max 1.028216e+02
Conclsuion:Como el p-valor=0.9928 > 0.05, no se rechaza H, xiste suficiente evidencia estadística para afirmar que se cumple el supuesto de homogeneidad de las matrices de varianzas-covarianzas entre las cinco marcas de vehículos.
library(biotools)
boxM(autos[, -1], autos[, 1])
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: autos[, -1]
## Chi-Sq (approx.) = 36.548, df = 60, p-value = 0.9928
Con la anterior pureba tambien cumple el supuestro de homogeneidad de varianzas.
Y con esta prueba de WRAPER
library(DFA.CANCOR)
HOMOGENEITY(data = autos,
groups = 'Marca',
variables = c('Velocidad_max','Consumo','Aceleracion','Precio','Emisiones'))
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 84.58 -0.17 -0.04 -3.02 -12.56
## Consumo -0.17 2.42 -0.37 0.31 2.53
## Aceleracion -0.04 -0.37 0.40 -0.01 -1.20
## Precio -3.02 0.31 -0.01 8.84 0.27
## Emisiones -12.56 2.53 -1.20 0.27 119.37
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 87.25 -0.08 0.29 4.52 9.23
## Consumo -0.08 2.36 -0.06 0.44 -1.74
## Aceleracion 0.29 -0.06 0.34 0.24 0.09
## Precio 4.52 0.44 0.24 7.98 -0.58
## Emisiones 9.23 -1.74 0.09 -0.58 89.81
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 102.05 -0.74 -0.73 -0.86 -9.52
## Consumo -0.74 1.81 0.06 0.71 -2.29
## Aceleracion -0.73 0.06 0.39 0.25 -0.76
## Precio -0.86 0.71 0.25 9.15 -0.42
## Emisiones -9.52 -2.29 -0.76 -0.42 96.97
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 82.52 -1.91 1.10 -2.82 6.78
## Consumo -1.91 2.24 -0.11 0.47 -1.47
## Aceleracion 1.10 -0.11 0.38 0.00 -0.30
## Precio -2.82 0.47 0.00 8.71 -2.58
## Emisiones 6.78 -1.47 -0.30 -2.58 86.05
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 105.23 -0.81 1.42 -0.51 1.53
## Consumo -0.81 2.26 -0.04 0.34 -0.88
## Aceleracion 1.42 -0.04 0.44 -0.11 -0.03
## Precio -0.51 0.34 -0.11 8.19 1.72
## Emisiones 1.53 -0.88 -0.03 1.72 121.48
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 92.325 -0.741 0.409 -0.540 -0.909
## Consumo -0.741 2.219 -0.104 0.457 -0.768
## Aceleracion 0.409 -0.104 0.388 0.075 -0.441
## Precio -0.540 0.457 0.075 8.573 -0.317
## Emisiones -0.909 -0.768 -0.441 -0.317 102.735
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 1.000 -0.052 0.068 -0.019 -0.009
## Consumo -0.052 1.000 -0.112 0.105 -0.051
## Aceleracion 0.068 -0.112 1.000 0.041 -0.070
## Precio -0.019 0.105 0.041 1.000 -0.011
## Emisiones -0.009 -0.051 -0.070 -0.011 1.000
## Log Determinant
## Toyota 11.139
## Ford 10.723
## Hyundai 10.932
## Chevrolet 10.751
## Volkswagen 11.485
## Pooled 11.115
library(psych)
options(scipen = 0)
# Bartlett sobre la matriz de correlación de las variables dependientes
cortest.bartlett(cor(autos[, -1]), n = nrow(autos[, -1]))
## $chisq
## [1] 127.8793
##
## $p.value
## [1] 1.264207e-22
##
## $df
## [1] 10
conlusión:Como p-vaor < 0.05, se rechaza la hipótesis nula.
Podemos afirmar que existe evidencia estadística de que las variables están correlacionadas entre sí.
library(MVTests)
res1 <- Bsper(autos[, -1]) # Variables dependientes
summary(res1)
## Bartlett's Sphericity Test
##
## Chi-Squared Value = 127.8793 , df = 10 and p-value: <2e-16
##
## Correlation Matrix
##
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 1.00000000 -0.293988633 -0.2101076 0.047949543 0.22523062
## Consumo -0.29398863 1.000000000 0.2257921 0.001177129 -0.31740846
## Aceleracion -0.21010757 0.225792120 1.0000000 -0.136911411 -0.29881962
## Precio 0.04794954 0.001177129 -0.1369114 1.000000000 0.04294112
## Emisiones 0.22523062 -0.317408461 -0.2988196 0.042941115 1.00000000
modelo <- manova(cbind(Velocidad_max, Consumo, Aceleracion, Precio, Emisiones) ~ Marca,
data = autos)
Determinación de la matriz residual y la matriz factorial del MANOVA.
A continuación en la salida se muestran amabas matrices
Matrices = summary(modelo)$SS
F = Matrices$Marca # Variabilidad explicada por el factor Marca
W = Matrices$Residuals # Variabilidad residual (dentro de cada marca)
T = F + W # Variabilidad total
F
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 8611.6367 -1719.9534 -794.1877 795.6666 10219.0869
## Consumo -1719.9534 350.4071 152.3376 -155.0666 -2053.2561
## Aceleracion -794.1877 152.3376 104.9375 -159.4726 -857.6446
## Precio 795.6666 -155.0666 -159.4726 1034.4562 702.6053
## Emisiones 10219.0869 -2053.2561 -857.6446 702.6053 12357.0519
W
## Velocidad_max Consumo Aceleracion Precio Emisiones
## Velocidad_max 31852.2023 -255.68800 141.01897 -186.23114 -313.5566
## Consumo -255.6880 765.65421 -35.76323 157.55137 -265.0955
## Aceleracion 141.0190 -35.76323 133.89877 25.78241 -152.0174
## Precio -186.2311 157.55137 25.78241 2957.80957 -109.4071
## Emisiones -313.5566 -265.09546 -152.01743 -109.40714 35443.5680
eta2 = 1 - det(W)/det(T)
eta2
## [1] 0.7692905
Conclusión: El 76.9% de la variabilidad total está explicada por las diferencias entre los grupos (Marca),indica efecto fuerte del factor Marca sobre las variables dependientes.
Lo que se quiere probar es lo siguiente:
H0:μ1=μ2=μ3=μ4=μ5
H1: al menos un μi es diferente a los demás
summary(modelo, test = "Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## Marca 4 1.0182 23.492 20 1376 < 2.2e-16 ***
## Residuals 345
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Hotelling-Lawley")
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Marca 4 2.3386 39.699 20 1358 < 2.2e-16 ***
## Residuals 345
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Roy")
## Df Roy approx F num Df den Df Pr(>F)
## Marca 4 1.8748 128.99 5 344 < 2.2e-16 ***
## Residuals 345
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dado que todas las pruebas (Pillai, Hotelling, Roy) son
significativas con p < 0.001, podemos afirmar que:Existe suficiente
evidencia estadística para rechazar la hipótesis nula Ho, los vectores
de medias de las variables dependientes difieren entre las marcas de
autos.
Por lo tanto, el factor Marca tiene un efecto significativo sobre el
conjunto de variables dependientes.
summary.aov(modelo)
## Response Velocidad_max :
## Df Sum Sq Mean Sq F value Pr(>F)
## Marca 4 8612 2152.91 23.319 < 2.2e-16 ***
## Residuals 345 31852 92.33
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Consumo :
## Df Sum Sq Mean Sq F value Pr(>F)
## Marca 4 350.41 87.602 39.473 < 2.2e-16 ***
## Residuals 345 765.65 2.219
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Aceleracion :
## Df Sum Sq Mean Sq F value Pr(>F)
## Marca 4 104.94 26.2344 67.595 < 2.2e-16 ***
## Residuals 345 133.90 0.3881
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Precio :
## Df Sum Sq Mean Sq F value Pr(>F)
## Marca 4 1034.5 258.614 30.165 < 2.2e-16 ***
## Residuals 345 2957.8 8.573
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Emisiones :
## Df Sum Sq Mean Sq F value Pr(>F)
## Marca 4 12357 3089.26 30.07 < 2.2e-16 ***
## Residuals 345 35444 102.73
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Conclusión: De la salida se puede apreciar que todas las variables aportan para que se rechace la hipotesis nula Ho, es decir que contribuyen para que se esta hipótesis se rechace, esto se debe que cada uno de los p-valores son menores al nivel de significación alfa.
Primero generamos un modelo lineal
modelo1 = manova(cbind(Velocidad_max, Consumo, Aceleracion,Precio, Emisiones) ~ Marca, data = autos,
subset = Marca %in% c("Toyota","Ford"))
summary(modelo1,test="Pillai")
## Df Pillai approx F num Df den Df Pr(>F)
## Marca 1 0.59459 39.305 5 134 < 2.2e-16 ***
## Residuals 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo1,test="Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## Marca 1 0.40541 39.305 5 134 < 2.2e-16 ***
## Residuals 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo1,test="Hotelling-Lawley")
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Marca 1 1.4666 39.305 5 134 < 2.2e-16 ***
## Residuals 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo1,test="Roy")
## Df Roy approx F num Df den Df Pr(>F)
## Marca 1 1.4666 39.305 5 134 < 2.2e-16 ***
## Residuals 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Como en todos los casos el p-valor < 0.001, rechazamos H₀.Se puede afirmar que con las distintas pruebas de pillai,willks,hotelling y roy, en todas ellas rechazamos Ho, es decir podemos afirmar que el vector de promedios de las marcas “Toyota” y “Ford” no son iguales. Es decir las 5 variables dicen que hay diferencias entre los promedios de las marcas “Toyota” y “Ford”.