Práctica Calificada 1
CURSO: Técnicas
Multivariadas
DOCENTE: Miranda Villagomez Clodomiro
Fernando
ALUMNOS:
Colca Balbin, Josue Jeremías -
20220761
Garces Quispe, Adryana Luisa - 20220764
Jesús Mamani,
Angelo Miguel - 20220767
Landa Cordova, Valeria Estefany -
20220768
Ramos Orue, Selene Milagros - 20220777 - 20220774
Sanchez Perez, Omar Zenon - 20211938
Sandoval Hurtado, Nagiely -
20220780
2025
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## corrplot 0.95 loaded
## Descriptive Statistics
## datos
## N: 1500
##
## Colesterol_Total Edad Glucosa_Ayunas IMC Presion_Sistolica
## ----------------- ------------------ --------- ---------------- --------- -------------------
## Mean 180.18 45.47 90.21 25.98 110.30
## Std.Dev 26.59 14.54 8.61 3.96 11.55
## Min 120.00 18.00 70.00 16.00 90.00
## Q1 162.00 35.00 84.00 23.40 102.00
## Median 179.00 45.00 90.00 25.85 110.00
## Q3 199.00 55.00 96.00 28.70 118.00
## Max 288.00 96.00 120.00 39.70 154.00
## MAD 26.69 14.83 8.90 3.93 11.86
## IQR 37.00 20.00 12.00 5.30 16.00
## CV 0.15 0.32 0.10 0.15 0.10
## Skewness 0.07 0.18 0.08 0.02 0.25
## SE.Skewness 0.06 0.06 0.06 0.06 0.06
## Kurtosis -0.17 -0.21 -0.19 -0.10 -0.26
## N.Valid 1500.00 1500.00 1500.00 1500.00 1500.00
## N 1500.00 1500.00 1500.00 1500.00 1500.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00
Observaciones: - La mayoría de los pacientes tienen niveles aceptables, pero algunos casos extremos (ej. 288 mg/dL en colesterol) podrían requerir intervención médica. - La muestra representa adecuadamente a una población adulta. - Se observan niveles glucémicos saludables, aunque algunos casos bordean la prediabetes. - La población tiende al sobrepeso, con casos de obesidad significativa. - La presión arterial promedio es saludable, aunque hay casos aislados de hipertensión.
## Edad IMC Presion_Sistolica Glucosa_Ayunas
## Edad 1.00000000 0.013957331 0.57181515 0.3403228
## IMC 0.01395733 1.000000000 0.00155298 0.1237298
## Presion_Sistolica 0.57181515 0.001552980 1.00000000 0.2184098
## Glucosa_Ayunas 0.34032280 0.123729800 0.21840985 1.0000000
## Colesterol_Total 0.37815407 0.009126552 0.17077887 0.1216273
## Colesterol_Total
## Edad 0.378154072
## IMC 0.009126552
## Presion_Sistolica 0.170778875
## Glucosa_Ayunas 0.121627345
## Colesterol_Total 1.000000000
Interpretación:
La correlación entre Edad y Presión
Sistólica es la más destacada. Esto se debe a que la presión
sistólica aumenta con la edad, por factores como rigidez arterial, daño
vascular acumulado y cambios hormonales (como menor producción de óxido
nítrico).
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.9971, p-value = 0.007081
Hipótesis: - H₀: La muestra proviene de una distribución normal multivariada.
n <- 1500
p <- 5
mu_0 <- c(45, 24, 120, 90, 178)
Sigma <- matrix(c(
210, 2.1, 79, 36, 110,
2.1, 16, 1.0, 2.3, 0.8,
79, 1.0, 100, 19.3, 41.2,
36, 2.3, 19.3, 80, 25.7,
110, 0.8, 41.2, 25.7, 90),
nrow = 5, byrow = TRUE)
x_bar <- colMeans(datos)
Z2 <- n * t(x_bar - mu_0) %*% solve(Sigma) %*% (x_bar - mu_0)
Z2 <- as.numeric(Z2)
alpha <- 0.05
chi_critico <- qchisq(1 - alpha, df = p)
Z2## [1] 2639.338
## [1] 11.0705
if (Z2 > chi_critico) {
mensaje <- "Rechazamos H0: El vector de medias NO es igual al especificado."
} else {
mensaje <- "No se rechaza H0: El vector de medias podría ser igual al especificado."
}
mensaje## [1] "Rechazamos H0: El vector de medias NO es igual al especificado."
Conclusión:
Hay evidencia estadística suficiente para afirmar que el vector de
medias muestrales difiere significativamente del vector hipotético. Esto
indica que al menos una de las medias poblacionales
no coincide con su valor esperado.
Una empresa farmacéutica está desarrollando un nuevo suplemento alimenticio para deportistas. Para control de calidad, analizan 4 características químicas de cada lote producido:
pH del suplemento
Concentración de proteína (% peso)
Concentración de carbohidratos (% peso)
Nivel de sodio (mg/100g)
Se quiere verificar si la media de la producción cumple con los estándares esperados.
Los estándares ideales son los siguientes:
pH esperado ≈ 7.0 (ligeramente neutro)
Proteína esperada ≈ 20%
Carbohidrato esperado ≈ 50%
Sodio esperado ≈ 150 mg/100g
Primero cargamos paquetes
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)# Simulación de base de datos
set.seed(123) # para reproducibilidad
n <- 1000
# Simulamos las variables
pH <- rnorm(n, mean = 7.0, sd = 0.3)
proteina <- rnorm(n, mean = 20.0, sd = 2.0)
carbohidrato <- rnorm(n, mean = 50.0, sd = 3.0)
sodio <- rnorm(n, mean = 150.0, sd = 10.0)
# Armamos la base
datos <- data.frame(
pH = pH,
Proteina = proteina,
Carbohidrato = carbohidrato,
Sodio = sodio
)
# Vemos las primeras filas
head(datos)## pH Proteina Carbohidrato Sodio
## 1 6.831857 18.00840 48.46519 148.4969
## 2 6.930947 17.92009 50.71081 146.7224
## 3 7.467612 19.96404 48.37523 135.5183
## 4 7.021153 19.73565 53.65768 143.0272
## 5 7.038786 14.90131 50.52241 175.9849
## 6 7.514519 22.08115 48.15420 149.6258
## Descriptive Statistics
## datos
## N: 1000
##
## Carbohidrato pH Proteina Sodio
## ----------------- -------------- --------- ---------- ---------
## Mean 49.94 7.00 20.08 149.91
## Std.Dev 2.94 0.30 2.02 9.92
## Min 41.45 6.16 13.90 118.71
## Q1 48.03 6.81 18.69 143.60
## Median 49.85 7.00 20.11 149.92
## Q3 51.93 7.20 21.51 156.51
## Max 60.26 7.97 26.78 178.95
## MAD 2.86 0.29 2.09 9.53
## IQR 3.90 0.39 2.81 12.90
## CV 0.06 0.04 0.10 0.07
## Skewness 0.04 0.07 -0.01 -0.07
## SE.Skewness 0.08 0.08 0.08 0.08
## Kurtosis 0.02 -0.08 -0.07 -0.05
## N.Valid 1000.00 1000.00 1000.00 1000.00
## N 1000.00 1000.00 1000.00 1000.00
## Pct.Valid 100.00 100.00 100.00 100.00
Interpretaciones:
Medias observadas: Las medias de las variables químicas son extremadamente cercanas a los valores ideales establecidos, lo cual sugiere preliminarmente que la producción está alineada con los estándares deseados.
Dispersión (desviación estándar y rango intercuartílico - IQR):
Carbohidrato: desviación estándar de 2.94%, con un IQR de 3.90%. La concentración de carbohidratos tiene una variabilidad moderada, pero razonable para un proceso industrial.
pH: desviación estándar de 0.30, muy baja. La acidez/alcalinidad del suplemento está bastante controlada.
Proteína: desviación estándar de 2.02% y un IQR de 2.81%. Variabilidad baja a moderada, lo esperado para productos con procesos de mezcla.
Sodio: desviación estándar de 9.92 mg/100g, y IQR de 12.90 mg/100g. Ligeramente más variable, pero sigue un rango adecuado.
Skewness (asimetría): Todas las variables tienen valores de asimetría cercanos a 0 (entre -0.07 y 0.07), lo que indica que las distribuciones son aproximadamente simétricas.
Kurtosis: Todas tienen valores cercanos a 0 (entre -0.08 y 0.02), lo que sugiere que no hay colas extremadamente pesadas o livianas; es decir, las distribuciones son leptocúrticas normales o muy similares a la normal.
H₀: μ = 7.0
H₁: μ ≠ 7.0
library(nortest)
library(ggstatsplot)
library(dplyr)
pH = datos$pH
# Prueba de Shapiro-Wilk
shapiro.test(pH)##
## Shapiro-Wilk normality test
##
## data: pH
## W = 0.99838, p-value = 0.4765
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: pH
## D = 0.014963, p-value = 0.8484
Resultados:
Shapiro-Wilk p-value > 0.05: pH tiene distribución normal.
Lilliefors p-value > 0.05: se confirma la normalidad.
Entonces podemos aplicar pruba t de Student.
##
## One Sample t-test
##
## data: pH
## t = 0.51428, df = 999, p-value = 0.6072
## alternative hypothesis: true mean is not equal to 7
## 95 percent confidence interval:
## 6.986377 7.023300
## sample estimates:
## mean of x
## 7.004838
Análisis del resultado:
p_value = 0.6072 > 0.05: A un nivel de significancia del 5%, no hay suficiente evidencia estadística para afirmar que la media del pH es difernete de 7.0
El intervalo de confianza (95%) para la media poblacional está entre 6.986 y 7.023. Dado que 7.0 está dentro de este intervalo, refuerza la conclusión de que no se puede rechazar H₀.
gghistostats(
data = pH %>% as_tibble(),
x = value,
test.value = 7.0,
type = "p",
normal.curve = TRUE,
normal.curve.args = list(linewidth = 2, col = 'purple')
)## [1] "very small"
## (Rules: cohen1988)
El valor de ĝₕₑ𝖽𝗀ₑ = 0.02 indica un efecto muy pequeño, lo que significa que la diferencia entre la media observada del pH y el valor esperado (7.0) es casi insignificante en términos prácticos.
Otro indicador:
Factor de Bayes (log(BF₀₁)) ≈ 3.20: sugiere fuertes evidencias a favor de la hipótesis nula (H₀). Este valor es bastante alto y está asociado con una evidencia fuerte para que la media del pH sea igual a 7.0, lo que refuerza la conclusión de que no hay razones suficientes para rechazar H₀.
library(MVN)
par(mfrow = c(1, 2))
# Distancia de Mahalanobis
outliers <- mvn(data = datos, multivariateOutlierMethod = "quan")
# Distancia ajustada de Mahalanobis
outliers.adj <- mvn(data = datos, multivariateOutlierMethod = "adj")Interpretación del gráfico:
El análisis inicial sugiere una cantidad moderada de outliers (34), pero el método robusto ajustado reduce este número significativamente (9), esto indica que el método estándar puede ser demasiado sensible a desviaciones menores de la normalidad multivariada.
Los 9 casos persistentemente identificados como outliers en ambos métodos merecen mayor investigación como posibles valores atípicos genuinos.
RECORDAR:
Mahalanobis clásico: puede sobredetectar outliers si hay contaminación en los datos.
Mahalanobis ajustado: es más robusto (ideal si crees que hay outliers influyendo en el cálculo de la media y la covarianza)
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99804, p-value = 0.3009
Resultado: obtenemos un p_value = 0.3009, afirmando que cumple la normalidad.
## $multivariateNormality
## Test H p value MVN
## 1 Royston 1.09868 0.8944825 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling pH 0.2965 0.5920 YES
## 2 Anderson-Darling Proteina 0.2984 0.5864 YES
## 3 Anderson-Darling Carbohidrato 0.3288 0.5160 YES
## 4 Anderson-Darling Sodio 0.3057 0.5661 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max
## pH 1000 7.004838 0.2975085 7.002763 6.157068 7.972312
## Proteina 1000 20.084931 2.0193484 20.109705 13.904278 26.780742
## Carbohidrato 1000 49.939662 2.9350724 49.848277 41.454360 60.263284
## Sodio 1000 149.908396 9.9235168 149.918092 118.709118 178.948544
## 25th 75th Skew Kurtosis
## pH 6.811503 7.199381 0.06519600 -0.08010201
## Proteina 18.693554 21.506901 -0.01051340 -0.07188844
## Carbohidrato 48.031421 51.927726 0.04495948 0.02268770
## Sodio 143.603519 156.505388 -0.07129556 -0.04610869
Resultados:
p_value = 0.8944825, sí cumple normalidad multivariada (YES), porque el p-valor > 0.05
Cada variable individualmente también cumple normalidad (Anderson-Darling en cada caso).
Las medias y medianas son bastante cercanas → baja asimetría.
Skewness: todos los valores entre -0.1 y 0.07 → aproximadamente simétricos.
Kurtosis: valores cercanos a 0 → no hay colas pesadas ni picos extremos.
Test MVN de Mardia:
## Test Statistic p value Result
## 1 Mardia Skewness 21.05762018861 0.393748095803564 YES
## 2 Mardia Kurtosis -0.874197659088932 0.382010620648247 YES
## 3 MVN <NA> <NA> YES
## Test HZ p value MVN
## 1 Henze-Zirkler 0.9232573 0.4617521 YES
## Test Variable Statistic p value Normality
## 1 Anderson-Darling pH 0.2965 0.5920 YES
## 2 Anderson-Darling Proteina 0.2984 0.5864 YES
## 3 Anderson-Darling Carbohidrato 0.3288 0.5160 YES
## 4 Anderson-Darling Sodio 0.3057 0.5661 YES
## Test E df p value MVN
## 1 Doornik-Hansen 3629.157 8 0 NO
## Test Variable Statistic p value Normality
## 1 Anderson-Darling pH 0.2965 0.5920 YES
## 2 Anderson-Darling Proteina 0.2984 0.5864 YES
## 3 Anderson-Darling Carbohidrato 0.3288 0.5160 YES
## 4 Anderson-Darling Sodio 0.3057 0.5661 YES
## Test Statistic p value MVN
## 1 E-statistic 0.9591227 0.571 YES
## Test Variable Statistic p value Normality
## 1 Anderson-Darling pH 0.2965 0.5920 YES
## 2 Anderson-Darling Proteina 0.2984 0.5864 YES
## 3 Anderson-Darling Carbohidrato 0.3288 0.5160 YES
## 4 Anderson-Darling Sodio 0.3057 0.5661 YES
Resultados después de realizar los test:
## pH Proteina Carbohidrato Sodio
## 7.004838 20.084931 49.939662 149.908396
## [1] TRUE
Se contrastan dos hipótesis:
Hipótesis 1:
H₀: μ=(0,0,0,0)
Hipótesis 2:
H₀: μ=(7,20,50,150)
## One Sample Hotelling T Square Test
##
## Hotelling T Sqaure Statistic = 1121785
## F value = 279604.1 , df1 = 4 , df2 = 996 , p-value: <2e-16
##
## Descriptive Statistics
##
## pH Proteina Carbohidrato Sodio
## N 1000.0000000 1000.000000 1000.000000 1000.000000
## Means 7.0048384 20.084931 49.939662 149.908396
## Sd 0.2975085 2.019348 2.935072 9.923517
##
##
## Detection important variable(s)
##
## Lower Upper Mu0 Important Variables?
## pH 6.975761 7.033915 0 *TRUE*
## Proteina 19.887569 20.282292 0 *TRUE*
## Carbohidrato 49.652803 50.226522 0 *TRUE*
## Sodio 148.938520 150.878272 0 *TRUE*
Interpretación de resultado:
Rechazamos la hipótesis nula H0: μ=(0,0,0,0).
Las medias poblacionales no son iguales a 0 para los datos.
Para todas las variables → el 0 NO está dentro de su intervalo de confianza.
Todas las variables (pH, Proteína, Carbohidrato y Sodio) aportan evidencia significativa contra la hipótesis de que su media es 0.
Los datos están muy lejos de tener medias iguales a cero (como ya lo intuíamos por el tamaño enorme del estadístico T² y el p-valor prácticamente 0).
## One Sample Hotelling T Square Test
##
## Hotelling T Sqaure Statistic = 2.449188
## F value = 0.61 , df1 = 4 , df2 = 996 , p-value: 0.655
##
## Descriptive Statistics
##
## pH Proteina Carbohidrato Sodio
## N 1000.0000000 1000.000000 1000.000000 1000.000000
## Means 7.0048384 20.084931 49.939662 149.908396
## Sd 0.2975085 2.019348 2.935072 9.923517
##
##
## Detection important variable(s)
##
## Lower Upper Mu0 Important Variables?
## pH 6.975761 7.033915 7 FALSE
## Proteina 19.887569 20.282292 20 FALSE
## Carbohidrato 49.652803 50.226522 50 FALSE
## Sodio 148.938520 150.878272 150 FALSE
Interpretación de resultados:
Aceptamos la hipótesis nula H0: μ=(7,20,50,150) → p_value = 0.655
Conclusión: Todos los valores hipotéticos (μ0) caen dentro de los intervalos de confianza de sus respectivas variables.
Por eso en “Important Variables?” aparece FALSE para todos: ninguna de las variables por sí sola presenta diferencia significativa con el valor hipotético.
## pH Proteina Carbohidrato Sodio
## [1,] 6.831857 18.00840 48.46519 148.4969
## [2,] 6.930947 17.92009 50.71081 146.7224
## [3,] 7.467612 19.96404 48.37523 135.5183
## [4,] 7.021153 19.73565 53.65768 143.0272
## [5,] 7.038786 14.90131 50.52241 175.9849
## [6,] 7.514519 22.08115 48.15420 149.6258
## Analysis of Variance Table
##
## Df Pillai approx F num Df den Df Pr(>F)
## (Intercept) 1 0.99911 279604 4 996 < 2.2e-16 ***
## Residuals 999
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Observamos que nuestro p_value < 0.05, rechazamos la H0.
## Analysis of Variance Table
##
## Df Pillai approx F num Df den Df Pr(>F)
## (Intercept) 1 0.0024456 0.61046 4 996 0.6552
## Residuals 999
Observamos que nuestro p_value = 0.6552
CONCLUSIÓN: A un nivel de significancia del 5% existe suficiente evidencia estadística que aifirma que los datos son compatibles con tener como media poblacional (7,20,50,150).
Regiones de confianza para el vector de medias normal
n <- nrow(datos) # tamaño muestral
p <- ncol(datos) # número de variables
xbar <- colMeans(datos) # vector de medias muestrales
xbar## pH Proteina Carbohidrato Sodio
## 7.004838 20.084931 49.939662 149.908396
## pH Proteina Carbohidrato Sodio
## pH 0.088511303 0.05195454 -0.01687873 -0.008841375
## Proteina 0.051954538 4.07776780 0.15708350 -0.140855908
## Carbohidrato -0.016878725 0.15708350 8.61465011 1.472647479
## Sodio -0.008841375 -0.14085591 1.47264748 98.476186442
tconst <- sqrt((p/n)*((n-1)/(n-p)) * qf(0.99,p,n-p))
# Esto usa la distribución F para construir una región de confianza del 99%
# para el vector de medias bajo normalidad multivariada.
id <- c(1,2) # elige pH (columna 1) y Proteína (columna 2)
plot(ellipse(center=xbar[id], shape=S[id,id], radius=tconst, draw=F),
xlab="pH",ylab="Proteína",col="tomato",lwd = 10)Interpretación del gráfico:
Dentro de la elipse: Están los valores plausibles para el verdadero par de medias (pH, Proteína) al 99% de confianza.
Centro de la elipse: Es el valor medio muestral de (pH, Proteína).
Forma de la elipse: Muestra la correlación: si pH y Proteína estuvieran correlacionados, la elipse se alargaría en diagonal.
Funcion R para Intervalos confidenciales simultaneos basados en T^2
T.ci <- function(mu, Sigma, n, avec=rep(1,length(mu)), level=0.95){
p <- length(mu)
if(nrow(Sigma)!=p) stop("Need length(mu) == nrow(Sigma).")
if(ncol(Sigma)!=p) stop("Need length(mu) == ncol(Sigma).")
if(length(avec)!=p) stop("Need length(mu) == length(avec).")
if(level <=0 | level >= 1) stop("Need 0 < level < 1.")
cval <- qf(level, p, n-p) * p * (n-1) / (n-p)
zhat <- crossprod(avec, mu)
zvar <- crossprod(avec, Sigma %*% avec) / n
const <- sqrt(cval * zvar)
c(lower = zhat - const, upper = zhat + const)
}n <- nrow(datos)
p <- ncol(datos)
xbar <- colMeans(datos)
S <- cov(datos)
T.ci(mu=xbar, Sigma=S, n=n, avec=c(1,0,0,0)) # variable: pH## lower upper
## 6.975761 7.033915
## lower upper
## 19.88757 20.28229
## lower upper
## 49.65280 50.22652
## lower upper
## 148.9385 150.8783
Interpretación de resultados:
TCI <- tCI <- NULL
for(k in 1:4){
avec <- rep(0, 4)
avec[k] <- 1
TCI <- c(TCI, T.ci(xbar, S, n, avec))
tCI <- c(tCI,
xbar[k] - sqrt(S[k,k]/n) * qt(0.975, df=n-1),
xbar[k] + sqrt(S[k,k]/n) * qt(0.975, df=n-1))
}
rtab <- rbind(TCI, tCI)
round(rtab, 6)## lower upper lower upper lower upper lower upper
## TCI 6.975761 7.033915 19.88757 20.28229 49.65280 50.22652 148.9385 150.8783
## tCI 6.986377 7.023300 19.95962 20.21024 49.75753 50.12180 149.2926 150.5242
Observaciones importantes:
ICs simultaneos a traves del metodo de Bonferroni con R
TCI <- tCI <- bon <- NULL
alpha <- 1 - 0.05/(2*4)
for(k in 1:4){
avec <- rep(0, 4)
avec[k] <- 1
TCI <- c(TCI, T.ci(xbar, S, n, avec))
tCI <- c(tCI,
xbar[k] - sqrt(S[k,k]/n) * qt(0.975, df=n-1),
xbar[k] + sqrt(S[k,k]/n) * qt(0.975, df=n-1))
bon <- c(bon,
xbar[k] - sqrt(S[k,k]/n) * qt(alpha, df=n-1),
xbar[k] + sqrt(S[k,k]/n) * qt(alpha, df=n-1))
}
rtab <- rbind(TCI, tCI, bon)
round(rtab, 2)## lower upper lower upper lower upper lower upper
## TCI 6.98 7.03 19.89 20.28 49.65 50.23 148.94 150.88
## tCI 6.99 7.02 19.96 20.21 49.76 50.12 149.29 150.52
## bon 6.98 7.03 19.93 20.24 49.71 50.17 149.12 150.69
Observaciones importantes:
chi <- NULL
for(k in 1:4){
chi <- c(chi,
xbar[k] - sqrt(S[k,k]/n) * sqrt(qchisq(0.95, df=p)),
xbar[k] + sqrt(S[k,k]/n) * sqrt(qchisq(0.95, df=p)))
}
rtab <- rbind(TCI, tCI, bon,chi)
round(rtab, 2)## lower upper lower upper lower upper lower upper
## TCI 6.98 7.03 19.89 20.28 49.65 50.23 148.94 150.88
## tCI 6.99 7.02 19.96 20.21 49.76 50.12 149.29 150.52
## bon 6.98 7.03 19.93 20.24 49.71 50.17 149.12 150.69
## chi 6.98 7.03 19.89 20.28 49.65 50.23 148.94 150.87
Interpretación:
Hotelling (TCI) y Chi-cuadrado (chi) te dan intervalos prácticamente iguales.
Bonferroni es apenas más ancho.
tCI es el más angosto, porque no ajusta por comparaciones múltiples.
Formando regiones de prediccion con R
n <- nrow(datos)
p <- ncol(datos)
xbar <- colMeans(datos)
S <- cov(datos)
pconst <- sqrt((p/n)*((n^2-1)/(n-p)) * qf(0.99,p,n-p))
id <- c(1,2)
plot(ellipse(center=xbar[id], shape=S[id,id], radius=pconst, draw=F),
xlab="pH",ylab="Proteína",col="pink3",lwd = 10)Interpretación del gráfico:
Esta elipse es más grande que la de las regiones de confianza para la media, porque ahora queremos capturar futuras observaciones individuales, no el valor medio.
La prueba de Shapiro-Wilk aplicada a los datos
(mshapiro.test(t(datos))) mostró un p-valor de
0.2651, indicando que no se rechaza la hipótesis de normalidad
multivariada.
El test MVN de Royston también apoyó esta conclusión (p-valor = 0.8945), confirmando que los datos siguen una distribución normal multivariada.
Individualmente, cada variable (pH,
Proteína, Carbohidrato, Sodio)
mostró cumplir la normalidad según el test de
Anderson-Darling.
Los valores de asimetría (skewness) y curtosis están muy cerca de 0, reforzando la idea de que las variables son simétricas y no presentan colas pesadas.
Conclusión: Sí se cumple el supuesto de normalidad multivariada en la matriz de datos.
Se utilizó la distancia de Mahalanobis clásica
(mvn(data = datos, multivariateOutlierMethod = "quan")) y
también la distancia ajustada
(multivariateOutlierMethod = "adj") que es más robusta
frente a valores extremos.
Ambas técnicas detectaron outliers, aunque la ajustada reduce el impacto de los outliers fuertes en el análisis.
Conclusión: Se identificaron algunas observaciones atípicas, pero no comprometen la validez global del análisis gracias a la robustez del enfoque ajustado.
Se utilizó el T² de Hotelling para contrastar si el vector de medias poblacional es igual a un vector de referencia (7, 20, 50, 150).
El análisis mostró que no hay evidencia significativa para rechazar que las medias sean iguales a esos valores.
Conclusión: Los valores medios observados
(pH, Proteína, Carbohidrato,
Sodio) coinciden razonablemente con los
valores esperados.
Todos los intervalos fueron muy estrechos y consistentes entre sí, mostrando alta precisión en las estimaciones.
El método de Bonferroni fue ligeramente más conservador (intervalos un poco más amplios).
Conclusión: Hay alta precisión y consistencia en la estimación de las medias para cada variable.
Un equipo de investigadores en nutrición llevó a cabo un estudio clínico con el fin de evaluar los efectos de tres tipos de dieta sobre el peso corporal de adultos en un periodo de 6 semanas. Participaron 3000 personas, hombres y mujeres, de distintas edades y estaturas. Cada participante fue asignado aleatoriamente a una de las tres dietas (denominadas Dieta 1, Dieta 2 y Dieta 3), y se registró su peso inicial (pre.weight) y su peso tras 6 semanas (weight6weeks) de seguimiento.
El estudio se planteó con tres objetivos principales:
Realizar un análisis exploratorio de los datos aplicando técnicas estadísticas descriptivas y gráficas para identificar patrones, detectar valores atípicos y verificar supuestos. Este paso es fundamental para obtener una comprensión preliminar de las variables involucradas y orientar los análisis inferenciales posteriores.
Evaluar si existen diferencias significativas en la pérdida de peso (variable peso_dif, calculada como la diferencia entre el peso inicial y el peso después de 6 semanas) entre los grupos de dieta mediante una prueba t de Student.
Comparar simultáneamente un conjunto de variables relacionadas con las características físicas de los individuos (por ejemplo, peso final, grasa corporal, masa muscular, etc.) entre diferentes grupos de dieta, utilizando la prueba T² de Hotelling para contrastar la igualdad de los vectores de medias multivariados.
Antes de aplicar técnicas estadísticas formales para contrastar hipótesis, es fundamental realizar un análisis exploratorio de los datos (EDA). Esta etapa permite:
Comprender la distribución de las variables de interés (edad, estatura, peso inicial, peso final, y la diferencia de peso).
Detectar posibles valores atípicos o inconsistencias que podrían influir en los resultados.
Visualizar la relación entre las variables y cómo estas se comportan según el tipo de dieta.
Evaluar supuestos necesarios para los análisis posteriores, como normalidad, homogeneidad de varianzas, y linealidad.
Este paso no solo mejora la calidad del análisis, sino que también aporta intuición y contexto sobre cómo varían las características de los participantes en función de la dieta que siguieron.
## 'data.frame': 3000 obs. of 7 variables:
## $ Person : int 25 26 1 2 3 4 5 6 7 8 ...
## $ gender : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Edad : int 41 32 22 46 55 33 50 50 37 28 ...
## $ Estatura : int 171 174 159 192 170 171 170 201 174 176 ...
## $ peso_inicial : int 60 103 58 60 64 64 65 66 67 69 ...
## $ Diet : int 2 2 1 1 1 1 1 1 1 1 ...
## $ peso_6_semanas: num 60 103 54.2 54 63.3 61.1 62.2 64 65 60.5 ...
## Person gender Edad Estatura peso_inicial Diet peso_6_semanas
## 1 25 0 41 171 60 2 60.0
## 2 26 0 32 174 103 2 103.0
## 3 1 0 22 159 58 1 54.2
## 4 2 0 46 192 60 1 54.0
## 5 3 0 55 170 64 1 63.3
## 6 4 0 33 171 64 1 61.1
Para el análisis univariado enfocado en evaluar la eficacia de las dietas en la reducción de peso, se creó una nueva variable denominada peso_dif, la cual representa el cambio de peso experimentado por cada individuo a lo largo del estudio. Esta variable fue construida mediante la diferencia entre el peso registrado al inicio del estudio (peso_inicial) y el peso registrado al finalizar las 6 semanas de intervención (peso_6_semanas), según la siguiente fórmula:
peso_dif=peso_inicial−peso_6_semanas
## Descriptive Statistics
## datos
## N: 3000
##
## Diet Edad Estatura gender Person peso_6_semanas peso_dif
## ----------------- --------- --------- ---------- --------- --------- ---------------- ----------
## Mean 2.00 38.49 170.59 0.01 1.03 68.76 3.76
## Std.Dev 0.82 9.89 11.50 0.10 7.26 9.17 12.36
## Min 1.00 7.00 134.00 0.00 0.00 32.40 -44.50
## Q1 1.00 32.00 163.00 0.00 0.00 62.60 -4.20
## Median 2.00 38.50 170.00 0.00 0.00 68.80 3.80
## Q3 3.00 45.00 178.00 0.00 0.00 75.00 11.90
## Max 3.00 70.00 210.00 1.00 78.00 106.50 52.60
## MAD 1.48 9.64 10.38 0.00 0.00 9.19 12.01
## IQR 2.00 13.00 15.00 0.00 0.00 12.40 16.10
## CV 0.41 0.26 0.07 9.48 7.07 0.13 3.29
## Skewness 0.00 -0.02 0.17 9.37 7.84 0.07 -0.03
## SE.Skewness 0.04 0.04 0.04 0.04 0.04 0.04 0.04
## Kurtosis -1.50 -0.10 0.12 85.86 63.96 0.24 0.30
## N.Valid 3000.00 3000.00 3000.00 3000.00 3000.00 3000.00 3000.00
## N 3000.00 3000.00 3000.00 3000.00 3000.00 3000.00 3000.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00 100.00 100.00
##
## Table: Table continues below
##
##
##
## peso_inicial
## ----------------- --------------
## Mean 72.52
## Std.Dev 8.67
## Min 38.00
## Q1 67.00
## Median 73.00
## Q3 78.00
## Max 103.00
## MAD 8.90
## IQR 11.00
## CV 0.12
## Skewness -0.04
## SE.Skewness 0.04
## Kurtosis 0.20
## N.Valid 3000.00
## N 3000.00
## Pct.Valid 100.00
Edad – Mediana = 38.5 años: La mediana de la edad es 38.5 años, lo que significa que el 50% de los participantes tiene menos de 38.5 años y el otro 50% tiene más.
Estatura – Desviación estándar(Std.Dev) = 11.50 cm: La estatura promedio del grupo es 170.59 cm, y la mayoría de las personas tienen una estatura entre aproximadamente 159.09 cm y 182.09 cm, es decir, una desviación estándar (±11.50 cm) alrededor de la media.
peso_6_semanas – Skewness (Asimetría) =
0.07: La asimetría de peso_6_semanas es
ligeramente positiva, lo que indica que la distribución
está apenas sesgada hacia la derecha. Es decir, hay
algunos participantes con pesos más altos después de 6
semanas, aunque la mayoría está cerca del promedio (~68.76 kg).
peso_dif – Media = 3.76 kg: La media indica que los participantes perdieron en promedio 3.76 kg a lo largo del estudio. Refleja un resultado general positivo del tratamiento o intervención aplicada.
## Edad Estatura peso_inicial peso_6_semanas peso_dif
## 3 22 159 58 54.2 3.8
## 4 46 192 60 54.0 6.0
## 5 55 170 64 63.3 0.7
## 6 33 171 64 61.1 2.9
## 7 50 170 65 62.2 2.8
## 8 50 201 66 64.0 2.0
## Edad Estatura peso_inicial peso_6_semanas peso_dif
## 1 41 171 60 60.0 0.0
## 2 32 174 103 103.0 0.0
## 17 44 174 58 60.1 -2.1
## 18 37 172 58 56.0 2.0
## 19 41 165 59 57.3 1.7
## 20 43 171 61 56.7 4.3
## Edad Estatura peso_inicial peso_6_semanas peso_dif
## 31 51 165 60 53.0 7.0
## 32 35 169 62 56.4 5.6
## 33 21 159 64 60.6 3.4
## 34 22 169 65 58.2 6.8
## 35 36 160 66 58.2 7.8
## 36 20 169 67 61.6 5.4
Del gráfico obtenido podemos observar lo siguiente:
tipo_dieta1,
tipo_dieta2 y tipo_dieta3), la mayor
parte de la caja (el 50% central de los datos) se encuentra
por encima de la línea roja, lo que indica que
la mayoría de los participantes sí perdió peso tras la
intervención.tipo_dieta3, una parte considerable
de la caja (y especialmente la mediana) está cerca o
por debajo del umbral rojo, lo que indica que un mayor
número de personas no alcanzó la pérdida de peso esperada, o
incluso ganó peso.tipo_dieta1 muestra una alta dispersión
de resultados (con varios outliers que incluso ganaron peso),
también tiene una mediana más alta que las otras dos
dietas, lo que sugiere que fue más efectiva para la
mayoría de los participantes, a pesar de su variabilidad.El gráfico muestra la distribución del peso corporal de los participantes después de 6 semanas de intervención, desglosado por tipo de dieta (1, 2 y 3) de lo cual podemos observar lo siguiente:
La curva verde (dieta 1) está más desplazada hacia la izquierda comparada con las otras dos dietas, lo que indica que los participantes bajo esta dieta tienden a tener un peso final menor. Esto sugiere que la dieta 1 podría haber sido más efectiva para bajar de peso en comparación con las demás.
La curva naranja (dieta 2) es más achatada y ancha, lo que implica que hay mayor variabilidad en los pesos finales de los participantes de esta dieta. Esto puede indicar que la dieta 2 no tiene un efecto consistente, y que sus resultados son más variables entre los individuos.
La curva azul (dieta 3) se encuentra entre las otras dos en términos de ubicación y forma: ligeramente desplazada hacia la izquierda respecto a la dieta 2, pero no tanto como la dieta 1. Esto sugiere que la dieta 3 ayudó a perder peso, pero no fue tan efectiva como la dieta 1, ni tan inconsistente como la dieta 2.
Tipo de dieta 1 vs Tipo de dieta 2
##
## Paired t-test
##
## data: tipo_dieta1 and tipo_dieta2
## t = 0.46684, df = 999, p-value = 0.6407
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -0.861739 1.399739
## sample estimates:
## mean difference
## 0.269
##
## Shapiro-Wilk normality test
##
## data: dif0
## W = 0.99773, p-value = 0.186
No se encontró una diferencia estadísticamente significativa entre los efectos de la dieta 1 y la dieta 2 (p > 0.05). Es decir, ambas dietas parecen tener un efecto similar en el cambio de peso tras 6 semanas.
Como el p-valor es mayor que 0.05, no se rechaza la normalidad. Por tanto, es válido usar la prueba t apareada en este caso.
Tipo de dieta 1 vs Tipo de dieta 3
##
## Paired t-test
##
## data: tipo_dieta1 and tipo_dieta3
## t = -3.5725, df = 999, p-value = 0.0003705
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -2.856739 -0.831061
## sample estimates:
## mean difference
## -1.8439
##
## Shapiro-Wilk normality test
##
## data: dif1
## W = 0.99802, p-value = 0.2898
Existe una diferencia estadísticamente significativa entre las dietas 1 y 3 (p < 0.01). En promedio, la dieta 3 produjo una mayor pérdida de peso que la dieta 1.
No hay evidencia de que las diferencias se desvíen de la normalidad (p > 0.05), por lo tanto, el uso de la prueba t apareada es apropiado.
Tipo de dieta 2 vs Tipo de dieta 3
##
## Paired t-test
##
## data: tipo_dieta2 and tipo_dieta3
## t = -3.6211, df = 999, p-value = 0.0003081
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -3.2579121 -0.9678879
## sample estimates:
## mean difference
## -2.1129
##
## Shapiro-Wilk normality test
##
## data: dif2
## W = 0.99796, p-value = 0.2672
Hay una diferencia estadísticamente significativa entre la dieta 2 y la dieta 3 (p < 0.01). En promedio, la dieta 3 generó una mayor pérdida de peso que la dieta 2.
No hay evidencia de que las diferencias se desvíen de la normalidad (p > 0.05), por lo que la prueba t es válida.
Edad
Estatura
peso_inicial
peso_6_semanas
Chi-Square Q-Q Plot (estándar):
Muestra cómo las distancias de Mahalanobis observadas se comparan con la distribución χ² teórica.
Los outliers son observaciones cuya distancia al centro de datos es inusualmente grande.
Adjusted Q-Q Plot (robusto):
Usa estimaciones robustas de covarianza (menos sensibles a outliers).
El hecho de que ambos gráficos coincidan sugiere que la detección es consistente.
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99781, p-value = 0.2123
## Test H p value MVN
## 1 Royston 7.242771 0.1236017 YES
Se observa un p-valor relativamente alto (mayor que 0.05) lo que indica fuerte evidencia para no rechazar la normalidad multivariante.
El gráfico Chi-Square Q-Q muestra:
## Test Statistic p value Result
## 1 Mardia Skewness 23.5679383267095 0.261774878843442 YES
## 2 Mardia Kurtosis -0.847858376406756 0.396516847716496 YES
## 3 MVN <NA> <NA> YES
La prueba de asimetría no es significativa (p > 0.05), lo que indica que no hay evidencia suficiente para rechazar la normalidad en cuanto a la asimetría. Es decir, la distribución multivariada no muestra una asimetría significativa.
La prueba de curtosis tampoco es significativa (p > 0.05). Por tanto, no se rechaza la normalidad multivariante en cuanto a la curtosis. La “forma” de la distribución en términos de colas está dentro de lo esperado.
Como ambas pruebas individuales (asimetría y curtosis) fueron no significativas, el resultado global sugiere que los datos siguen una distribución normal multivariante.
## Test HZ p value MVN
## 1 Henze-Zirkler 0.7887264 0.9628001 YES
El p-value es muy alto (0.9628), por lo que no se rechaza la hipótesis nula de normalidad multivariante.
El resultado “YES” confirma que los datos pueden considerarse como provenientes de una distribución normal multivariante.
## Test E df p value MVN
## 1 Doornik-Hansen 11.56595 8 0.1716458 YES
La prueba de Doornik-Hansen evalúa si los datos se distribuyen normalmente en múltiples dimensiones, transformando los datos para aproximar una distribución chi-cuadrado. Dado que el p-value es 0.1716, es decir, mayor a 0.05, no se rechaza la hipótesis nula de normalidad multivariante.
El resultado “YES” indica que, según este test, los datos sí cumplen con la normalidad multivariante.
## Test Statistic p value MVN
## 1 E-statistic 0.9213286 0.72 YES
## Multivariate Paired Hotelling T Square Test
##
## Hotelling T Sqaure Statistic = 85.17232
## F value = 21.229 , df1 = 4 , df2 = 996 , p-value: <2e-16
##
## Descriptive Statistics (The First Treatment)
##
## Edad Estatura peso_inicial peso_6_semanas
## Means 39.659000 170.31600 73.101000 69.869400
## Sd 9.753658 10.96779 8.331039 8.471666
##
##
## Descriptive Statistics (The Second Treatment)
##
## Edad Estatura peso_inicial peso_6_semanas
## Means 37.35800 167.123000 73.531000 68.455500
## Sd 10.32242 9.971023 7.390647 8.280398
##
##
## Descriptive Statistics (The Differences)
##
## Edad Estatura peso_inicial peso_6_semanas
## Means -2.3010 -3.193 0.43000 -1.41390
## Sd 14.5923 14.694 11.38854 11.93939
Resultado significativo (p = 2E^-16):
El p-value es extremadamente pequeño (prácticamente cero), lo que
indica que hay diferencias multivariadas significativas
entre el primer y tercer tratamiento.
Esto significa que, en conjunto, las variables Edad, Estatura, peso_inicial y peso_6_semanas son significativamente distintas entre ambos grupos.
Análisis de las diferencias:
En promedio, la Edad y la Estatura disminuyen del primer al tercer tratamiento.
El peso inicial se mantiene similar.
El peso a las 6 semanas también baja, en promedio, de 69.86 a 68.45 kg.
#Usando la libreria ICSNP
xbar <- colMeans(X)
xbar #Promedio de las diferencias entre las categorias de ambas variables## Edad Estatura peso_inicial peso_6_semanas
## 2.3010 3.1930 -0.4300 1.4139
##
## Hotelling's one sample T2-test
##
## data: X
## T.2 = 29.644, df1 = 4, df2 = 996, p-value < 2.2e-16
## alternative hypothesis: true location is not equal to c(3.5,1.5,-4,2)
El análisis muestra un estadístico T² = 29.644 con un p-valor extremadamente significativo (< 2.2e-16). Este resultado indica que existe una diferencia multivariada altamente significativa entre las medias observadas en tus datos y el vector de referencia propuesto[3.5,1.5,−4,2].
La magnitud elevada del estadístico T² sugiere que las discrepancias son notorias y sustanciales en al menos algunas de las variables analizadas.
Al rechazar la hipótesis nula (p < 0.05), concluimos que el perfil multivariado real de tus datos difiere de manera importante y sistemática del patrón esperado definido por el vector de comparación. Específicamente, este resultado sugiere que las medias de las variables consideradas no se ajustan al valor teórico que se planteó.
Aunque la prueba T² de Hotelling detecta una diferencia global, no especifica qué variables concretas son responsables de esa diferencia. Sin embargo, en este tipo de situaciones es común que algunas variables individuales —como podría ser el peso inicial o el peso a las 6 semanas— presenten las mayores discrepancias respecto al valor hipotético.
Simulamos una base de datos de 60 estudiantes (30 de Ciencias y 30 de Humanidades) con tres variables numéricas:
horas_estudio: Horas semanales
dedicadas al estudiocalificacion: Puntaje académico
(0-20)sueño: Horas promedio de sueño
diarioset.seed(123) # Para reproducibilidad
# Definir parámetros
mu_ciencias <- c(horas_estudio = 20, calificacion = 15, sueño = 7)
mu_humanidades <- c(15, 12, 6)
Sigma <- matrix(c(3, 1.2, -0.4,
1.2, 2.5, -0.6,
-0.4, -0.6, 1.5), ncol = 3)
# Generar datos
datos <- data.frame(
facultad = rep(c("Ciencias", "Humanidades"), each = 30),
horas_estudio = c(mvrnorm(30, mu_ciencias, Sigma)[,1],
mvrnorm(30, mu_humanidades, Sigma)[,1]),
calificacion = c(mvrnorm(30, mu_ciencias, Sigma)[,2],
mvrnorm(30, mu_humanidades, Sigma)[,2]),
sueño = c(mvrnorm(30, mu_ciencias, Sigma)[,3],
mvrnorm(30, mu_humanidades, Sigma)[,3])
)
# Convertir facultad a factor
datos$facultad <- as.factor(datos$facultad)Explicación:
- Usamos mvrnorm() del paquete MASS para
simular datos multivariados normales.
- La matriz Sigma controla las correlaciones entre
variables (ej: estudiantes que estudian más tienden a dormir menos).
## Descriptive Statistics
## datos
## N: 60
##
## calificacion horas_estudio sueño
## ----------------- -------------- --------------- --------
## Mean 13.30 17.62 6.44
## Std.Dev 2.24 3.10 1.27
## Min 8.88 12.02 3.15
## Q1 11.68 14.93 5.56
## Median 13.10 17.57 6.42
## Q3 15.31 20.41 7.47
## Max 18.15 23.87 8.97
## MAD 2.84 4.14 1.43
## IQR 3.59 5.39 1.86
## CV 0.17 0.18 0.20
## Skewness 0.10 0.03 -0.11
## SE.Skewness 0.31 0.31 0.31
## Kurtosis -0.99 -1.23 -0.48
## N.Valid 60.00 60.00 60.00
## N 60.00 60.00 60.00
## Pct.Valid 100.00 100.00 100.00
datos %>%
filter(facultad == "Ciencias") %>%
dplyr::select(horas_estudio, calificacion, sueño) %>%
descr() -> A
datos %>%
filter(facultad == "Humanidades") %>%
dplyr::select(horas_estudio, calificacion, sueño) %>%
descr() -> B
A;B## Descriptive Statistics
## datos
## N: 30
##
## calificacion horas_estudio sueño
## ----------------- -------------- --------------- --------
## Mean 15.02 20.22 6.82
## Std.Dev 1.56 1.70 1.28
## Min 11.08 16.57 4.53
## Q1 13.96 18.84 5.84
## Median 15.31 20.41 6.82
## Q3 16.22 21.51 7.83
## Max 18.15 23.87 8.97
## MAD 1.64 1.97 1.47
## IQR 2.20 2.65 1.95
## CV 0.10 0.08 0.19
## Skewness -0.40 -0.20 -0.07
## SE.Skewness 0.43 0.43 0.43
## Kurtosis -0.29 -0.64 -1.29
## N.Valid 30.00 30.00 30.00
## N 30.00 30.00 30.00
## Pct.Valid 100.00 100.00 100.00
## Descriptive Statistics
## datos
## N: 30
##
## calificacion horas_estudio sueño
## ----------------- -------------- --------------- --------
## Mean 11.59 15.02 6.05
## Std.Dev 1.28 1.62 1.15
## Min 8.88 12.02 3.15
## Q1 10.84 13.88 5.34
## Median 11.75 14.93 6.05
## Q3 12.35 16.11 6.84
## Max 14.04 18.12 8.12
## MAD 1.14 1.71 1.17
## IQR 1.46 2.22 1.49
## CV 0.11 0.11 0.19
## Skewness -0.11 0.13 -0.44
## SE.Skewness 0.43 0.43 0.43
## Kurtosis -0.67 -0.81 -0.12
## N.Valid 30.00 30.00 30.00
## N 30.00 30.00 30.00
## Pct.Valid 100.00 100.00 100.00
El promedio de calificación es de 15.02, mientras que el de horas de estudio es de 20.22 y el de sueño es de 6.82 horas.
Las variables presentan una variabilidad moderada, con desviaciones estándar que van de 1.28 a 1.70.
La distribución de las variables es aproximadamente simétrica, con valores de skewness cercanos a cero.
El coeficiente de variación es bajo para calificación y horas de estudio, lo que indica una menor dispersión relativa respecto a sus medias.
El promedio de calificación es de 11.59, notablemente menor que en Ciencias. Las horas de estudio también son menores, con un promedio de 15.02, y el sueño es de 6.05 horas.
La dispersión es similar a la observada en Ciencias, aunque ligeramente menor en calificación.
La distribución de las variables también es cercana a la simetría, con skewness leve y kurtosis negativa, sugiriendo colas menos pesadas que una normal.
El coeficiente de variación se mantiene bajo en todas las variables.
En promedio, los estudiantes de la Facultad de Ciencias presentan mayores calificaciones (15.02), más horas de estudio (20.22) y ligeramente más horas de sueño (6.82) en comparación con los de Humanidades, quienes tienen promedios de 11.59, 15.02 y 6.05 respectivamente. Esta diferencia se refleja también en los valores globales (conjuntos), donde los promedios se sitúan en 13.30 para calificación, 17.62 para horas de estudio y 6.44 para sueño, ubicándose entre los valores individuales de ambas facultades.
Las medidas de dispersión indican una variabilidad mayor en el conjunto total que en los grupos individuales, lo cual es esperable dado que se están combinando dos poblaciones con medias distintas.
Tanto en Ciencias como en Humanidades, las distribuciones de las variables se muestran aproximadamente simétricas (skewness cercanos a cero) y sin colas pesadas (kurtosis negativa), lo cual también se mantiene en el conjunto total.
p1 <- ggplot(datos, aes(x = facultad, y = horas_estudio, fill = facultad)) +
geom_boxplot() +
labs(title = "Horas de Estudio por Facultad",
y = "Horas/semana", x = "") +
scale_fill_manual(values = c("#1f77b4", "#ff7f0e")) +
theme_minimal()
p2 <- ggplot(datos, aes(x = facultad, y = calificacion, fill = facultad)) +
geom_boxplot() +
labs(title = "Calificaciones por Facultad",
y = "Puntaje (0-20)", x = "") +
scale_fill_manual(values = c("#1f77b4", "#ff7f0e")) +
theme_minimal()
grid.arrange(p1, p2, ncol = 2)Hallazgos:
- En el gráfico de horas de estudio, la línea negra dentro de la caja
(la mediana) es más alta en la Facultad de Ciencias, lo que indica que
estos estudiantes estudian más horas por semana.
En el gráfico de calificaciones, la mediana también es más alta en Ciencias, lo que muestra que obtienen mejores puntajes.
Las cajas y los bigotes muestran que la mayoría de los datos en Ciencias están en niveles más altos que en Humanidades.
Estas diferencias visuales reflejan que, en general, los estudiantes de Ciencias tienen mejor rendimiento académico y mayor dedicación al estudio.
Por ello, se considera apropiado aplicar la prueba de Hotelling para verificar si estas diferencias también son estadísticamente significativas.
# Densidades
d1 <- ggplot(datos, aes(x = horas_estudio, fill = facultad)) +
geom_density(alpha = 0.6) +
labs(title = "Distribución de Horas de Estudio") +
theme_minimal()
# Scatterplot
s1 <- ggplot(datos, aes(x = horas_estudio, y = calificacion, color = facultad)) +
geom_point(alpha = 0.8) +
labs(title = "Relación Horas de Estudio vs Calificación") +
theme_minimal()
grid.arrange(d1, s1, nrow = 2)Patrones identificados:
1. Bimodalidad en horas de estudio (pico en ~15 y ~20
horas).
2. Correlación positiva entre horas de estudio y
calificaciones (especialmente en Ciencias).
Prueba t
##
## Welch Two Sample t-test
##
## data: datos$horas_estudio[datos$facultad == "Ciencias"] and datos$horas_estudio[datos$facultad == "Humanidades"]
## t = 12.173, df = 57.867, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 4.351635 6.064526
## sample estimates:
## mean of x mean of y
## 20.22494 15.01686
##
## Shapiro-Wilk normality test
##
## data: datos$horas_estudio[datos$facultad == "Ciencias"]
## W = 0.97688, p-value = 0.738
##
## Shapiro-Wilk normality test
##
## data: datos$horas_estudio[datos$facultad == "Humanidades"]
## W = 0.98113, p-value = 0.8546
##
## Welch Two Sample t-test
##
## data: datos$calificacion[datos$facultad == "Ciencias"] and datos$calificacion[datos$facultad == "Humanidades"]
## t = 9.3037, df = 55.8, p-value = 6.048e-13
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 2.691851 4.169282
## sample estimates:
## mean of x mean of y
## 15.01622 11.58565
##
## Shapiro-Wilk normality test
##
## data: datos$calificacion[datos$facultad == "Ciencias"]
## W = 0.97765, p-value = 0.7603
##
## Shapiro-Wilk normality test
##
## data: datos$calificacion[datos$facultad == "Humanidades"]
## W = 0.98783, p-value = 0.9753
##
## Welch Two Sample t-test
##
## data: datos$sueño[datos$facultad == "Ciencias"] and datos$sueño[datos$facultad == "Humanidades"]
## t = 2.4549, df = 57.329, p-value = 0.01715
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.1419437 1.3975693
## sample estimates:
## mean of x mean of y
## 6.823052 6.053295
##
## Shapiro-Wilk normality test
##
## data: datos$sueño[datos$facultad == "Ciencias"]
## W = 0.95513, p-value = 0.2315
##
## Shapiro-Wilk normality test
##
## data: datos$sueño[datos$facultad == "Humanidades"]
## W = 0.9708, p-value = 0.5614
En este análisis visualizamos el comportamiento conjunto de pares de variables académicas entre estudiantes de las facultades de Ciencias y Humanidades, mediante elipses de confianza del 99%.
Las combinaciones exploradas son: - Horas de estudio vs Calificación - Horas de estudio vs Sueño - Calificación vs Sueño
### Gráfico para el segundo par de variables (horas_estudio y sueño)
### Gráfico para el tercer par de variables (calificación y sueño)
#### Distancia de Mahalanobis
Para detectar posibles outliers multivariados, utilizamos la distancia de Mahalanobis entre las observaciones de las facultades de Ciencias y Humanidades. En este caso, comparamos las observaciones de ambas facultades para verificar si existen puntos atípicos.
- Chi-Square Q-Q Plot (estándar):
- Muestra cómo las distancias de Mahalanobis observadas se comparan con la distribución χ² teórica.
- Adjusted Q-Q Plot (robusto):
- Usa estimaciones robustas de covarianza (menos sensibles a outliers).
- El hecho de que ambos gráficos coincidan sugiere que la detección es consistente.
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.95073, p-value = 0.1768
Prueba de Shapiro-Wilk:
Esta prueba evalúa la normalidad multivariada transformando la
matriz de diferencias (X) y aplicando el test a sus
transpuestas.
En nuestro caso, el p-valor fue 0.1768, que es mayor a 0.05, por lo tanto:
No se rechaza la hipótesis nula de normalidad.
Existe evidencia para asumir que la matriz de diferencias proviene de una distribución normal multivariada.
## Test H p value MVN
## 1 Royston 1.018725 0.7964468 YES
Se observa un p-valor mayor al p-valor, por lo que los datos pueden ser considerados como provenientes de una distribución normal multivariada.
El gráfico Chi-Square Q-Q muestra:
Desviación sistemática de los puntos respecto a la línea teórica (especialmente en valores altos)
Patrón lineal que refuerza la conclusión de normalidad #### Prueba de normalidad multivariante de Mardia
La prueba de Mardia es una prueba comúnmente utilizada para detectar la normalidad multivariada en los datos. En esta prueba, se evalúan dos aspectos de la distribución de los datos:
## Test Statistic p value Result
## 1 Mardia Skewness 5.26417266079858 0.872846818377872 YES
## 2 Mardia Kurtosis -1.10504586941767 0.269139713994496 YES
## 3 MVN <NA> <NA> YES
Dado que la prueba de Mardia ha indicado una asimetría significativa y una curtosis no normal, podemos concluir que los datos no siguen una distribución normal multivariada según esta prueba.
Es importante mencionar que, a pesar de los resultados de Mardia, otras pruebas como Royston o Henze-Zirkler podrían no haber mostrado la misma conclusión. Esto se debe a que diferentes pruebas tienen distintas sensibilidades y pueden detectar distintos tipos de desviaciones de la normalidad. En este caso, las pruebas de asimetría y curtosis detectadas por Mardia sugieren que los datos no son normales, aunque las demás pruebas podrían haber sido más permisivas.
En resumen, aunque algunas pruebas no rechacen la normalidad, la prueba de Mardia proporciona evidencia fuerte de que los datos no siguen una distribución normal multivariada debido a la asimetría y la curtosis observadas.
La prueba de Henze-Zirkler evalúa la normalidad multivariada tomando en cuenta la forma general de la distribución, incluida la asimetría y la curtosis
## Test HZ p value MVN
## 1 Henze-Zirkler 0.5569979 0.619313 YES
La prueba de Henze-Zirkler no rechaza la hipótesis de normalidad multivariada, lo que implica que los datos tienen una distribución normal multivariada. Esto está en concordancia con las pruebas de Royston y Shapiro-Wilk, que también sugieren que los datos siguen una distribución normal multivariada. Sin embargo, otras pruebas como la de Mardia indicaron una posible violación de la normalidad debido a la asimetría y la curtosis.
Este resultado refuerza la idea de que las conclusiones sobre la normalidad de los datos pueden variar según el tipo de prueba aplicada.
La prueba de Doornik-Hansen evalúa la normalidad multivariada y es sensible a la forma de la distribución, siendo especialmente útil para muestras pequeñas y medianas.
## Test E df p value MVN
## 1 Doornik-Hansen 1.211034 6 0.9763362 YES
El p-valor obtenido de la prueba de Doornik-Hansen es 0.976, que es mucho mayor que el umbral de 0.05. Esto sugiere que no hay evidencia suficiente para rechazar la hipótesis nula de normalidad multivariada. Es decir, según esta prueba, los datos siguen una distribución normal multivariada.
La prueba de Doornik-Hansen no rechaza la hipótesis de normalidad multivariada, lo que indica que los datos en cuestión podrían seguir una distribución normal multivariada, a diferencia de lo indicado por otras pruebas como Mardia o Royston, que habían rechazado la normalidad.
Es importante tener en cuenta que las pruebas de normalidad multivariada pueden mostrar resultados diferentes dependiendo de las características de los datos y de la sensibilidad de cada prueba.
Aunque algunas pruebas sugieren que los datos podrían seguir una distribución normal multivariada (como la de Royston, Henze-Zirkler y Doornik-Hansen), otras pruebas (como Mardia y Szekely-Rizzo) indican que los datos presentan asimetría significativa y colas no normales, lo que sugiere que los datos no siguen una distribución normal multivariada en general.
## Multivariate Paired Hotelling T Square Test
##
## Hotelling T Sqaure Statistic = 213.5373
## F value = 66.27 , df1 = 3 , df2 = 27 , p-value: 1.42e-12
##
## Descriptive Statistics (The First Treatment)
##
## calificacion horas_estudio sueño
## Means 15.016220 20.224943 6.823052
## Sd 1.563454 1.696274 1.278399
##
##
## Descriptive Statistics (The Second Treatment)
##
## calificacion horas_estudio sueño
## Means 11.585654 15.016862 6.053295
## Sd 1.278472 1.616764 1.146853
##
##
## Descriptive Statistics (The Differences)
##
## calificacion horas_estudio sueño
## Means -3.430566 -5.208081 -0.7697565
## Sd 2.114889 2.403818 1.9816868
Calificación: Las diferencias en la media de calificación entre las dos facultades son de -3.43, con una desviación estándar de 2.11. Esto indica que los estudiantes de Ciencias tienen, en promedio, calificaciones más altas que los de Humanidades.
Horas de estudio: La diferencia en las horas de estudio es de -5.21, con una desviación estándar de 2.40. Los estudiantes de Ciencias estudian más horas, en promedio, que los de Humanidades.
Sueño: La diferencia en el promedio de horas de sueño es de -0.77, con una desviación estándar de 1.98. Los estudiantes de Humanidades tienen, en promedio, más horas de sueño que los de Ciencias.
# Usando la librería ICSNP
xbar <- colMeans(datos_ciencias[, c("calificacion", "horas_estudio", "sueño")])
xbar # Promedio de las diferencias entre las categorías de ambas variables## calificacion horas_estudio sueño
## 15.016220 20.224943 6.823052
# Realizar la prueba T² de Hotelling respecto a un vector de medias conocido
HotellingsT2(datos_ciencias[, c("calificacion", "horas_estudio", "sueño")], mu=c(15, 18, 7))##
## Hotelling's one sample T2-test
##
## data: datos_ciencias[, c("calificacion", "horas_estudio", "sueño")]
## T.2 = 17.022, df1 = 3, df2 = 27, p-value = 2.089e-06
## alternative hypothesis: true location is not equal to c(15,18,7)
Se presenta un análisis MANOVA en un Diseño Completamente al Azar (DCA), aplicado a un conjunto de datos. El objetivo es evaluar el efecto de cuatro tratamientos experimentales sobre tres variables clave en un cultivo.
Estructura del experimento:
rm(list = ls())
datos <- read_excel("papas_fertilizantes.xlsx")
datos$Tratamiento <- as.factor(datos$Tratamiento)
str(datos)## tibble [1,500 × 4] (S3: tbl_df/tbl/data.frame)
## $ Tratamiento: Factor w/ 4 levels "A","B","C","D": 1 1 1 1 1 1 1 1 1 1 ...
## $ Largo : num [1:1500] 13 15 15.2 13.1 12.5 ...
## $ Ancho : num [1:1500] 4.93 4.88 5.38 4.77 4.04 ...
## $ Peso : num [1:1500] 269 243 236 236 198 ...
# Separar datos por tratamiento
tratA <- datos %>% filter(Tratamiento == "A") %>% dplyr::select(Largo, Ancho, Peso)
tratB <- datos %>% filter(Tratamiento == "B") %>% dplyr::select(Largo, Ancho, Peso)
tratC <- datos %>% filter(Tratamiento == "C") %>% dplyr::select(Largo, Ancho, Peso)
tratD <- datos %>% filter(Tratamiento == "D") %>% dplyr::select(Largo, Ancho, Peso)##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99485, p-value = 0.2451
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99635, p-value = 0.5491
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99072, p-value = 0.01835
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99663, p-value = 0.6246
Conclusión: 3 de 4 fertilizantes cumplen con el supuesto de normalidad, la unica que no cumple es el fertilizante C, eso nos indica que hay mayor variabilidad en cuanto al peso de las papas
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: Y
## Chi-Sq (approx.) = 325.73, df = 18, p-value < 2.2e-16
Conclusión: Cada fertilizante produce no solo diferencias en los promedios (Largo, Ancho, Peso), sino también en la variabilidad individual de cada característica.Las relaciones entre variables morfológicas cambian según el fertilizante. Por ejemplo: en un fertilizante el Largo y Peso pueden estar fuertemente asociados, mientras que en otro no
## Bartlett's Sphericity Test
##
## Chi-Squared Value = 213.2051 , df = 3 and p-value: <2e-16
##
## Correlation Matrix
##
## Largo Ancho Peso
## Largo 1.0000000 0.1607042 0.1259117
## Ancho 0.1607042 1.0000000 0.3226589
## Peso 0.1259117 0.3226589 1.0000000
Conclusión: Existen correlaciones significativas
entre al menos algunas de las variables respuesta (Largo, Ancho, Peso),
esto nos indica que los atributos físicos de las papas están
interrelacionados.
- Analisis de relaciones: - Ancho-Peso: Las papas más anchas tienden a
ser más pesadas (relación más fuerte) - Largo-Ancho: El largo no predice
fuertemente el ancho (papas largas no necesariamente anchas) -
Largo-Peso: El peso depende más del ancho que del largo
modelo <- manova(cbind(Largo, Ancho, Peso) ~ Tratamiento, data = datos)
#Determinación de la matriz residual y la matriz factorial del MANOVA
Matrices <- summary(modelo)$SS
F <- Matrices$Tratamiento
W <- Matrices$Residuals
# Variabilidad explicada por el factor (Tratamientos)
F## Largo Ancho Peso
## Largo 1184.1870 729.7497 29418.83
## Ancho 729.7497 455.0107 18473.27
## Peso 29418.8292 18473.2663 755443.56
## Largo Ancho Peso
## Largo 11682.4353 -119.3639 -5220.7196
## Ancho -119.3639 666.2063 -168.1891
## Peso -5220.7196 -168.1891 2115112.6985
## Largo Ancho Peso
## Largo 12866.6224 610.3859 24198.11
## Ancho 610.3859 1121.2169 18305.08
## Peso 24198.1095 18305.0773 2870556.25
## [1] 0.5430053
Interpretación: El valor eta = 0.543 confirma que los fertilizantes explican más de la mitad de la variabilidad multivariada en las características de las papas, esto indica que la elección del fertilizante es un factor determinante en las características combinadas de las papas.
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 3 0.54475 110.64 9 4488 < 2.2e-16 ***
## Residuals 1496
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Wilks approx F num Df den Df Pr(>F)
## Tratamiento 3 0.45699 153.35 9 3636.2 < 2.2e-16 ***
## Residuals 1496
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Tratamiento 3 1.1844 196.43 9 4478 < 2.2e-16 ***
## Residuals 1496
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Roy approx F num Df den Df Pr(>F)
## Tratamiento 3 1.1812 589.01 3 1496 < 2.2e-16 ***
## Residuals 1496
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A continuacion se aprecia que las 3 variables respuesta son significativas lo que indica que las todas las variables contribuyeron para que se rechace la H0 que dice que los 4 vectores de promedios son iguales y se concluye que al menos uno de los vectores de promedios es diferente
## Response Largo :
## Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento 3 1184.2 394.73 50.547 < 2.2e-16 ***
## Residuals 1496 11682.4 7.81
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Ancho :
## Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento 3 455.01 151.670 340.58 < 2.2e-16 ***
## Residuals 1496 666.21 0.445
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Peso :
## Df Sum Sq Mean Sq F value Pr(>F)
## Tratamiento 3 755444 251815 178.11 < 2.2e-16 ***
## Residuals 1496 2115113 1414
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Tratam <- c("A", "B", "C", "D")
comb <- t(combn(length(Tratam), 2))
for(i in 1:nrow(comb)){
modelo.comp <- manova(cbind(Largo, Ancho, Peso) ~ Tratamiento, data = datos,
subset = Tratamiento %in% Tratam[comb[i,]])
cat("Trat:", Tratam[comb[i,]][1], "y", Tratam[comb[i,]][2], "\n")
print(summary(modelo.comp, test = "Pillai"))
cat("\n")
}## Trat: A y B
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.26671 90.446 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Trat: A y C
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.54033 292.3 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Trat: A y D
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.67616 519.21 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Trat: B y C
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.20193 62.918 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Trat: B y D
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.44087 196.07 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Trat: C y D
## Df Pillai approx F num Df den Df Pr(>F)
## Tratamiento 1 0.14264 41.372 3 746 < 2.2e-16 ***
## Residuals 748
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Conclusión Final: El tipo de fertilizante tiene un efecto significativo en las características morfológicas de las papas. El análisis MANOVA permitió identificar estas diferencias de manera conjunta considerando la interrelación entre las variables Largo, Ancho y Peso.
El presente informe describe un conjunto de datos experimentales con el propósito de evaluar el comportamiento de cinco variedades de arroz bajo condiciones controladas.
El diseño experimental contempla:
V1,
V2, V3, V4 y
V5.Parcela_1 hasta Parcela_10.Se importa la base de datos que contiene evaluaciones de distintas variedades de arroz en un Diseño en Bloques Completos al Azar (DBCA). Se realiza la conversión de las variables categóricas (Variedad y Parcela) a factores, y se inspecciona la estructura de los datos para asegurar su correcta codificación antes del análisis estadístico multivariado.
library(tidyverse)
library(readr)
datos <- read_delim("evaluacion_arroz.csv",
delim = ";", # coma como separador de columnas
locale = locale(decimal_mark = ".")) # punto como separador decimal
datos <- as.data.frame(datos)
head(datos)## Variedad Parcela Rendimiento Altura_planta N_macollos Humedad_grano
## 1 V1 P1 561.1288 104.62529 13.70116 13.61434
## 2 V2 P1 523.0591 98.62061 13.84415 13.80729
## 3 V3 P1 570.8939 103.85367 12.15053 14.49300
## 4 V4 P1 598.9859 103.88487 12.78659 14.05133
## 5 V5 P1 612.1280 100.02033 15.41638 16.61576
## 6 V1 P2 516.8163 90.01259 13.93168 13.42054
## 'data.frame': 1000 obs. of 6 variables:
## $ Variedad : chr "V1" "V2" "V3" "V4" ...
## $ Parcela : chr "P1" "P1" "P1" "P1" ...
## $ Rendimiento : num 561 523 571 599 612 ...
## $ Altura_planta: num 104.6 98.6 103.9 103.9 100 ...
## $ N_macollos : num 13.7 13.8 12.2 12.8 15.4 ...
## $ Humedad_grano: num 13.6 13.8 14.5 14.1 16.6 ...
## [1] "V1" "V2" "V3" "V4" "V5"
## [1] "P1" "P2" "P3" "P4" "P5" "P6" "P7" "P8" "P9" "P10"
# Luego, si los valores coinciden, hacer la conversión
datos$Variedad <- factor(datos$Variedad, levels = c("V1", "V2", "V3", "V4", "V5"),
labels = c("V1", "V2", "V3", "V4", "V5"))
datos$Parcela <- factor(datos$Parcela, levels = c("P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10"),
labels = c("P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10"))
str(datos)## 'data.frame': 1000 obs. of 6 variables:
## $ Variedad : Factor w/ 5 levels "V1","V2","V3",..: 1 2 3 4 5 1 2 3 4 5 ...
## $ Parcela : Factor w/ 10 levels "P1","P2","P3",..: 1 1 1 1 1 2 2 2 2 2 ...
## $ Rendimiento : num 561 523 571 599 612 ...
## $ Altura_planta: num 104.6 98.6 103.9 103.9 100 ...
## $ N_macollos : num 13.7 13.8 12.2 12.8 15.4 ...
## $ Humedad_grano: num 13.6 13.8 14.5 14.1 16.6 ...
## Variedad Parcela Rendimiento Altura_planta N_macollos Humedad_grano
## 1 V1 P1 561.1288 104.62529 13.70116 13.61434
## 2 V2 P1 523.0591 98.62061 13.84415 13.80729
## 3 V3 P1 570.8939 103.85367 12.15053 14.49300
## 4 V4 P1 598.9859 103.88487 12.78659 14.05133
## 5 V5 P1 612.1280 100.02033 15.41638 16.61576
## 6 V1 P2 516.8163 90.01259 13.93168 13.42054
Prueba utilizada: Prueba de Shapiro-Wilk Multivariada
Hipótesis:
H₀:Los datos siguen una distribución normal multivariada.
H₁:: Los datos no siguen una distribución normal multivariada.
library(tidyverse)
parc1 = datos %>% filter(Parcela== "P1") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc2 = datos %>% filter(Parcela== "P2") %>%
dplyr::select( Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc3 = datos %>% filter(Parcela== "P3") %>%
dplyr::select( Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc4 = datos %>% filter(Parcela== "P4") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc5 = datos %>% filter(Parcela== "P5") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc6 = datos %>% filter(Parcela== "P6") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc7 = datos %>% filter(Parcela== "P7") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc8 = datos %>% filter(Parcela== "P8") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc9 = datos %>% filter(Parcela== "P9") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
parc10 = datos %>% filter(Parcela== "P10") %>%
dplyr::select(Rendimiento, Altura_planta, N_macollos, Humedad_grano)
#Ejecutamos el test
library(mvnormtest)
mshapiro.test(t(parc1))##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.98598, p-value = 0.3727
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.97124, p-value = 0.0275
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.97823, p-value = 0.09675
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.98069, p-value = 0.1503
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.97796, p-value = 0.09208
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.97663, p-value = 0.07245
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.98803, p-value = 0.5101
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.97599, p-value = 0.06445
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.98004, p-value = 0.1338
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.98376, p-value = 0.2578
Conclusión general: Solo el grupo P2 presentó evidencia significativa (p < 0.05) para rechazar la normalidad multivariada. El resto de grupos no presentaron evidencia suficiente para rechazar H₀, por lo que se asume normalidad multivariada en general, aunque con una ligera violación en P2.
Prueba utilizada:
Box’s M test:
Hipótesis:
H₀:Las matrices varianza-covarianza son iguales entre los grupos.
H₁:Al menos una matriz de variaanza-covarianza difiere.
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: datos[, 3:6]
## Chi-Sq (approx.) = 96.973, df = 90, p-value = 0.289
## Summary for Box's M-test of Equality of Covariance Matrices
##
## Chi-Sq: 96.97255
## df: 90
## p-value: 0.289
##
## log of Covariance determinants:
## P1 P10 P2 P3 P4 P5 P6 P7
## 12.19054 12.43337 13.07821 12.20480 12.81953 12.41135 12.58394 12.38739
## P8 P9
## 12.97447 12.32000
##
## Eigenvalues:
## P1 P10 P2 P3 P4 P5
## 1 1553.4461600 1940.0028127 1832.236290 1529.0320797 1933.3313377 2064.7884392
## 2 32.3004261 41.1206659 39.557862 31.8598596 40.5728053 29.9121505
## 3 4.4566978 4.1773853 5.038287 5.0984854 5.4225543 4.1302928
## 4 0.8805773 0.7533134 1.310077 0.8042227 0.8683702 0.9626653
## P6 P7 P8 P9 pooled
## 1 1449.399640 1485.6962628 1882.276721 1335.152950 1700.122171
## 2 29.138199 30.3532268 31.817286 32.671696 34.225869
## 3 5.894682 6.2239226 6.584333 4.871831 5.279203
## 4 1.172263 0.8542285 1.093656 1.054659 1.004694
##
## Statistics based on eigenvalues:
## P1 P10 P2 P3 P4
## product 1.969179e+05 2.510399e+05 4.784032e+05 1.997459e+05 3.693602e+05
## sum 1.591084e+03 1.986054e+03 1.878143e+03 1.566795e+03 1.980195e+03
## precision 7.185957e-01 6.282642e-01 1.012536e+00 6.795256e-01 7.346665e-01
## max 1.553446e+03 1.940003e+03 1.832236e+03 1.529032e+03 1.933331e+03
## P5 P6 P7 P8 P9
## product 2.455723e+05 2.918342e+05 2.397580e+05 4.312599e+05 2.241336e+05
## sum 2.099794e+03 1.485605e+03 1.523128e+03 1.921772e+03 1.373751e+03
## precision 7.605651e-01 9.454434e-01 7.326351e-01 9.105803e-01 8.440302e-01
## max 2.064788e+03 1.449400e+03 1.485696e+03 1.882277e+03 1.335153e+03
## pooled
## product 3.086292e+05
## sum 1.740632e+03
## precision 8.233462e-01
## max 1.700122e+03
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: Y
## Chi-Sq (approx.) = 96.973, df = 90, p-value = 0.289
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: datos[3:6]
## Chi-Sq (approx.) = 44.222, df = 40, p-value = 0.2979
Conclusión: Dado que los p-valores son mayores a
0.05, no se rechaza H₀.
Se cumple el supuesto de homogeneidad de matrices de
varianza-covarianza.
Prueba de Ahmad et al
Hipótesis:
H₀:Todas las matrices de covarianza son iguales
H₁:Al menos una matriz es diferente.
library(covTestR)
maiz<- unique(datos$Parcela)
maiz1 <- lapply(maiz,
function(x){as.matrix(datos[datos$Parcela == x, 3:6])}
)
names(maiz1) <- maiz
Ahmad2017(maiz1)##
## Ahmad 2017 Homogeneity of Covariance Matrices Test
##
## data: P1, P2, P3, P4, P5, P6, P7, P8, P9 and P10
## Standard Normal = 260653384, Mean = 0, Variance = 1, p-value < 2.2e-16
## alternative hypothesis: true difference in covariance matrices is not equal to 0
Conclusión: Dado que el p-valor es muy pequeño
(menor a 0.05), se rechaza H₀.
No se cumple el supuesto de homogeneidad de matrices de
covarianza, según el test de Ahmad (2017).
Prueba Wrapper
Hipótesis:
H₀:Todas las matrices de covarianza son iguales
H₁:Al menos una difiere.
##
## Boxes' M Homogeneity of Covariance Matrices Test
##
## data: P1, P2, P3, P4, P5, P6, P7, P8, P9 and P10
## Chi-Squared = 98.542, df = 45450, p-value = 1
## alternative hypothesis: true difference in covariance matrices is not equal to 0
library(DFA.CANCOR)
HOMOGENEITY(data = datos[, -1], groups = 'Parcela',
variables = c('Rendimiento', 'Altura_planta',
'N_macollos', 'Humedad_grano')) ## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1540.17 136.46 35.27 12.45
## Altura_planta 136.46 43.02 9.50 2.86
## N_macollos 35.27 9.50 6.79 0.88
## Humedad_grano 12.45 2.86 0.88 1.10
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1826.37 94.03 36.32 18.55
## Altura_planta 94.03 43.98 5.62 3.13
## N_macollos 36.32 5.62 6.16 0.87
## Humedad_grano 18.55 3.13 0.87 1.65
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1518.89 114.46 42.78 12.78
## Altura_planta 114.46 40.33 6.04 2.27
## N_macollos 42.78 6.04 6.60 0.33
## Humedad_grano 12.78 2.27 0.33 0.97
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1921.30 139.49 53.33 19.03
## Altura_planta 139.49 50.77 5.66 3.04
## N_macollos 53.33 5.66 6.99 0.44
## Humedad_grano 19.03 3.04 0.44 1.13
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 2057.74 106.74 52.11 14.40
## Altura_planta 106.74 35.01 6.20 1.89
## N_macollos 52.11 6.20 5.91 0.77
## Humedad_grano 14.40 1.89 0.77 1.13
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1437.70 117.23 51.86 8.30
## Altura_planta 117.23 38.34 7.86 0.80
## N_macollos 51.86 7.86 8.34 0.35
## Humedad_grano 8.30 0.80 0.35 1.22
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1471.62 134.55 46.46 6.79
## Altura_planta 134.55 42.80 6.00 0.89
## N_macollos 46.46 6.00 7.77 0.75
## Humedad_grano 6.79 0.89 0.75 0.94
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1869.86 136.32 62.67 18.27
## Altura_planta 136.32 41.14 8.86 2.68
## N_macollos 62.67 8.86 9.42 1.13
## Humedad_grano 18.27 2.68 1.13 1.35
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1323.85 115.48 34.29 9.28
## Altura_planta 115.48 42.28 7.35 1.88
## N_macollos 34.29 7.35 6.38 0.95
## Humedad_grano 9.28 1.88 0.95 1.24
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1932.99 105.68 44.69 11.20
## Altura_planta 105.68 46.43 6.82 2.41
## N_macollos 44.69 6.82 5.70 0.81
## Humedad_grano 11.20 2.41 0.81 0.94
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1690.049 120.045 45.978 13.104
## Altura_planta 120.045 42.411 6.989 2.184
## N_macollos 45.978 6.989 7.006 0.727
## Humedad_grano 13.104 2.184 0.727 1.166
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1.000 0.448 0.423 0.295
## Altura_planta 0.448 1.000 0.405 0.311
## N_macollos 0.423 0.405 1.000 0.254
## Humedad_grano 0.295 0.311 0.254 1.000
## Log Determinant
## P1 12.191
## P2 13.078
## P3 12.205
## P4 12.820
## P5 12.411
## P6 12.584
## P7 12.387
## P8 12.974
## P9 12.320
## P10 12.433
## Pooled 12.640
Conclusión: Se cumple el supuesto de homogeneidad de las matrices de varianzas-covarianzas entre los grupos (parcelas)
Prueba de esfericidad de Bartlett
Hipótesis:
H₀:No estan correlacionas det(Rp)=1 (La matriz de correlación es la matriz identidad)
H₁:Al menos una difiere.(La matriz de correlación no es la matriz identidad)
library(psych)
options(scipen = 0)
cortest.bartlett(cor(datos[,c(-1, -2)]), n = nrow(datos[, c(-1, -2)]))## $chisq
## [1] 627.3808
##
## $p.value
## [1] 2.888833e-132
##
## $df
## [1] 6
## Bartlett's Sphericity Test
##
## Chi-Squared Value = 627.3808 , df = 6 and p-value: <2e-16
##
## Correlation Matrix
##
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1.0000000 0.4477554 0.4168608 0.2906873
## Altura_planta 0.4477554 1.0000000 0.4012487 0.3104042
## N_macollos 0.4168608 0.4012487 1.0000000 0.2462650
## Humedad_grano 0.2906873 0.3104042 0.2462650 1.0000000
Conclusión: Dado que el valor-p es mucho menor que 0.05, se rechaza la hipótesis nula, concluyéndose que existe una correlación significativa entre las variables. Por lo tanto, es adecuado aplicar análisis MANOVA .
Se realizó un análisis MANOVA para evaluar el efecto de los factores Variedad y Parcela sobre las variables de respuesta: Rendimiento, Altura de planta, Número de macollos y Humedad del grano.
modelo = manova(cbind(Rendimiento, Altura_planta, N_macollos,
Humedad_grano) ~Variedad + Parcela, data = datos)Se obtuvieron tres matrices de variabilidad:
F (SCOCF): Variabilidad explicada por el factor Variedad
B (SCOCB): Variabilidad explicada por el factor Parcela
W (SCOCR): Variabilidad no explicada (residual)
## List of 13
## $ coefficients : num [1:14, 1:4] 522.6 17.4 37.6 55.2 79.3 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:14] "(Intercept)" "VariedadV2" "VariedadV3" "VariedadV4" ...
## .. ..$ : chr [1:4] "Rendimiento" "Altura_planta" "N_macollos" "Humedad_grano"
## $ residuals : num [1:1000, 1:4] 38.5 -16.9 10.7 21.2 10.2 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1000] "1" "2" "3" "4" ...
## .. ..$ : chr [1:4] "Rendimiento" "Altura_planta" "N_macollos" "Humedad_grano"
## $ effects : num [1:1000, 1:4] -17684.3 324.8 89.1 -179.1 -793.5 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1000] "(Intercept)" "VariedadV2" "VariedadV3" "VariedadV4" ...
## .. ..$ : chr [1:4] "Rendimiento" "Altura_planta" "N_macollos" "Humedad_grano"
## $ rank : int 14
## $ fitted.values: num [1:1000, 1:4] 523 540 560 578 602 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1000] "1" "2" "3" "4" ...
## .. ..$ : chr [1:4] "Rendimiento" "Altura_planta" "N_macollos" "Humedad_grano"
## $ assign : int [1:14] 0 1 1 1 1 2 2 2 2 2 ...
## $ qr :List of 5
## ..$ qr : num [1:1000, 1:14] -31.6228 0.0316 0.0316 0.0316 0.0316 ...
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : chr [1:1000] "1" "2" "3" "4" ...
## .. .. ..$ : chr [1:14] "(Intercept)" "VariedadV2" "VariedadV3" "VariedadV4" ...
## .. ..- attr(*, "assign")= int [1:14] 0 1 1 1 1 2 2 2 2 2 ...
## .. ..- attr(*, "contrasts")=List of 2
## .. .. ..$ Variedad: chr "contr.treatment"
## .. .. ..$ Parcela : chr "contr.treatment"
## ..$ qraux: num [1:14] 1.03 1.06 1.06 1.06 1.05 ...
## ..$ pivot: int [1:14] 1 2 3 4 5 6 7 8 9 10 ...
## ..$ tol : num 1e-07
## ..$ rank : int 14
## ..- attr(*, "class")= chr "qr"
## $ df.residual : int 986
## $ contrasts :List of 2
## ..$ Variedad: chr "contr.treatment"
## ..$ Parcela : chr "contr.treatment"
## $ xlevels :List of 2
## ..$ Variedad: chr [1:5] "V1" "V2" "V3" "V4" ...
## ..$ Parcela : chr [1:10] "P1" "P2" "P3" "P4" ...
## $ call : language manova(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano) ~ Variedad + Parcela, data = datos)
## $ terms :Classes 'terms', 'formula' language cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano) ~ Variedad + Parcela
## .. ..- attr(*, "variables")= language list(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano), Variedad, Parcela)
## .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
## .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. ..$ : chr [1:3] "cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano)" "Variedad" "Parcela"
## .. .. .. ..$ : chr [1:2] "Variedad" "Parcela"
## .. ..- attr(*, "term.labels")= chr [1:2] "Variedad" "Parcela"
## .. ..- attr(*, "order")= int [1:2] 1 1
## .. ..- attr(*, "intercept")= int 1
## .. ..- attr(*, "response")= int 1
## .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## .. ..- attr(*, "predvars")= language list(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano), Variedad, Parcela)
## .. ..- attr(*, "dataClasses")= Named chr [1:3] "nmatrix.4" "factor" "factor"
## .. .. ..- attr(*, "names")= chr [1:3] "cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano)" "Variedad" "Parcela"
## $ model :'data.frame': 1000 obs. of 3 variables:
## ..$ cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano): num [1:1000, 1:4] 561 523 571 599 612 ...
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : NULL
## .. .. ..$ : chr [1:4] "Rendimiento" "Altura_planta" "N_macollos" "Humedad_grano"
## ..$ Variedad : Factor w/ 5 levels "V1","V2","V3",..: 1 2 3 4 5 1 2 3 4 5 ...
## ..$ Parcela : Factor w/ 10 levels "P1","P2","P3",..: 1 1 1 1 1 2 2 2 2 2 ...
## ..- attr(*, "terms")=Classes 'terms', 'formula' language cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano) ~ Variedad + Parcela
## .. .. ..- attr(*, "variables")= language list(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano), Variedad, Parcela)
## .. .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : chr [1:3] "cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano)" "Variedad" "Parcela"
## .. .. .. .. ..$ : chr [1:2] "Variedad" "Parcela"
## .. .. ..- attr(*, "term.labels")= chr [1:2] "Variedad" "Parcela"
## .. .. ..- attr(*, "order")= int [1:2] 1 1
## .. .. ..- attr(*, "intercept")= int 1
## .. .. ..- attr(*, "response")= int 1
## .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## .. .. ..- attr(*, "predvars")= language list(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano), Variedad, Parcela)
## .. .. ..- attr(*, "dataClasses")= Named chr [1:3] "nmatrix.4" "factor" "factor"
## .. .. .. ..- attr(*, "names")= chr [1:3] "cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano)" "Variedad" "Parcela"
## - attr(*, "class")= chr [1:5] "manova" "maov" "aov" "mlm" ...
## $Variedad
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 775117.50 117453.215 46685.9314 12454.1828
## Altura_planta 117453.21 17945.611 7088.4991 1891.9298
## N_macollos 46685.93 7088.499 2823.8935 754.7993
## Humedad_grano 12454.18 1891.930 754.7993 202.1265
##
## $Parcela
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 2749.86613 198.002951 -195.915882 -51.823991
## Altura_planta 198.00295 190.502681 1.373657 27.089926
## N_macollos -195.91588 1.373657 116.887804 -9.150788
## Humedad_grano -51.82399 27.089926 -9.150788 24.619267
##
## $Residuals
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 898030.9298 1391.3188 -1168.1051 519.2285
## Altura_planta 1391.3188 24040.8228 -169.2603 269.9063
## N_macollos -1168.1051 -169.2603 4112.4261 -35.4791
## Humedad_grano 519.2285 269.9063 -35.4791 952.3032
F = Matrices$Variedad
B = Matrices$Parcela
W = Matrices$Residuals
#Variabilidad explicada por el factor (Parcelas).
#Matriz suma de cuadrados y productos cruzados del factor (SCOCF)
F## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 775117.50 117453.215 46685.9314 12454.1828
## Altura_planta 117453.21 17945.611 7088.4991 1891.9298
## N_macollos 46685.93 7088.499 2823.8935 754.7993
## Humedad_grano 12454.18 1891.930 754.7993 202.1265
#Variabilidad explicada por los Variedad. Matriz suma de cuadrados
#y productos cruzados de Variedad (SCOCB)
B## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 2749.86613 198.002951 -195.915882 -51.823991
## Altura_planta 198.00295 190.502681 1.373657 27.089926
## N_macollos -195.91588 1.373657 116.887804 -9.150788
## Humedad_grano -51.82399 27.089926 -9.150788 24.619267
## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 898030.9298 1391.3188 -1168.1051 519.2285
## Altura_planta 1391.3188 24040.8228 -169.2603 269.9063
## N_macollos -1168.1051 -169.2603 4112.4261 -35.4791
## Humedad_grano 519.2285 269.9063 -35.4791 952.3032
#Variabilidad Total. Matriz suma de cuadrados y productos cruzados
#total (SCOCT) del factor
T = F + B + W
T## Rendimiento Altura_planta N_macollos Humedad_grano
## Rendimiento 1675898.30 119042.537 45321.9104 12921.5873
## Altura_planta 119042.54 42176.937 6920.6125 2188.9261
## N_macollos 45321.91 6920.612 7053.2075 710.1694
## Humedad_grano 12921.59 2188.926 710.1694 1179.0490
Se utilizó el determinante de las matrices para calcular la proporción de la variabilidad total explicada por los factores.
#Bondad de ajuste. Un valor proximo a 1 indica que la mayor parte
#de la variabilidad total puede atribuirse al factor, mientras que
#un valor proximo a 0 significa que el factor explica muy poco
#de esa variabilidad total.
eta2 = 1 - det(B + W)/det(T)
eta2## [1] 0.7136257
Conclusión : Este valor indica que aproximadamente el 73.13% de la variabilidad total en las variables de respuesta puede atribuirse al efecto conjunto de los factores Variedad y Parcela.
El objetivo es evaluar si existen diferencias significativas entre variedades de cultivo en varias variables respuesta (Rendimiento, Altura de planta, Número de macollos, Humedad del grano), y si el factor Parcela (como posible bloque) tiene efectos significativos sobre estas variables, justificando su inclusión como factor de bloqueo.
Prueba utilizada: Pillai, Wilks, Hotelling-Lawley, Roy.
Hipótesis para el factor Parcela:
H₀:Los vectores de medias poblacionales para las diferentes parcelas son iguales.
H₁: Al menos un vector de medias es diferente.
Hipótesis para el factor Variedad (bloqueo):
H₀: No existe diferencia entre variedades.
H₁:: Existen diferencias entre variedades (se justifica el bloqueo).
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.72084 54.187 16 3944 < 2.2e-16 ***
## Parcela 9 0.06296 1.752 36 3944 0.003685 **
## Residuals 986
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Wilks approx F num Df den Df Pr(>F)
## Variedad 4 0.28391 95.753 16 3003.8 < 2.2e-16 ***
## Parcela 9 0.93824 1.756 36 3685.5 0.003562 **
## Residuals 986
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Variedad 4 2.50555 153.70 16 3926 < 2.2e-16 ***
## Parcela 9 0.06455 1.76 36 3926 0.003443 **
## Residuals 986
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Roy approx F num Df den Df Pr(>F)
## Variedad 4 2.49889 615.98 4 986 < 2.2e-16 ***
## Parcela 9 0.03155 3.46 9 986 0.0003284 ***
## Residuals 986
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Conclusión multivariada general El factor Variedad presenta diferencias estadísticamente significativas en el conjunto de variables multivariadas. Esto indica que al menos una variedad difiere significativamente de las demás, justificando el uso de análisis multivariado.
El factor Parcela también resultó significativo en todos los tests multivariados. Esto sugiere que el efecto de parcela (bloqueo) es relevante, y se justifica su inclusión en el modelo para controlar la variabilidad experimental.
## Response Rendimiento :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 775118 193779 212.7616 <2e-16 ***
## Parcela 9 2750 306 0.3355 0.9633
## Residuals 986 898031 911
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Altura_planta :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 17945.6 4486.4 184.0034 <2e-16 ***
## Parcela 9 190.5 21.2 0.8681 0.5534
## Residuals 986 24040.8 24.4
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response N_macollos :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 2823.9 705.97 169.2650 < 2.2e-16 ***
## Parcela 9 116.9 12.99 3.1139 0.001057 **
## Residuals 986 4112.4 4.17
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Humedad_grano :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 202.13 50.532 52.3197 < 2.2e-16 ***
## Parcela 9 24.62 2.735 2.8323 0.002701 **
## Residuals 986 952.30 0.966
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Conclusión univariada general El factor Variedad tiene un efecto altamente significativo en todas las variables respuesta.
El factor Parcela presenta un efecto significativo solo en N° de macollos y Humedad del grano, pero con efectos relativamente bajos, lo que sugiere que no hay una justificación fuerte para su uso como bloque.
Este análisis busca evaluar si realmente Parcela tiene un efecto importante en un subconjunto de los datos (P1 y P3).
Prueba utilizada: Pillai, Wilks, Hotelling-Lawley, Roy.
Hipótesis Para el factor Parcela (P1 vs P3):
H₀:Los vectores de medias para las parcelas P1 y P3 son iguales.
H₁:Al menos un vector de medias difiere entre las parcelas P1 y P3.
Hipótesis Para el factor Parcela (bloqueo:):
H₀:Los vectores de medias para las distintas variedades son iguales.
H₁:Al menos un vector de medias difiere entre variedades.
modelo1 = manova(cbind(Rendimiento, Altura_planta,
N_macollos, Humedad_grano) ~ Variedad + Parcela, data = datos,
subset = Parcela %in% c("P1", "P3"))
summary(modelo1, test = "Pillai")## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77046 11.5704 16 776 <2e-16 ***
## Parcela 1 0.02629 1.2894 4 191 0.2756
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Wilks approx F num Df den Df Pr(>F)
## Variedad 4 0.27270 19.3530 16 584.15 <2e-16 ***
## Parcela 1 0.97371 1.2894 4 191.00 0.2756
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Variedad 4 2.5098 29.7253 16 758 <2e-16 ***
## Parcela 1 0.0270 1.2894 4 191 0.2756
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Roy approx F num Df den Df Pr(>F)
## Variedad 4 2.4461 118.636 4 194 <2e-16 ***
## Parcela 1 0.0270 1.289 4 191 0.2756
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Response Rendimiento :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 142412 35603 43.0516 <2e-16 ***
## Parcela 1 126 126 0.1529 0.6962
## Residuals 194 160435 827
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Altura_planta :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 3794.4 948.60 41.2802 <2e-16 ***
## Parcela 1 22.1 22.11 0.9624 0.3278
## Residuals 194 4458.0 22.98
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response N_macollos :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 513.60 128.400 30.6767 <2e-16 ***
## Parcela 1 6.07 6.069 1.4499 0.23
## Residuals 194 812.00 4.186
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Humedad_grano :
## Df Sum Sq Mean Sq F value Pr(>F)
## Variedad 4 48.450 12.1126 15.0259 1.023e-10 ***
## Parcela 1 2.548 2.5479 3.1606 0.077 .
## Residuals 194 156.387 0.8061
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Decisión sobre las hipótesis
Para Parcela: dado que p-valor > 0.05 en todos los tests, no se rechaza H0. Es decir, no hay diferencias significativas entre las parcelas P1 y P3 en el vector de respuestas.
Para Variedad: se rechaza H0 con evidencia muy fuerte, por lo tanto, sí hay diferencias entre las variedades.
Conclusión específica del análisis restringido
El bloqueo por Parcela no es necesario ni útil al evaluar únicamente P1 y P3, ya que no hay diferencias significativas entre ellas.
Variedad sigue mostrando un efecto significativo fuerte, lo que reafirma su importancia como factor de estudio.
Prueba utilizada: Pillai, Wilks, Hotelling-Lawley, Roy.
Hipótesis para el factor variedad:
H₀: Las dos parcelas en comparación no presentan diferencias multivariadas significativas.
H₁:Las dos parcelas en comparación presentan diferencias multivariadas significativas.
Parc <- c("P1", "P2", "P3", "P4","P5", "P6", "P7", "P8","P9","P10")
comb <- t(combn(length(Parc), 2))
for(i in 1:nrow(comb)){
modelo.comp = manova(cbind(Rendimiento, Altura_planta, N_macollos, Humedad_grano) ~
Variedad + Parcela, data = datos,
subset = Parcela %in% Parc[comb[i,]])
print(paste("Trat: ",Parc[comb[i,]][1], "y", Parc[comb[i,]][2]))
print(summary(modelo.comp, test = "Pillai"))
cat("\n")
}## [1] "Trat: P1 y P2"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.78501 11.8423 16 776 <2e-16 ***
## Parcela 1 0.02115 1.0318 4 191 0.3921
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P3"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77046 11.5704 16 776 <2e-16 ***
## Parcela 1 0.02629 1.2894 4 191 0.2756
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P4"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.74119 11.0309 16 776 <2e-16 ***
## Parcela 1 0.03821 1.8971 4 191 0.1126
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P5"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76736 11.5128 16 776 <2e-16 ***
## Parcela 1 0.02437 1.1927 4 191 0.3154
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P6"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.80918 12.299 16 776 <2e-16 ***
## Parcela 1 0.00981 0.473 4 191 0.7555
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.78455 11.8337 16 776 <2e-16 ***
## Parcela 1 0.02612 1.2805 4 191 0.2791
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75323 11.2518 16 776 <2e-16 ***
## Parcela 1 0.02815 1.3832 4 191 0.2413
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76537 11.4760 16 776 <2e-16 ***
## Parcela 1 0.03507 1.7354 4 191 0.1438
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P1 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.83646 12.8238 16 776 <2e-16 ***
## Parcela 1 0.01133 0.5474 4 191 0.7011
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P3"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75917 11.3612 16 776 <2e-16 ***
## Parcela 1 0.02504 1.2263 4 191 0.3011
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P4"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.72754 10.7826 16 776 <2e-16 ***
## Parcela 1 0.01740 0.8457 4 191 0.4978
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P5"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75013 11.1948 16 776 <2e-16 ***
## Parcela 1 0.03775 1.8732 4 191 0.1168
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P6"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79209 11.9755 16 776 <2e-16 ***
## Parcela 1 0.01165 0.5628 4 191 0.69
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77985 11.7456 16 776 < 2.2e-16 ***
## Parcela 1 0.06858 3.5158 4 191 0.008537 **
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77536 11.6618 16 776 <2e-16 ***
## Parcela 1 0.00774 0.3727 4 191 0.8279
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79693 12.0669 16 776 <2e-16 ***
## Parcela 1 0.03328 1.6437 4 191 0.1649
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P2 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.80098 12.1436 16 776 <2e-16 ***
## Parcela 1 0.05002 2.5142 4 191 0.043 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P4"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.71839 10.6173 16 776 <2e-16 ***
## Parcela 1 0.01664 0.8081 4 191 0.5214
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P5"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.73820 10.9764 16 776 < 2.2e-16 ***
## Parcela 1 0.07718 3.9937 4 191 0.003903 **
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P6"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79779 12.0831 16 776 < 2e-16 ***
## Parcela 1 0.04173 2.0796 4 191 0.08505 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.78097 11.7665 16 776 < 2e-16 ***
## Parcela 1 0.05456 2.7554 4 191 0.02926 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75800 11.3395 16 776 <2e-16 ***
## Parcela 1 0.03872 1.9235 4 191 0.1081
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.73783 10.9696 16 776 <2e-16 ***
## Parcela 1 0.01244 0.6017 4 191 0.6619
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P3 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77570 11.6681 16 776 < 2e-16 ***
## Parcela 1 0.05367 2.7082 4 191 0.03156 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P5"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79971 12.1195 16 776 < 2.2e-16 ***
## Parcela 1 0.08004 4.1543 4 191 0.002997 **
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P6"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75032 11.1982 16 776 <2e-16 ***
## Parcela 1 0.03495 1.7294 4 191 0.1451
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.75537 11.291 16 776 < 2e-16 ***
## Parcela 1 0.04736 2.374 4 191 0.05368 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.74562 11.1120 16 776 <2e-16 ***
## Parcela 1 0.01185 0.5725 4 191 0.6829
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.71801 10.6105 16 776 <2e-16 ***
## Parcela 1 0.00880 0.4241 4 191 0.7911
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P4 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77177 11.5948 16 776 < 2e-16 ***
## Parcela 1 0.05866 2.9756 4 191 0.02053 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P5 y P6"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77810 11.7129 16 776 <2e-16 ***
## Parcela 1 0.01136 0.5488 4 191 0.7001
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P5 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.78193 11.7847 16 776 < 2.2e-16 ***
## Parcela 1 0.07529 3.8879 4 191 0.004642 **
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P5 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77050 11.5713 16 776 < 2e-16 ***
## Parcela 1 0.04389 2.1918 4 191 0.07143 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P5 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.73789 10.9707 16 776 < 2.2e-16 ***
## Parcela 1 0.10189 5.4171 4 191 0.0003747 ***
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P5 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.80519 12.2234 16 776 < 2e-16 ***
## Parcela 1 0.04119 2.0516 4 191 0.08881 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P6 y P7"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.80696 12.2571 16 776 < 2e-16 ***
## Parcela 1 0.05762 2.9197 4 191 0.02247 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P6 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79644 12.0576 16 776 <2e-16 ***
## Parcela 1 0.01432 0.6937 4 191 0.5971
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P6 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.81416 12.3944 16 776 <2e-16 ***
## Parcela 1 0.04252 2.1206 4 191 0.0798 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P6 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.79398 12.0112 16 776 <2e-16 ***
## Parcela 1 0.03006 1.4797 4 191 0.2099
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P7 y P8"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76720 11.5100 16 776 < 2e-16 ***
## Parcela 1 0.04538 2.2698 4 191 0.06323 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P7 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76977 11.5577 16 776 <2e-16 ***
## Parcela 1 0.03186 1.5716 4 191 0.1835
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P7 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.82999 12.699 16 776 <2e-16 ***
## Parcela 1 0.01024 0.494 4 191 0.7401
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P8 y P9"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.77083 11.5774 16 776 <2e-16 ***
## Parcela 1 0.02733 1.3417 4 191 0.256
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P8 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76078 11.3909 16 776 < 2e-16 ***
## Parcela 1 0.04300 2.1458 4 191 0.07674 .
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## [1] "Trat: P9 y P10"
## Df Pillai approx F num Df den Df Pr(>F)
## Variedad 4 0.76825 11.5294 16 776 < 2e-16 ***
## Parcela 1 0.04856 2.4373 4 191 0.04857 *
## Residuals 194
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Interpretación:
El bloqueo por parcela controla parte de la variabilidad experimental, pero no garantiza homogeneidad total entre todas las parcelas. Hay subconjuntos (por ejemplo, P2–P7 o P5–P9) donde el bloque ejerce un efecto significativo que habría que investigar o ajustar en el modelo. Sin embargo, la Variedad mantiene un efecto fuertemente significativo en todas las comparaciones.
Este dataset simula los resultados de un estudio agrícola de 1,000 parcelas experimentales donde se evaluó el efecto de diferentes prácticas de manejo en el rendimiento y calidad de un cultivo.
| Variable | Tipo | N iveles/Descripción |
|---|---|---|
| fertilizante | Cualitativa/ Categórica | 3 niveles :
|
| riego | Cualitativa/ Categórica | 3 sistemas:
|
| variedad | Cualitativa/ Categórica | 3 genotipos:
|
| Variable | Tipo | Descripción |
|---|---|---|
| rendimiento | Cuantitativo | Producción del cultivo (Kg/m^2) (variable principal de interés) |
| calidad | Cuantitativo | Puntuación de calidad (1-10) basada en:
|
## Variedad A Variedad B Variedad C
##
## Mixto Cada 3 días 22 31 32
## Diario 26 20 28
## Por humedad 22 16 18
## Orgánico Cada 3 días 32 58 36
## Diario 46 50 41
## Por humedad 45 54 39
## Químico Cada 3 días 39 39 52
## Diario 35 49 44
## Por humedad 49 38 39
Se puede observar que existe mayor representación de fertilizantes Orgánicos (promedio 45 obs/grupo vs 34 en Mixto), como vemos en la combinación de Orgánico con variedad B que es la mas frecuente.
La Variedad A tiende a mostrar mayores rendimientos que B y C, especialmente cuando se usan fertilizantes químicos o mixtos. Mientras que la Variedad C también presenta buenos rendimientos, pero con mayor variabilidad. Por ultimo, la Variedad B muestra un rendimiento ligeramente inferior, especialmente con fertilizante orgánico.
El fertilizante químico fue el más efectivo en la mayoría de las combinaciones, seguido por el mixto. El orgánico mostró menores rendimientos, aunque con algunas excepciones. En cuanto a la frecuencia de riego, el riego diario fue el más favorable, mientras que el riego por humedad presentó mayor variabilidad.
\(H_0:\) No existen diferencias significativas entre los niveles de los factores ni su interacción sobre la variable de respuesta.
\(H_i:\) Al menos uno de los factores o la interacción entre ellos tiene un efecto significativo sobre la variable de respuesta.
## trat1 trat2 trat3 trat4 trat5 trat6
## 0.270446245 0.467567299 0.711033305 0.346001231 0.194226103 0.105922774
## trat7 trat8 trat9 trat10 trat11 trat12
## 0.114713276 0.266449117 0.874305195 0.044273923 0.070207578 0.166843177
## trat13 trat14 trat15 trat16 trat17 trat18
## 0.817931360 0.953897914 0.944319575 0.729352403 0.303234824 0.009384424
## trat19 trat20 trat21 trat22 trat23 trat24
## 0.051334998 0.130509390 0.236006178 0.273947392 0.791847767 0.202757963
## trat25 trat26 trat27
## 0.131627601 0.277312808 0.026309558
Aunque el 11.11% de tus grupos (3/27 combinaciones) presentan no-normalidad multivariada (p < 0.05), el Diseño Completamente al Azar (DCA) y el análisis factorial puede ser aplicado.
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: Y
## Chi-Sq (approx.) = 19.272, df = 24, p-value = 0.7373
El test de Box’s M no mostró evidencia de heterogeneidad en las matrices de covarianza entre los grupos, cumpliendo así un supuesto clave para el MANOVA. Esto indica que la relación entre rendimiento y calidad fue estable en todas las combinaciones de fertilizante y riego, respaldando la comparabilidad de los efectos entre tratamientos.
## chisq p_valor df
## 1.633755e+02 2.070995e-37 1.000000e+00
La prueba de esfericidad de Bartlett mostró una correlación altamente significativa entre rendimiento y calidad (χ²(1) = 163.38, p < 0.001), validando el uso de MANOVA para analizar estos resultados de manera conjunta. Esto indica que las variables respuesta comparten información relevante sobre el efecto de los tratamientos.
modelo_manova <- manova(cbind(rendimiento, calidad) ~ fertilizante * riego * variedad,
data = datos)Matrices <- summary(modelo_manova)$SS
FFertilizante <- Matrices$fertilizante
FRiego <- Matrices$riego
FVariedad <- Matrices$variedad
FInteraccion <- Matrices$`fertilizante:riego:variedad`
W <- Matrices$Residuals
W## rendimiento calidad
## rendimiento 471.87556 67.32037
## calidad 67.32037 123.42405
## rendimiento calidad
## rendimiento 597.7908 111.4579
## calidad 111.4579 140.3726
## [1] 0.2487297
El coeficiente eta² multivariado obtenido fue de 0.249 aproximadamente. Este valor indica que el 24.9% de la variabilidad total del rendimiento puede ser explicada por el efecto conjunto de los factores tipo de fertilizante, frecuencia de riego y su interacción.
Esto sugiere que el modelo factorial 3×3 tiene un efecto moderado sobre el rendimiento, siendo capaz de explicar una proporción considerable de la variabilidad observada, aunque también existe una parte importante atribuida al error o a otras fuentes no consideradas.
## Df Pillai approx F num Df den Df Pr(>F)
## fertilizante 2 0.106359 27.325 4 1946 < 2.2e-16 ***
## riego 2 0.128684 33.455 4 1946 < 2.2e-16 ***
## variedad 2 0.054130 13.533 4 1946 6.956e-11 ***
## fertilizante:riego 4 0.010774 1.317 8 1946 0.2299
## fertilizante:variedad 4 0.006837 0.834 8 1946 0.5722
## riego:variedad 4 0.007809 0.954 8 1946 0.4709
## fertilizante:riego:variedad 8 0.004935 0.301 16 1946 0.9966
## Residuals 973
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Wilks approx F num Df den Df Pr(>F)
## fertilizante 2 0.89372 28.085 4 1944 < 2.2e-16 ***
## riego 2 0.87172 34.533 4 1944 < 2.2e-16 ***
## variedad 2 0.94591 13.703 4 1944 5.061e-11 ***
## fertilizante:riego 4 0.98924 1.318 8 1944 0.2296
## fertilizante:variedad 4 0.99317 0.834 8 1944 0.5725
## riego:variedad 4 0.99220 0.953 8 1944 0.4713
## fertilizante:riego:variedad 8 0.99507 0.301 16 1944 0.9966
## Residuals 973
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Hotelling-Lawley approx F num Df den Df
## fertilizante 2 0.118825 28.845 4 1942
## riego 2 0.146696 35.610 4 1942
## variedad 2 0.057146 13.872 4 1942
## fertilizante:riego 4 0.010865 1.319 8 1942
## fertilizante:variedad 4 0.006869 0.834 8 1942
## riego:variedad 4 0.007849 0.953 8 1942
## fertilizante:riego:variedad 8 0.004949 0.300 16 1942
## Residuals 973
## Pr(>F)
## fertilizante < 2.2e-16 ***
## riego < 2.2e-16 ***
## variedad 3.685e-11 ***
## fertilizante:riego 0.2293
## fertilizante:variedad 0.5728
## riego:variedad 0.4717
## fertilizante:riego:variedad 0.9966
## Residuals
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Según los resultados se observa que al menos una de las combinaciones de los factores evaluados, tiene un efecto estadísticamente significativo sobre el rendimiento. En particular, la prueba de Wilks’ Lambda presentó un valor cercano a 0, lo que sugiere que una parte importante de la variabilidad en el rendimiento es explicada por los factores del diseño factorial. Esto se refuerza con los valores de significancia (p-valor) menores a 0.05 en las pruebas aplicadas, lo que permite rechazar la hipótesis nula de que no existe efecto de los factores sobre la variable respuesta.
Estos resultados apoyan la importancia del manejo conjunto de fertilización y riego para maximizar el rendimiento, de acuerdo con el diseño experimental planteado.
En el gráfico podemos observar que el fertilizante químico junto con riego diario genera los mayores rendimientos, especialmente en las variedades A y C, mientras que el fertilizante orgánico presenta los valores más bajos en la mayoría de las combinaciones. La variedad B muestra menor variabilidad entre tratamientos, sugiriendo una menor sensibilidad a los cambios en fertilización y riego. Estos resultados indican que la elección del manejo agronómico óptimo depende tanto del tipo de insumos como de la variedad cultivada.
En el gráfico se evalua tres tipos de fertilizantes (Mixto, Orgánico y Químico) y tres frecuencias de riego (Cada 3 días, Diario y Por humedad). Se observa que los tratamientos con riego diario, independientemente del tipo de fertilizante, presentan medianas de calidad más elevadas y menor dispersión, destacando el tratamiento Químico-Diario como uno de los más consistentes. Por otro lado, las combinaciones con fertilizante orgánico y riego por humedad o cada 3 días tienden a tener puntuaciones más bajas y mayor variabilidad, lo que indica una menor estabilidad en la calidad del producto. Estos resultados sugieren que existe una interacción entre fertilización y riego que influye significativamente en la calidad, siendo el manejo con fertilizante químico y riego diario la opción más favorable en términos de consistencia y calidad del cultivo.
Los resultados muestran que al menos uno de los factores (fertilizante, riego o variedad) tiene un efecto significativo sobre las variables de respuesta (rendimiento y calidad). Esto se evidencia por los valores de p (< 0.05) en las pruebas de Pillai, Wilks y Hotelling-Lawley para estos factores principales. Por lo tanto, se rechaza la hipótesis nula (\(H_0:\)) en favor de la hipótesis alternativa (\(H_i:\)).
Se concluye que los factores de fertilizante, riego y variedad tienen efectos significativos individuales sobre el rendimiento y la calidad del cultivo, pero no se encontraron interacciones significativas entre ellos. Estos hallazgos respaldan la importancia de seleccionar prácticas de manejo adecuadas para optimizar la producción agrícola.
Se presenta un análisis MANOVA factorial en un Diseño en Bloques Completos al Azar (DBCA), aplicado a un conjunto de datos simulados. El objetivo es evaluar el efecto combinado de tres fertilizantes y dos tipos de riego sobre variables agronómicas clave del cultivo de arroz, controlando la variabilidad mediante un bloque representado por el tipo de suelo.
El experimento incluye:
Nitro,
Fosfo, Mix).Goteo,
Aspersión).Arcilloso,
Arenoso, Franco, Limoso).# Leer el archivo CSV desde el directorio actual
cultivos <- read.csv("cultivos.csv")
# Verificamos la estructura del data frame
str(cultivos)## 'data.frame': 1500 obs. of 6 variables:
## $ Fertilizante : chr "Mix" "Mix" "Mix" "Fosfo" ...
## $ Riego : chr "Goteo" "Aspersión" "Goteo" "Goteo" ...
## $ Soil_Type : chr "Arcilloso" "Arcilloso" "Franco" "Arcilloso" ...
## $ Rendimiento_kg: num 5850 5230 5460 4492 5435 ...
## $ Altura_plantas: num 252 220 227 231 239 ...
## $ Humedad_grano : num 19 19.7 17.9 18.9 20 ...
# Convertimos a factores
cultivos$Fertilizante <- as.factor(cultivos$Fertilizante)
cultivos$Riego <- as.factor(cultivos$Riego)
cultivos$Soil_Type <- as.factor(cultivos$Soil_Type)
# Revisamos la estructura
str(cultivos)## 'data.frame': 1500 obs. of 6 variables:
## $ Fertilizante : Factor w/ 3 levels "Fosfo","Mix",..: 2 2 2 1 2 1 1 1 2 3 ...
## $ Riego : Factor w/ 2 levels "Aspersión","Goteo": 2 1 2 2 1 2 1 2 1 2 ...
## $ Soil_Type : Factor w/ 4 levels "Arcilloso","Arenoso",..: 1 1 3 1 2 4 3 3 3 4 ...
## $ Rendimiento_kg: num 5850 5230 5460 4492 5435 ...
## $ Altura_plantas: num 252 220 227 231 239 ...
## $ Humedad_grano : num 19 19.7 17.9 18.9 20 ...
## Fertilizante Riego Soil_Type Rendimiento_kg Altura_plantas Humedad_grano
## 1 Mix Goteo Arcilloso 5849.861 252.2244 18.95561
## 2 Mix Aspersión Arcilloso 5230.052 219.6283 19.68588
## 3 Mix Goteo Franco 5460.125 227.2786 17.92613
## 4 Fosfo Goteo Arcilloso 4491.870 231.3112 18.86013
## 5 Mix Aspersión Arenoso 5435.110 238.5381 20.03358
## 6 Fosfo Goteo Limoso 5244.703 202.4947 17.75968
Aquí evaluamos si las variables dependientes se distribuyen
normalmente dentro de cada combinación de niveles de los factores
Fertilizante y Riego, utilizando el test de
Shapiro-Wilk multivariado
(mshapiro.test).
# Test de normalidad multivariada por combinación de Fertilizante y Riego
trat1 <- cultivos %>%
filter(Fertilizante == "Mix", Riego == "Goteo") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
trat2 <- cultivos %>%
filter(Fertilizante == "Mix", Riego == "Aspersión") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
trat3 <- cultivos %>%
filter(Fertilizante == "Fosfo", Riego == "Goteo") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
trat4 <- cultivos %>%
filter(Fertilizante == "Fosfo", Riego == "Aspersión") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
trat5 <- cultivos %>%
filter(Fertilizante == "Nitro", Riego == "Goteo") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
trat6 <- cultivos %>%
filter(Fertilizante == "Nitro", Riego == "Aspersión") %>%
dplyr::select(Rendimiento_kg, Altura_plantas, Humedad_grano)
# Ejecutamos la prueba de normalidad multivariada
mshapiro.test(t(trat1))##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99329, p-value = 0.2794
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99416, p-value = 0.4591
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99098, p-value = 0.1316
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.99369, p-value = 0.3925
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.9926, p-value = 0.2263
##
## Shapiro-Wilk normality test
##
## data: Z
## W = 0.9886, p-value = 0.05647
La prueba de Shapiro-Wilk aplicada a cada combinación de tratamiento
indica que todos los tratamientos (Fertilizante ×
Riego) sobre las tres variables dependientes cumplen con la
normalidad multivariada (valores de p > = 0.05).
Esto valida completamente el uso de MANOVA desde el punto de vista del
supuesto de normalidad.
Se evalúa si las matrices de varianzas y covarianzas son homogéneas
entre los grupos definidos por los factores (Fertilizante ×
Riego), mediante la prueba de Box’s M
(boxM).
heplots::boxM(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano) ~
Fertilizante * Riego, data = cultivos)##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: Y
## Chi-Sq (approx.) = 16.662, df = 30, p-value = 0.9764
El valor de p > 0.05 indica que no se rechaza la hipótesis nula de homogeneidad de matrices, por lo tanto, el supuesto se cumple. Esto respalda la validez del uso del MANOVA.
Se aplica la prueba de esfericidad de Bartlett
(cortest.bartlett) para confirmar que las variables
dependientes están correlacionadas entre sí.
respuestas <- cultivos[, c("Rendimiento_kg", "Altura_plantas", "Humedad_grano")]
cortest.bartlett(cor(respuestas), n = nrow(respuestas))## $chisq
## [1] 1048.556
##
## $p.value
## [1] 5.266441e-227
##
## $df
## [1] 3
La prueba es altamente significativa, por lo que se rechaza la hipótesis de esfericidad. Las variables dependientes están correlacionadas, lo cual justifica plenamente la aplicación de MANOVA.
library(ggplot2)
ggplot(cultivos, aes(x = Rendimiento_kg, fill = Fertilizante)) +
geom_density(alpha = 0.5) +
facet_wrap(~Riego) +
labs(title = "Densidad de Rendimiento según Fertilizante y Riego")En esta etapa se ajusta el modelo MANOVA.
Los factores del modelo fueron:
- Fertilizante (3 niveles)
- Riego (2 niveles)
- Soil_Type como bloque (4 niveles)
Considerando las variables respuesta:
- Rendimiento_kg
- Altura_plantas
- Humedad_grano
modelo <- manova(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano) ~
Fertilizante * Riego + Soil_Type, data = cultivos)
str(modelo)## List of 13
## $ coefficients : num [1:9, 1:3] 4571 436 240 443 300 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:9] "(Intercept)" "FertilizanteMix" "FertilizanteNitro" "RiegoGoteo" ...
## .. ..$ : chr [1:3] "Rendimiento_kg" "Altura_plantas" "Humedad_grano"
## $ residuals : num [1:1500, 1:3] 236 223 -278 -522 128 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1500] "1" "2" "3" "4" ...
## .. ..$ : chr [1:3] "Rendimiento_kg" "Altura_plantas" "Humedad_grano"
## $ effects : num [1:1500, 1:3] -201865 -7635 -3563 -9175 -3154 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1500] "(Intercept)" "FertilizanteMix" "FertilizanteNitro" "RiegoGoteo" ...
## .. ..$ : chr [1:3] "Rendimiento_kg" "Altura_plantas" "Humedad_grano"
## $ rank : int 9
## $ fitted.values: num [1:1500, 1:3] 5614 5007 5738 5014 5307 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : chr [1:1500] "1" "2" "3" "4" ...
## .. ..$ : chr [1:3] "Rendimiento_kg" "Altura_plantas" "Humedad_grano"
## $ assign : int [1:9] 0 1 1 2 3 3 3 4 4
## $ qr :List of 5
## ..$ qr : num [1:1500, 1:9] -38.7298 0.0258 0.0258 0.0258 0.0258 ...
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : chr [1:1500] "1" "2" "3" "4" ...
## .. .. ..$ : chr [1:9] "(Intercept)" "FertilizanteMix" "FertilizanteNitro" "RiegoGoteo" ...
## .. ..- attr(*, "assign")= int [1:9] 0 1 1 2 3 3 3 4 4
## .. ..- attr(*, "contrasts")=List of 3
## .. .. ..$ Fertilizante: chr "contr.treatment"
## .. .. ..$ Riego : chr "contr.treatment"
## .. .. ..$ Soil_Type : chr "contr.treatment"
## ..$ qraux: num [1:9] 1.03 1.03 1 1.03 1.04 ...
## ..$ pivot: int [1:9] 1 2 3 4 5 6 7 8 9
## ..$ tol : num 1e-07
## ..$ rank : int 9
## ..- attr(*, "class")= chr "qr"
## $ df.residual : int 1491
## $ contrasts :List of 3
## ..$ Fertilizante: chr "contr.treatment"
## ..$ Riego : chr "contr.treatment"
## ..$ Soil_Type : chr "contr.treatment"
## $ xlevels :List of 3
## ..$ Fertilizante: chr [1:3] "Fosfo" "Mix" "Nitro"
## ..$ Riego : chr [1:2] "Aspersión" "Goteo"
## ..$ Soil_Type : chr [1:4] "Arcilloso" "Arenoso" "Franco" "Limoso"
## $ call : language manova(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano) ~ Fertilizante * Riego + Soil_Type, data = cultivos)
## $ terms :Classes 'terms', 'formula' language cbind(Rendimiento_kg, Altura_plantas, Humedad_grano) ~ Fertilizante * Riego + Soil_Type
## .. ..- attr(*, "variables")= language list(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano), Fertilizante, Riego, Soil_Type)
## .. ..- attr(*, "factors")= int [1:4, 1:4] 0 1 0 0 0 0 1 0 0 0 ...
## .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. ..$ : chr [1:4] "cbind(Rendimiento_kg, Altura_plantas, Humedad_grano)" "Fertilizante" "Riego" "Soil_Type"
## .. .. .. ..$ : chr [1:4] "Fertilizante" "Riego" "Soil_Type" "Fertilizante:Riego"
## .. ..- attr(*, "term.labels")= chr [1:4] "Fertilizante" "Riego" "Soil_Type" "Fertilizante:Riego"
## .. ..- attr(*, "order")= int [1:4] 1 1 1 2
## .. ..- attr(*, "intercept")= int 1
## .. ..- attr(*, "response")= int 1
## .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## .. ..- attr(*, "predvars")= language list(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano), Fertilizante, Riego, Soil_Type)
## .. ..- attr(*, "dataClasses")= Named chr [1:4] "nmatrix.3" "factor" "factor" "factor"
## .. .. ..- attr(*, "names")= chr [1:4] "cbind(Rendimiento_kg, Altura_plantas, Humedad_grano)" "Fertilizante" "Riego" "Soil_Type"
## $ model :'data.frame': 1500 obs. of 4 variables:
## ..$ cbind(Rendimiento_kg, Altura_plantas, Humedad_grano): num [1:1500, 1:3] 5850 5230 5460 4492 5435 ...
## .. ..- attr(*, "dimnames")=List of 2
## .. .. ..$ : NULL
## .. .. ..$ : chr [1:3] "Rendimiento_kg" "Altura_plantas" "Humedad_grano"
## ..$ Fertilizante : Factor w/ 3 levels "Fosfo","Mix",..: 2 2 2 1 2 1 1 1 2 3 ...
## ..$ Riego : Factor w/ 2 levels "Aspersión","Goteo": 2 1 2 2 1 2 1 2 1 2 ...
## ..$ Soil_Type : Factor w/ 4 levels "Arcilloso","Arenoso",..: 1 1 3 1 2 4 3 3 3 4 ...
## ..- attr(*, "terms")=Classes 'terms', 'formula' language cbind(Rendimiento_kg, Altura_plantas, Humedad_grano) ~ Fertilizante * Riego + Soil_Type
## .. .. ..- attr(*, "variables")= language list(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano), Fertilizante, Riego, Soil_Type)
## .. .. ..- attr(*, "factors")= int [1:4, 1:4] 0 1 0 0 0 0 1 0 0 0 ...
## .. .. .. ..- attr(*, "dimnames")=List of 2
## .. .. .. .. ..$ : chr [1:4] "cbind(Rendimiento_kg, Altura_plantas, Humedad_grano)" "Fertilizante" "Riego" "Soil_Type"
## .. .. .. .. ..$ : chr [1:4] "Fertilizante" "Riego" "Soil_Type" "Fertilizante:Riego"
## .. .. ..- attr(*, "term.labels")= chr [1:4] "Fertilizante" "Riego" "Soil_Type" "Fertilizante:Riego"
## .. .. ..- attr(*, "order")= int [1:4] 1 1 1 2
## .. .. ..- attr(*, "intercept")= int 1
## .. .. ..- attr(*, "response")= int 1
## .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
## .. .. ..- attr(*, "predvars")= language list(cbind(Rendimiento_kg, Altura_plantas, Humedad_grano), Fertilizante, Riego, Soil_Type)
## .. .. ..- attr(*, "dataClasses")= Named chr [1:4] "nmatrix.3" "factor" "factor" "factor"
## .. .. .. ..- attr(*, "names")= chr [1:4] "cbind(Rendimiento_kg, Altura_plantas, Humedad_grano)" "Fertilizante" "Riego" "Soil_Type"
## - attr(*, "class")= chr [1:5] "manova" "maov" "aov" "mlm" ...
## Df Pillai approx F num Df den Df Pr(>F)
## Fertilizante 2 0.66044 244.87 6 2980 < 2.2e-16 ***
## Riego 1 0.70429 1182.12 3 1489 < 2.2e-16 ***
## Soil_Type 3 0.13028 22.56 9 4473 < 2.2e-16 ***
## Fertilizante:Riego 2 0.02818 7.10 6 2980 1.588e-07 ***
## Residuals 1491
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Wilks approx F num Df den Df Pr(>F)
## Fertilizante 2 0.37875 310.16 6 2978 < 2.2e-16 ***
## Riego 1 0.29571 1182.12 3 1489 < 2.2e-16 ***
## Soil_Type 3 0.86985 23.74 9 3624 < 2.2e-16 ***
## Fertilizante:Riego 2 0.97184 7.14 6 2978 1.423e-07 ***
## Residuals 1491
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Hotelling-Lawley approx F num Df den Df Pr(>F)
## Fertilizante 2 1.53681 381.13 6 2976 < 2.2e-16 ***
## Riego 1 2.38170 1182.12 3 1489 < 2.2e-16 ***
## Soil_Type 3 0.14947 24.71 9 4463 < 2.2e-16 ***
## Fertilizante:Riego 2 0.02895 7.18 6 2976 1.275e-07 ***
## Residuals 1491
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Df Roy approx F num Df den Df Pr(>F)
## Fertilizante 2 1.46625 728.24 3 1490 < 2.2e-16 ***
## Riego 1 2.38170 1182.12 3 1489 < 2.2e-16 ***
## Soil_Type 3 0.14846 73.78 3 1491 < 2.2e-16 ***
## Fertilizante:Riego 2 0.02812 13.96 3 1490 5.569e-09 ***
## Residuals 1491
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Response Rendimiento_kg :
## Df Sum Sq Mean Sq F value Pr(>F)
## Fertilizante 2 70980802 35490401 422.659 < 2e-16 ***
## Riego 1 84176708 84176708 1002.470 < 2e-16 ***
## Soil_Type 3 18579100 6193033 73.754 < 2e-16 ***
## Fertilizante:Riego 2 3497520 1748760 20.826 1.2e-09 ***
## Residuals 1491 125198211 83969
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Altura_plantas :
## Df Sum Sq Mean Sq F value Pr(>F)
## Fertilizante 2 103381 51691 540.5670 <2e-16 ***
## Riego 1 89830 89830 939.4185 <2e-16 ***
## Soil_Type 3 141 47 0.4927 0.6874
## Fertilizante:Riego 2 143 71 0.7460 0.4744
## Residuals 1491 142574 96
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response Humedad_grano :
## Df Sum Sq Mean Sq F value Pr(>F)
## Fertilizante 2 332.19 166.09 169.0275 <2e-16 ***
## Riego 1 1491.44 1491.44 1517.7812 <2e-16 ***
## Soil_Type 3 0.24 0.08 0.0809 0.9704
## Fertilizante:Riego 2 0.01 0.01 0.0062 0.9938
## Residuals 1491 1465.12 0.98
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El modelo MANOVA muestra efectos multivariados significativos en cada
test para todos los factores, incluyendo la interacción, lo que indica
que el tipo de fertilizante, el método de riego y sus combinaciones
influyen en conjunto sobre las variables de respuesta.
Esto valida la ejecución de contrastes específicos para
identificar las diferencias entre tratamientos y combinaciones.
Se calcularon las matrices de suma de cuadrados y productos cruzados
(SSCP) para cada fuente de variación, y se usó la razón de determinantes
para estimar el TAMAÑO DE EFECTO (BONDAD DE AJUSTE)
(eta²).
#Determinacion de la matriz residual y las matrices factoriales
Matrices <- summary(modelo)$SS
#Variabilidad explicada por el factor(Fertilizante). Matriz suma de cuadrados y
#productos cruzados del factor (SCOCFFert).
FFert <- Matrices$Fertilizante
#Variabilidad explicada por el factor Riego Matriz suma de cuadrados y
#productos cruzados del factor Velocidad (SCOCFRiego)
FRiego <- Matrices$Riego
#Variabilidad explicada por la interaccion Fertilizante*Riego Matriz suma de
#cuadrados y productos cruzados de la interaccion Fertilizante*Riego
#(SCOCFertilizante*Riego)
FInteraccion <- Matrices$`Fertilizante:Riego`
#Variabilidad explicada por el Bloque. Matriz suma de cuadrados y productos cruzados
#del Bloque (SCOCBloque)
FBloque <- Matrices$Soil_Type
#Variabilidad residual. Matriz suma de cuadrados y productos cruzados
#del residual (SCOCR)
W <- Matrices$Residuals
# #Variabilidad Total. Matriz suma de cuadrados y productos cruzados total (SCOCT)
T <- FFert + FRiego + FInteraccion + FBloque + W
#Bondad de ajuste
eta2 <- 1 - det(FBloque + W) / det(T); eta2## [1] 0.8189937
El diseño explica el 81.9% de la variabilidad multivariada, lo cual es excelente. Esto respalda la capacidad explicativa del modelo y justifica la implementación del diseño factorial DBCA.
Se realizan contrastes específicos para efectos e interacciones
relevantes del modelo, usando la función linearHypothesis()
del paquete car.
##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 1677117.12 14558.500451 -137.27998949
## Altura_plantas 14558.50 126.377540 -1.19168230
## Humedad_grano -137.28 -1.191682 0.01123702
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.0140772 7.086766 3 1489 9.9546e-05 ***
## Wilks 1 0.9859228 7.086766 3 1489 9.9546e-05 ***
## Hotelling-Lawley 1 0.0142782 7.086766 3 1489 9.9546e-05 ***
## Roy 1 0.0142782 7.086766 3 1489 9.9546e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 258341.88079 -4660.9572517 40.329712717
## Altura_plantas -4660.95725 84.0921435 -0.727621346
## Humedad_grano 40.32971 -0.7276213 0.006295865
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.0026618 1.324651 3 1489 0.26472
## Wilks 1 0.9973382 1.324651 3 1489 0.26472
## Hotelling-Lawley 1 0.0026689 1.324651 3 1489 0.26472
## Roy 1 0.0026689 1.324651 3 1489 0.26472
##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 3280107.281 3622.5957628 -4.719400e+01
## Altura_plantas 3622.596 4.0008448 -5.212170e-02
## Humedad_grano -47.194 -0.0521217 6.790245e-04
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.0255716 13.0251 3 1489 2.1258e-08 ***
## Wilks 1 0.9744284 13.0251 3 1489 2.1258e-08 ***
## Hotelling-Lawley 1 0.0262426 13.0251 3 1489 2.1258e-08 ***
## Roy 1 0.0262426 13.0251 3 1489 2.1258e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparar Mix vs Fosfo cuando el riego es por Goteo
linearHypothesis(modelo, "FertilizanteMix + FertilizanteMix:RiegoGoteo = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 46000953.34 1590294.162 -71623.9316
## Altura_plantas 1590294.16 54977.894 -2476.1035
## Humedad_grano -71623.93 -2476.103 111.5192
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.4562412 416.4488 3 1489 < 2.22e-16 ***
## Wilks 1 0.5437588 416.4488 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.8390507 416.4488 3 1489 < 2.22e-16 ***
## Roy 1 0.8390507 416.4488 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparar Nitro vs Fosfo cuando el riego es por Goteo
linearHypothesis(modelo, "FertilizanteNitro + FertilizanteNitro:RiegoGoteo = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 3859602.58 230569.089 -22240.4525
## Altura_plantas 230569.09 13773.984 -1328.6241
## Humedad_grano -22240.45 -1328.624 128.1577
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.1802447 109.1319 3 1489 < 2.22e-16 ***
## Wilks 1 0.8197553 109.1319 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.2198763 109.1319 3 1489 < 2.22e-16 ***
## Roy 1 0.2198763 109.1319 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparar Mix vs Fosfo cuando el riego es por Aspersión
linearHypothesis(modelo, "FertilizanteMix = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 23297621.10 1031935.056 -49180.8584
## Altura_plantas 1031935.06 45708.099 -2178.3963
## Humedad_grano -49180.86 -2178.396 103.8199
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.3692771 290.5944 3 1489 < 2.22e-16 ***
## Wilks 1 0.6307229 290.5944 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.5854823 290.5944 3 1489 < 2.22e-16 ***
## Roy 1 0.5854823 290.5944 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparar Nitro vs Fosfo cuando el riego es por Aspersión
linearHypothesis(modelo, "FertilizanteNitro = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 6941238.33 268925.032 -28908.5154
## Altura_plantas 268925.03 10418.987 -1120.0053
## Humedad_grano -28908.52 -1120.005 120.3967
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.1775939 107.1804 3 1489 < 2.22e-16 ***
## Wilks 1 0.8224061 107.1804 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.2159443 107.1804 3 1489 < 2.22e-16 ***
## Roy 1 0.2159443 107.1804 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
ggplot(cultivos, aes(x = interaction(Fertilizante, Riego), y = Rendimiento_kg, fill = Fertilizante)) +
geom_boxplot() +
labs(title = "Boxplot del Rendimiento por combinación de Fertilizante y Riego", x = "Fertilizante:Riego") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))# Comparar Goteo vs Aspersión cuando el fertilizante es Mix
linearHypothesis(modelo,"RiegoGoteo + FertilizanteMix:RiegoGoteo = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 47016693.9 1244669.498 -155036.5658
## Altura_plantas 1244669.5 32950.045 -4104.2717
## Humedad_grano -155036.6 -4104.272 511.2298
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.4950169 486.5379 3 1489 < 2.22e-16 ***
## Wilks 1 0.5049831 486.5379 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.9802644 486.5379 3 1489 < 2.22e-16 ***
## Roy 1 0.9802644 486.5379 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Comparar Goteo vs Aspersión cuando el fertilizante es Nitro
linearHypothesis(modelo,"RiegoGoteo + FertilizanteNitro:RiegoGoteo = 0")##
## Sum of squares and products for the hypothesis:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 17693324.30 739328.323 -93406.590
## Altura_plantas 739328.32 30893.367 -3903.062
## Humedad_grano -93406.59 -3903.062 493.112
##
## Sum of squares and products for error:
## Rendimiento_kg Altura_plantas Humedad_grano
## Rendimiento_kg 125198211.15 26679.1023 11266.1071
## Altura_plantas 26679.10 142573.5247 219.1194
## Humedad_grano 11266.11 219.1194 1465.1196
##
## Multivariate Tests:
## Df test stat approx F num Df den Df Pr(>F)
## Pillai 1 0.4160653 353.6475 3 1489 < 2.22e-16 ***
## Wilks 1 0.5839347 353.6475 3 1489 < 2.22e-16 ***
## Hotelling-Lawley 1 0.7125202 353.6475 3 1489 < 2.22e-16 ***
## Roy 1 0.7125202 353.6475 3 1489 < 2.22e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1