Carlos Jimémez-Gallardo
Estadístico
MSc Infórmatica Educativa
Universidad de La Frontera
carlos.jimenez@ufrontera.cl
Data Scientist
www.innovate.cl
cjimenez@innovate.cl
Considere la siguiente pregunta: ¿Cúal de los nuevos fertilizantes presenta un mejor rendimiento considerando las condiciones de suelo?
De acuerdo a esto, lo que se busca es disminuir la variabilidad provocada por las variantes del tipo de suelo, buscando siempre el fertilizante que provoque un mejor resultado.
Entonces un diseño en Bloques al azar (DBA o RCBD) se usa cuando los experimentos tienen una fuente de variación conocida (Bloque) que podría afectar la respuesta, en general las fuentes en experimentos en terreno, son gradiente de sol, orientación, drenaje,etc.
Entonces cuando tienes varios tratamientos que quieres comparar, pero sabes que existe una condición extra (Bloque) que puede influir en el resultado, pero no es lo que quieres estudiar.
Entonces organizas el experimento en Bloques homogéneos, y dentro de cada Bloque aplicas todos los tratamientos al azar.
Así:
El Bloque controla la variabilidad “molesta”. Entonces el azar dentro de cada Bloque asegura imparcialidad.
Cuándo aplicarlo:
Cuando hay una fuente importante de variabilidad conocida que no puedes eliminar, pero puedes agrupar en Bloques (ejemplo: parcelas de Bloque con distinta fertilidad). Tambien cuando quieres aumentar la precisión de la comparación entre tratamientos.
El diseño en Bloques considera que existen al menos 2 factores o variables independientes, siendo una de estas más relevante que la otra.
el modelo a considera es
\(Y_{ij}= \mu + \tau_i + \beta_j + \epsilon\)
library(tidyverse)
library(emmeans)
library(rcompanion)
library(GGally)
library(nortest)
library(Analitica)
library(readxl)
library(writexl)
Objetivo: Evaluar el efecto de 5 tratamiento para en el rendimiento de un cultivo, Como contexto, se bloqueo en 3 condiciones, dado condiciones diferenciadas de suelo en eso 3 lugares, como mas cercanos a fuente de agua a más lejano.
descripYG(datos,rendimiento,trat)
## Picking joint bandwidth of 96.6
## Group n Mean Median SD Kurtosis Skewness CV Min
## 1 Control 9 123.9444 123.0 9.056919 1.841725 0.16284569 0.07307241 111.5
## 2 prod1 9 1607.5556 1522.0 257.494714 1.540550 0.28855539 0.16017780 1289.0
## 3 prod2 9 1308.8889 1299.0 179.045696 3.296203 0.82912577 0.13679213 1093.0
## 4 prod3 8 903.0000 898.0 189.573958 1.926825 0.32690600 0.20993794 659.0
## 5 prod4 10 897.5000 944.5 174.862009 1.804606 -0.40887100 0.19483232 618.0
## 6 prod5 9 1306.3333 1319.0 243.859591 1.699598 0.07856499 0.18667486 1009.0
## Max P25 P75 IQR
## 1 138.5 118.50 131.00 12.50
## 2 1969.0 1377.00 1897.00 520.00
## 3 1685.0 1212.00 1379.00 167.00
## 4 1204.0 748.00 1000.25 252.25
## 5 1131.0 759.75 1023.25 263.50
## 6 1688.0 1056.00 1490.00 434.00
Se observa una anomalía en los datos para el tratamiento Producto 2, al comparar con procedimiento anterior se ve el efecto ajuste grupo control que hacia disminuir el real rendimiento del cultivo en cada uno de los tratamientos.
descripYG(datos,rendimiento,replica)
## Picking joint bandwidth of 221
## Group n Mean Median SD Kurtosis Skewness CV Min Max
## 1 1 18 1003.722 1068.5 505.3102 2.557086 -0.4761274 0.5034363 111.5 1897
## 2 2 18 1022.444 1130.0 513.7728 2.477988 -0.4710973 0.5024946 118.5 1902
## 3 3 18 1047.139 1058.5 543.7123 2.399304 -0.3615900 0.5192361 114.0 1969
## P25 P75 IQR
## 1 780.75 1314.50 533.75
## 2 764.75 1357.50 592.75
## 3 777.75 1407.75 630.00
no se observa comportamiento anómalo desde la replcia, más allá de la sensibilidad provocada por el número de replicas o de bloques
#conversion de Variables Independientes en Factor
datos$trat<-as.factor(datos$trat)
datos$replica<-as.factor(datos$replica)
#verificacion
str(datos)
## tibble [54 × 3] (S3: tbl_df/tbl/data.frame)
## $ trat : Factor w/ 6 levels "Control","prod1",..: 3 3 3 3 3 3 3 3 3 1 ...
## $ replica : Factor w/ 3 levels "1","2","3": 1 1 1 2 2 2 3 3 3 1 ...
## $ rendimiento: num [1:54] 1093 1301 1379 1212 1299 ...
#modelo tentativo RBCD para la obtencion de residuales
modR<-lm(rendimiento~ replica+trat,data=datos)
#revisar aplicacion para ver si fue correctamente aplicado "df = al numero de grupos -1" en el caso de replicas 3 -1
anova(modR)
## Analysis of Variance Table
##
## Response: rendimiento
## Df Sum Sq Mean Sq F value Pr(>F)
## replica 2 17072 8536 0.2215 0.8022
## trat 5 12081108 2416222 62.7024 <2e-16 ***
## Residuals 46 1772600 38535
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#obtener residuales para analisis
residuales<- data.frame(residual=modR$residuals)
descripYG(residuales,residual)
## n Mean Median SD Kurtosis Skewness CV Min
## 1 54 -1.092387e-14 0.3716153 182.8805 2.305631 0.1867206 1.674136e+16 -320.4332
## Max P25 P75 IQR Fence_Low Fence_High
## 1 358.5668 -128.8962 91.43061 220.3268 -459.3864 421.9208
#Supuesto Normalidad
shapiro.test(residuales$residual)
##
## Shapiro-Wilk normality test
##
## data: residuales$residual
## W = 0.96, p-value = 0.06887
La prueba entrega un p-value 0.06887 (mayor que alfa 0.05, algo algo cerca ), por tanto no se puede rechazar la hipótesis de que los residuales del modelo propuesto, presenten un comportamiento aproximadamente como Distribución de Probabilidad Normal.
htrat<-Levene.Test(rendimiento~trat+replica, data = datos,center="mean") #
summary(htrat)
##
## --- Homoscedasticity Test Summary ---
##
## Method applied : Levene (mean) - global by cells
## F Statistic : 1.517125
## Degrees of freedom : 17 (between), 36 (within)
## p-value : 0.1437989 ns
## Decision (alpha = 0.05): Homoscedastic (cells)
## ----------------------------------------
##
## >> ANOVA sobre desviaciones absolutas (descomposicion factorial)
## Metodo: ANOVA on |Y - cell_center| (mean), SS Type I (sequential)
##
## Term DF F p Signif Interpretacion
## trat 5 4.4823 0.002071 ** variance differs
## replica 2 0.7618 0.472600 ns no evidence
## Residuals 46 NA NA no evidence
## ----------------------------------------
de acuerdo a la información se visualiza heterocedásticidad entre tratamientos. Lo que implica en anova una corrección de Welch, así mismo el procedimiento Post Hoc debe considerar la falta de homocedásticidad, de ser necesario, se recomienda Games Howell corregido para bloques.
Se considera un Diseño en Bloques al Azar, variable primaria al Tratamiento y Secundaria el Bloque (distancia con la fuente de agua).
# Permite modelar varianzas diferentes por tratamiento
modR<-lm(rendimiento~ replica+trat,data=datos)
#revisar aplicacion
anova(modR)
## Analysis of Variance Table
##
## Response: rendimiento
## Df Sum Sq Mean Sq F value Pr(>F)
## replica 2 17072 8536 0.2215 0.8022
## trat 5 12081108 2416222 62.7024 <2e-16 ***
## Residuals 46 1772600 38535
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
\(H_0\) : los tratamiento NO provocan alguna diferencia en el rendimiento del cultivo
No se observa un efecto diferenciador provocado por la replica. Esto significa que No hay diferencias sistemáticas entre las replicas de los tratamiento aplicados al cultivo. Dado lo anterior se justifica la decisión de tomar Dosis como bloque, provocando una reducción de la variabilidad residual, mejorando la precisión del modelo.
En conclusión para el anova, No se puede aceptar la hipótesis \(H_0\), basado en que el p value es muy
significativo (p < 0.000). Esto indica que habría una diferencia a
nivel de tratamiento.
Entonces, existe al menos un tratamiento que provoca un mejor
rendimiento independiente de la cercania con la fuente de agua.
resGH<-pairwisePermutationTest(rendimiento ~ trat,
data = datos,
method = "fdr")
print(resGH)
## Comparison Stat p.value p.adjust
## 1 Control - prod1 = 0 -4.017 5.899e-05 0.0002636
## 2 Control - prod2 = 0 -4.042 5.307e-05 0.0002636
## 3 Control - prod3 = 0 -3.817 0.000135 0.0004050
## 4 Control - prod4 = 0 -4.05 5.119e-05 0.0002636
## 5 Control - prod5 = 0 -3.975 7.028e-05 0.0002636
## 6 prod1 - prod2 = 0 2.396 0.01656 0.0207000
## 7 prod1 - prod3 = 0 3.415 0.0006378 0.0013670
## 8 prod1 - prod4 = 0 3.669 0.0002437 0.0006092
## 9 prod1 - prod5 = 0 2.215 0.02674 0.0308500
## 10 prod2 - prod3 = 0 3.043 0.002344 0.0035550
## 11 prod2 - prod4 = 0 3.29 0.001003 0.0018810
## 12 prod2 - prod5 = 0 0.02612 0.9792 0.9792000
## 13 prod3 - prod4 = 0 0.06586 0.9475 0.9792000
## 14 prod3 - prod5 = 0 -2.79 0.005272 0.0071890
## 15 prod4 - prod5 = 0 -3.039 0.00237 0.0035550
de acuerdo a la test de Games Howell se observan 3 grupos de tratamientos, donde Producto 3 y Producto 4 presentan un comportamiento similar, así como Producto 2 y Producto 5
luego las diferencias de rendimiento del cultivo, se pueden observar en la siguiente gráfica.
resumen<-datos %>%
group_by(trat) %>%
summarise(Prom=mean(rendimiento),
se = sd(rendimiento)/sqrt(n())
)
letters_result <- cldList(p.adjust ~ Comparison,
data = resGH,
threshold = 0.05)
temp <- left_join(resumen, letters_result,
by = c("trat" = "Group"))
temp <- temp %>% arrange(Prom)
temp$grupo_id <- as.numeric(factor(temp$Letter, levels = unique(temp$Letter)))
# Asignar nuevas letras en orden alfabético
temp$letra <- letters[temp$grupo_id]
# 6. Resultado final
resumen <- temp %>%
# select(trat, Prom, letra) %>%
arrange(Prom)
resumen$trat<-as.factor(resumen$trat)
ggplot(transform(resumen, trat = reorder(trat,
Prom,
FUN = mean, na.rm = TRUE)),
aes(x = trat, y = Prom, fill=trat)) +
geom_bar(stat = "identity", width = 0.5) +
geom_errorbar(aes(ymin = Prom - se, ymax = Prom + se),
width = 0.2,
color = "gray30") +
ylab("rendimiento Promedio") +
scale_y_continuous(limits = c(0, 2000),
expand = expansion(mult = c(0, 0.05))) +
ggtitle("rendimiento promedio en la col por tratamiento")+
geom_text(aes(label = resumen$letra),
vjust = -2.5,
size = 5) +
theme_minimal() +
theme(aspect.ratio = .8/1, # Relación alto:ancho = 1:1.5
plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
axis.title = element_text(size = 12),
axis.text = element_text(size = 11),
legend.position = "none")
Luego, el Producto 1, tendria un mayor efecto provocando un mayor rendimiento en el cultivo.