Se trabajó con una muestra de 30 plantas por zona (Zona A y Zona B), evaluadas semanalmente durante siete semanas consecutivas (S1 a S7), lo que da un total de 210 mediciones por zona para cada una de las dos variables: altura de planta (cm) y cantidad de vainas por planta.
zonaA_altura <- c(
28, 33, 43, 46, 31, 40, 44, 27, 31, 40, 44, 38, 46, 51, 36.4,
29, 38, 26, 43, 35, 40, 34, 27, 39, 45, 32, 38, 42, 42, 26,
50, 29, 33, 36, 41.6, 32, 30, 38, 30.4, 32, 48.2, 53, 25.2, 30, 51,
31, 44, 34, 39.2, 33, 33, 45.5, 28, 30.2, 50, 55, 31, 33, 40, 26,
45, 39, 44.3, 27, 39, 43, 37, 36, 43, 48, 41, 35, 41, 43, 39,
53, 58, 37, 37, 52, 42, 48, 46, 51, 28, 52, 36, 39, 42, 52,
57, 35.2, 33, 51, 39, 48.3, 30, 34, 49, 51, 48.4, 43, 26, 36, 41,
32, 38, 44, 46, 32, 43, 48.7, 38, 32, 38, 30, 39, 40.4, 45, 40,
28.7, 54, 31, 36, 46, 52, 36, 27, 39, 38, 41, 32, 37, 37, 29,
44, 35, 28, 42, 47.3, 43, 45, 40, 47, 38, 49, 54, 20, 50, 47,
42, 45, 39, 44, 40, 45.3, 42, 25, 35, 40, 45, 21, 26, 55, 26,
36, 46, 51, 41.5, 29, 50.2, 29, 42, 50.4, 55, 41, 29, 35, 34, 46,
45.1, 50.6, 45, 28, 48, 44, 41.4, 37, 42, 48, 36, 55, 32, 32, 43,
48, 38.7, 28, 39, 39, 39, 45, 50, 26, 40, 50, 29, 41, 44, 49
)
zonaB_altura <- c(
27, 50, 37, 42, 45, 49, 53, 49, 34, 37, 48, 47, 52, 57, 40,
44, 51, 38, 39, 43, 47, 46, 50.2, 47.4, 34, 41, 46, 50, 30, 42,
36, 50, 40, 45, 49, 25, 32, 42, 47, 49, 55, 60, 46, 37, 39.4,
46, 37, 42, 46, 25, 48, 37, 36.7, 50, 56, 61, 39, 39, 40, 41,
43, 48, 52, 42, 40.1, 42, 50, 46, 51, 55, 29, 38, 46, 42, 54,
60, 65, 28, 46, 51, 31, 48, 53, 58, 50, 43, 46, 44, 53, 59,
64, 47, 39, 43, 43, 35, 40, 44, 27, 55, 46, 29, 40, 45, 49,
41.3, 34, 40, 39, 46, 51, 55, 46, 45, 40, 44.5, 43, 48, 53, 43,
32.4, 46, 35, 48, 54, 59, 32, 39, 51, 50.7, 36, 41.5, 45, 39, 33,
55, 48, 44, 50, 54, 36, 39, 57, 49, 50, 56, 61, 50, 34, 58,
29, 42, 47, 51, 32, 52.2, 44, 33, 43, 48, 53, 45.7, 53, 54, 47,
49, 55, 60, 26, 51, 56, 41, 52, 58, 63, 28, 52, 44.1, 47, 47,
52, 56, 45, 35, 54, 38, 40, 45, 49, 41, 33.8, 58, 43, 45, 50,
55, 44, 40, 36, 44, 48, 54, 58, 40, 46, 58, 42, 46, 51, 56
)
zonaA_vainas <- c(
22, 25, 28, 31, 34, 38, 41, 23, 27, 31, 35, 39, 43, 41, 17,
21, 26, 31, 36, 39, 37, 20, 24, 29, 34, 39, 40, 42, 14, 18,
23, 28, 33, 34, 36, 19, 22, 27, 32, 37, 38, 40, 8, 12, 17,
22, 27, 35, 27, 18, 22, 27, 32, 37, 45, 56, 44, 47, 51, 55,
56, 49, 48, 19, 24, 29, 34, 39, 27, 61, 20, 25, 30, 35, 40,
43, 54, 17, 21, 26, 31, 36, 58, 43, 7, 12, 17, 22, 27, 24,
45, 13, 18, 23, 28, 33, 39, 35, 26, 30, 35, 40, 45, 41, 38,
29, 33, 38, 43, 48, 28, 58, 15, 20, 25, 30, 35, 26, 23, 16,
21, 26, 31, 36, 18, 13, 3, 8, 13, 18, 23, 13, 23, 6, 11,
16, 21, 26, 37, 35, 48, 52, 56, 60, 64, 15, 26, 29, 34, 39,
44, 49, 24, 32, 24, 28, 33, 36, 40, 36, 43, 27, 31, 36, 39,
42, 25, 38, 26, 30, 35, 38, 43, 18, 35, 23, 27, 32, 35, 39,
46, 32, 17, 22, 27, 32, 37, 56, 24, 39, 43, 48, 51, 52, 26,
47, 22, 37, 42, 47, 36, 57, 62, 16, 21, 26, 31, 36, 41, 46
)
zonaB_vainas <- c(
13, 16, 20, 24, 28, 36, 42, 26, 30, 35, 40, 45, 48, 51, 18,
22, 25, 29, 33, 39, 43, 25, 29, 34, 39, 44, 46, 50, 1, 4,
8, 12, 35, 22, 26, 16, 20, 25, 30, 42, 35, 45, 1, 5, 9,
13, 26, 46, 29, 12, 16, 21, 26, 36, 75, 39, 23, 27, 32, 37,
49, 36, 48, 5, 10, 16, 22, 21, 60, 41, 17, 22, 27, 32, 41,
47, 29, 17, 21, 26, 31, 45, 36, 35, 26, 31, 37, 43, 23, 65,
37, 2, 6, 11, 16, 37, 52, 56, 18, 23, 29, 35, 27, 46, 43,
25, 30, 34, 40, 16, 54, 26, 18, 8, 13, 18, 22, 36, 17, 28,
25, 30, 33, 28, 23, 27, 13, 15, 20, 23, 36, 24, 34, 8, 4,
9, 12, 22, 56, 27, 17, 10, 15, 18, 50, 22, 10, 3, 13, 18,
23, 22, 43, 46, 23, 24, 29, 32, 46, 43, 56, 9, 10, 15, 18,
34, 45, 30, 25, 35, 40, 45, 55, 38, 45, 11, 10, 15, 18, 50,
53, 45, 26, 31, 36, 41, 37, 35, 47, 18, 23, 28, 30, 36, 34,
35, 35, 40, 45, 50, 18, 60, 65, 21, 26, 31, 33, 20, 41, 45
)
class(zonaA_altura) # cuantitativa continua
## [1] "numeric"
class(zonaA_vainas) # cuantitativa discreta
## [1] "numeric"
moda <- function(x) as.numeric(names(sort(table(x), decreasing = TRUE)[1]))
resumen <- function(x) {
c(media = mean(x),
mediana = median(x),
moda = moda(x),
P25 = as.numeric(quantile(x, 0.25)),
P75 = as.numeric(quantile(x, 0.75)))
}
resumen(zonaA_altura)
## media mediana moda P25 P75
## 39.61524 40.00000 39.00000 33.00000 45.07500
resumen(zonaB_altura)
## media mediana moda P25 P75
## 45.37143 46.00000 46.00000 40.00000 51.00000
resumen(zonaA_vainas)
## media mediana moda P25 P75
## 32.1619 32.0000 26.0000 23.2500 39.0000
resumen(zonaB_vainas)
## media mediana moda P25 P75
## 29.38571 28.50000 18.00000 18.00000 39.00000
desv_media <- function(x) mean(abs(x - mean(x)))
variabilidad <- function(x) {
c(desv_media = desv_media(x),
varianza = var(x),
desv_est = sd(x),
CV_pct = sd(x) / mean(x) * 100)
}
variabilidad(zonaA_altura)
## desv_media varianza desv_est CV_pct
## 6.641615 65.263977 8.078612 20.392689
variabilidad(zonaB_altura)
## desv_media varianza desv_est CV_pct
## 6.612789 68.785208 8.293685 18.279532
variabilidad(zonaA_vainas)
## desv_media varianza desv_est CV_pct
## 9.758549 146.413853 12.100159 37.622645
variabilidad(zonaB_vainas)
## desv_media varianza desv_est CV_pct
## 11.44585 197.83616 14.06542 47.86484
pearson <- function(x) {
c(coef1_media_moda = (mean(x) - moda(x)) / sd(x),
coef2_media_mediana = 3 * (mean(x) - median(x)) / sd(x))
}
pearson(zonaA_altura)
## coef1_media_moda coef2_media_mediana
## 0.07615641 -0.14288168
pearson(zonaB_altura)
## coef1_media_moda coef2_media_mediana
## -0.07578916 -0.22736749
pearson(zonaA_vainas)
## coef1_media_moda coef2_media_mediana
## 0.50924163 0.04014115
pearson(zonaB_vainas)
## coef1_media_moda coef2_media_mediana
## 0.8094825 0.1889131
boxplot(zonaA_altura, zonaB_altura,
names = c("Zona A", "Zona B"),
col = c("darkseagreen", "burlywood"),
main = "Altura de planta por zona", ylab = "cm")
boxplot(zonaA_vainas, zonaB_vainas,
names = c("Zona A", "Zona B"),
col = c("darkseagreen", "burlywood"),
main = "Cantidad de vainas por planta por zona", ylab = "N de vainas")
par(mfrow = c(1, 2))
hist(zonaA_altura, col = "darkseagreen", main = "Zona A - Altura", xlab = "cm")
hist(zonaB_altura, col = "burlywood", main = "Zona B - Altura", xlab = "cm")
par(mfrow = c(1, 1))
par(mfrow = c(1, 2))
hist(zonaA_vainas, col = "darkseagreen", main = "Zona A - Vainas", xlab = "N de vainas")
hist(zonaB_vainas, col = "burlywood", main = "Zona B - Vainas", xlab = "N de vainas")
par(mfrow = c(1, 1))
Planteamiento general para ambas variables:
Antes de cada prueba t se evalúa la homogeneidad de varianzas con la
prueba de Levene, y según su resultado se elige
var.equal = TRUE (varianzas homogéneas) o
var.equal = FALSE, equivalente a la prueba de Welch
(varianzas distintas).
# install.packages("car") # ejecutar una sola vez si el paquete no está instalado
library(car)
leveneTest(c(zonaA_altura, zonaB_altura),
factor(rep(c("A", "B"), each = length(zonaA_altura))))
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 0.0106 0.9181
## 418
t.test(zonaA_altura, zonaB_altura, var.equal = TRUE)
##
## Two Sample t-test
##
## data: zonaA_altura and zonaB_altura
## t = -7.2046, df = 418, p-value = 2.735e-12
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -7.326661 -4.185720
## sample estimates:
## mean of x mean of y
## 39.61524 45.37143
leveneTest(c(zonaA_vainas, zonaB_vainas),
factor(rep(c("A", "B"), each = length(zonaA_vainas))))
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 4.9561 0.02653 *
## 418
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
t.test(zonaA_vainas, zonaB_vainas, var.equal = FALSE)
##
## Welch Two Sample t-test
##
## data: zonaA_vainas and zonaB_vainas
## t = 2.1683, df = 408.88, p-value = 0.03071
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.2593084 5.2930726
## sample estimates:
## mean of x mean of y
## 32.16190 29.38571
Como cada planta fue medida en las mismas siete semanas, además de la prueba anterior (que trata las 210 mediciones como observaciones independientes) se calcula el promedio de cada planta a lo largo de las siete semanas y se compara con una prueba t pareada, que respeta mejor la estructura de datos repetidos del diseño.
matriz_altura_A <- matrix(zonaA_altura, nrow = 30, ncol = 7, byrow = TRUE)
matriz_altura_B <- matrix(zonaB_altura, nrow = 30, ncol = 7, byrow = TRUE)
prom_planta_altura_A <- rowMeans(matriz_altura_A)
prom_planta_altura_B <- rowMeans(matriz_altura_B)
t.test(prom_planta_altura_A, prom_planta_altura_B, paired = TRUE)
##
## Paired t-test
##
## data: prom_planta_altura_A and prom_planta_altura_B
## t = -11.12, df = 29, p-value = 5.631e-12
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -6.814900 -4.697481
## sample estimates:
## mean difference
## -5.75619
matriz_vainas_A <- matrix(zonaA_vainas, nrow = 30, ncol = 7, byrow = TRUE)
matriz_vainas_B <- matrix(zonaB_vainas, nrow = 30, ncol = 7, byrow = TRUE)
prom_planta_vainas_A <- rowMeans(matriz_vainas_A)
prom_planta_vainas_B <- rowMeans(matriz_vainas_B)
t.test(prom_planta_vainas_A, prom_planta_vainas_B, paired = TRUE)
##
## Paired t-test
##
## data: prom_planta_vainas_A and prom_planta_vainas_B
## t = 1.8289, df = 29, p-value = 0.07772
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -0.3284371 5.8808180
## sample estimates:
## mean difference
## 2.77619
La Zona B presenta en promedio plantas más altas que la Zona A, mientras que la Zona A produce en promedio más vainas por planta que la Zona B. En ambas variables, la prueba t sobre el conjunto agrupado de mediciones resulta significativa, pero la prueba pareada por planta —que respeta la estructura real de datos repetidos del diseño— no confirma esas diferencias al 5% de significancia, lo que sugiere prudencia al interpretar el resultado agrupado como evidencia definitiva de diferencia entre zonas.