Paquetes necesarios
library(tidyverse)
library(agricolae)
library(multcomp)
library(lsmeans)
library(multcompView)
library(ggpubr)
library(knitr)
Diseño completamente al azar
Ejemplo
Se realizó un experimento en el cultivo del plátano fruta (Musa AAAB), clon FHIA 01v1 utilizando un diseño completamente al azar con el objetivo de evaluar 3 frecuencias de riego. Los tratamientos fueron los siguientes:
- T1: Regar diariamente (7riegos).
- T2: Regar interdiario (3,5 riegos)
- T3: Regar cada 3 días (2 riegos semanales).
Se probó cada frecuencia en un campo de una unidad rotacional en un sistema de riego localizado. En cada campo se muestrearon 20 plantas.
Para evaluar los tratamientos se utilizó como variable:
El peso de racimo en Kg
Datos
Una vez importada esta tabla de datos R, se debe transformar a forma Tidy donde cada variable debe ser una columna, para este caso tratamientos y peso, esto se hará a traves de la función gather
Transformacion de datos a foma Tidy
A traves de la funcion as_factor
, transformamos la variable tratamientos a un factor de tres niveles.
datos_tidy <- datos %>% gather(key=tratamientos, value= peso)
datos_tidy$tratamientos <- as_factor(datos_tidy$tratamientos)
str(datos_tidy)
## tibble [60 x 2] (S3: tbl_df/tbl/data.frame)
## $ tratamientos: Factor w/ 3 levels "trat1","trat2 ",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ peso : num [1:60] 35.5 36.1 38.3 33.7 39.2 42.3 45.1 36.7 35.1 36.9 ...
Crear modelo
Para esto usamos la funcion aov
donde evaluamos la variable peso en funcion de los tratamientos.
modelo<-aov(peso~tratamientos,data=datos_tidy)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## tratamientos 2 1743.2 871.6 65.29 1.8e-15 ***
## Residuals 57 760.9 13.3
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Como se observa en los resultados el Fvalue es mayor que la Ftab por lo que podemos concluir diciendo que existen diferencias significativas entre los tratamientos (***), pero no sabemos entre cuales por lo que debemos aplicar una prueba de comparación de medias.
Prueba de Duncan
duncan <- duncan.test(modelo,"tratamientos",alpha=0.05, console = TRUE)
##
## Study: modelo ~ "tratamientos"
##
## Duncan's new multiple range test
## for peso
##
## Mean Square Error: 13.34925
##
## tratamientos, means
##
## peso std r Min Max
## trat1 38.610 3.836926 20 33.2 45.6
## trat2 37.355 4.156602 20 32.1 46.7
## trat3 26.600 2.836974 20 21.4 33.2
##
## Alpha: 0.05 ; DF Error: 57
##
## Critical Range
## 2 3
## 2.313628 2.433753
##
## Means with the same letter are not significantly different.
##
## peso groups
## trat1 38.610 a
## trat2 37.355 a
## trat3 26.600 b
Graficamos
Como podemos observar en la prueba de comparación de medias entre el tratamiento 1 y 2 no existen diferencias; ambos tratamientos difieren del tratamiento 3, por lo que podemos aplicar cualquiera de los dos normas de riego o sea T1 o T2.
plot(duncan)
Diseño de bloques al azar
Ejemplo
En un experimento bajo el diseño de bloques al azar se compararon 4 normas de riego en el cultivo del plátano fruta clón “Cavendish gigante”en el ciclo de fomento.
Los tratamientos evaluados fueron:
- T1- Regar cuando la humedad en el suelo llegue a 0,40 bar (40 centibar).
- T2- Regar cuando la humedad en el suelo llegue a 0,45 bar.(45 centibar).
- T3- Regar cuando la humedad en el suelo llegue a 0,5 bar (50 centibar).
- T4- No regar.
Para evaluar los tratamientos se utilizó como variable principal: Rendimiento expresado en toneladas por hectárea, los datos son los siguientes.
## # A tibble: 20 x 3
## tratamientos replicas valor
## <fct> <fct> <dbl>
## 1 A 1 48.0
## 2 A 2 48
## 3 A 3 48.0
## 4 A 4 48.8
## 5 A 5 47.2
## 6 B 1 44.2
## 7 B 2 44.0
## 8 B 3 44.4
## 9 B 4 44.1
## 10 B 5 44.3
## 11 C 1 42.6
## 12 C 2 42.3
## 13 C 3 42.9
## 14 C 4 42.1
## 15 C 5 43.1
## 16 D 1 37.7
## 17 D 2 37.3
## 18 D 3 38.0
## 19 D 4 37.2
## 20 D 5 37
Las hipótesis que se van a probar son:
- H0 : T1 = T2 = T3 = T4 vs Al menos un tratamiento desigual.
- H0 : R1 = R2 = R3 = R4 vs Al menos una réplica desigual.
Estas hipótesis se prueban mediante un análisis de varianza.
Realizaremos el análisis del rendimiento expresado en toneladas por hectárea.
modelo <- aov(rendimiento~tratamientos + replicas, data = RBD)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## tratamientos 3 287.03 95.68 548.126 4.23e-13 ***
## replicas 4 0.51 0.13 0.729 0.589
## Residuals 12 2.09 0.17
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En el análisis de varianza podemos observar que para el caso de los 3 tratamientos, en este caso las 4 normas de riego, existen diferencias ya que la Fcal es mayor que la Ftab, con probabilidad de error menor de 0.01. Por lo tanto al menos uno de los tratamientos es diferente a los demás. Para encontrar cuales tratamientos difieren significativamente es necesario hacer una comparación de medias. Entre las réplicas no existen diferencias. Como no sabemos entre cuales tratamientos existen diferencias, debemos aplicar una prueba de comparación de medias.
Comparación de medias por TUKEY
tukey <- HSD.test(modelo,"tratamientos", group=FALSE, alpha = 0.01)
print(tukey)
## $statistics
## MSerror Df Mean CV MSD
## 0.17455 12 43.0605 0.9702438 1.027936
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey tratamientos 4 5.501626 0.01
##
## $means
## rendimiento std r Min Max Q25 Q50 Q75
## A 47.990 0.5586591 5 47.20 48.78 47.98 47.99 48.00
## B 44.224 0.1681666 5 44.01 44.45 44.13 44.22 44.31
## C 42.582 0.3898974 5 42.11 43.06 42.30 42.58 42.86
## D 37.446 0.3980955 5 37.00 38.02 37.25 37.30 37.66
##
## $comparison
## difference pvalue signif. LCL UCL
## A - B 3.766 0e+00 *** 2.7380642 4.793936
## A - C 5.408 0e+00 *** 4.3800642 6.435936
## A - D 10.544 0e+00 *** 9.5160642 11.571936
## B - C 1.642 2e-04 *** 0.6140642 2.669936
## B - D 6.778 0e+00 *** 5.7500642 7.805936
## C - D 5.136 0e+00 *** 4.1080642 6.163936
##
## $groups
## NULL
##
## attr(,"class")
## [1] "group"
Como podemos observar existen diferencias entre los 4 tratamientos, siendo el de mejor comportamiento regar cuando la humedad del suelo es de 0.40 bar
Graficamos
En este caso usaremos el paquete ggplot2
ggplot(RBD, aes(tratamientos, rendimiento)) +
geom_boxplot(aes(color=rendimiento), show.legend = FALSE) +
theme_bw() +
stat_summary(geom = "point", fun = "mean", color="red")+
xlab("Tratamientos") + ylab("Rendimiento en Kg/ha")
El punto rojo indica la media
Contrastes octogonales
Los contrastes ortogonales se utilizan cuando se tienen un conjunto de tratamientos cualitativos con estructura, de tal forma que es conveniente comparar un tratamiento contra el promedio de otros tratamientos o un conjunto de tratamientos contra otro conjunto de tratamientos. Es decir, se prueban hipótesis de la forma:
HO: 3T1 – T2 – T3 – T4 = 0 vs Hl : 3T1 – T2 – T3 – T4 ≠ 0
Esta hipótesis compara el efecto del tratamiento 1 contra el promedio de los efectos de los tratamientos 2, 3, 4.HO: T1 + T2 – T3 – T4 = 0 vs Hl : T1 + T2 – T3 – T4 ≠ 0
Esta hipótesis compara el efecto conjunto del tratamiento 1 y 2 contra el efecto conjunto de los tratamientos 3 y 4.
Ejemplo
Consideremos un experimento donde se compararon 4 variedades de maíz con un diseño de bloques al azar.
- Variedad 1. Precoz resistente.
- Variedad 2. Precoz susceptible.
- Variedad 3. Tardía resistente.
- Variedad 4. Tardía susceptible.
Los datos del rendimiento son:
## # A tibble: 20 x 3
## tratamientos replica rendimiento
## <fct> <fct> <dbl>
## 1 T1 1 6
## 2 T1 2 7
## 3 T1 3 7
## 4 T1 4 8
## 5 T1 5 7
## 6 T2 1 5
## 7 T2 2 6
## 8 T2 3 7
## 9 T2 4 8
## 10 T2 5 8
## 11 T3 1 7
## 12 T3 2 7
## 13 T3 3 8
## 14 T3 4 9
## 15 T3 5 9
## 16 T4 1 8
## 17 T4 2 9
## 18 T4 3 8
## 19 T4 4 10
## 20 T4 5 9
Se hace el analisis de varienza igual que en diseño de bloques al azar
modelo <- aov(rendimiento~tratamientos + replica, data = octogonal)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## tratamientos 3 12.95 4.317 15.70 0.000187 ***
## replica 4 12.30 3.075 11.18 0.000514 ***
## Residuals 12 3.30 0.275
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Las hipótesis que se desean probar son:
- H0: T1 + T2 – T3 – T4 = 0 vs Hl : T1 + T2 – T3 – T4 ≠ 0
- H0: T1 - T2 = 0 vs Hl : T1 - T2 ≠ 0
- H0: T3 – T4 = 0 vs Hl : T3 – T4 ≠ 0
La primera hipótesis compara las variedades precoces contra tardías la segunda hipótesis compara las dos variedades precoces y la tercera hipótesis compara las dos variedades tardías.
Estas hipótesis se prueban en un análisis de varianza.
Creamos los contrastes
contraste <- rbind(c(1,1,-1,-1),c(1, -1, 0, 0), c(0,0,-1,1))
filas<-c("precoz vs tardio","precoz vs precoz" , "tardia vs tardia")
columnas<-c("V1", "V2","V3", "V4")
dimnames(contraste)<-list(filas,columnas)
dimnames(contraste)
## [[1]]
## [1] "precoz vs tardio" "precoz vs precoz" "tardia vs tardia"
##
## [[2]]
## [1] "V1" "V2" "V3" "V4"
contraste
## V1 V2 V3 V4
## precoz vs tardio 1 1 -1 -1
## precoz vs precoz 1 -1 0 0
## tardia vs tardia 0 0 -1 1
Ejecutamos la prueba
con_octo <-glht(modelo, linfct = mcp(tratamientos= contraste))
summary(con_octo)
##
## Simultaneous Tests for General Linear Hypotheses
##
## Multiple Comparisons of Means: User-defined Contrasts
##
##
## Fit: aov(formula = rendimiento ~ tratamientos + replica, data = octogonal)
##
## Linear Hypotheses:
## Estimate Std. Error t value Pr(>|t|)
## precoz vs tardio == 0 -3.0000 0.4690 -6.396 <0.001 ***
## precoz vs precoz == 0 0.2000 0.3317 0.603 0.905
## tardia vs tardia == 0 0.8000 0.3317 2.412 0.091 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- single-step method)
El análisis de varianza muestra que el efecto conjunto de los tratamientos 1 y 2 es diferente al efecto conjunto de los tratamientos 3 y 4. Los tratamientos 1 y 2 no son diferentes. Los tratamientos 3 y 4 difieren significativamente.
Diseño Cuadrado Latino
Ejemplo
En un experimento bajo el diseño de Cuadrado Latino se compararon 5 tipos de fertilizantes:
- F1- NPK + 30 mg bb-16
- F2- NPK + 45 mg bb-16
- F3- NPK + 60 mg bb-16
- F4-NPK.
- F5- Sin fertilizantes.
La tabla siguiente muestra los datos del rendimiento de la soya para los 5 fertilizantes.
Traemos los datos a R en forma Tidy
print(latino[])
## # A tibble: 25 x 4
## filas columnas tratamientos rendimiento
## <fct> <fct> <fct> <dbl>
## 1 I 1 F1 22
## 2 I 2 F2 20
## 3 I 3 F3 19
## 4 I 4 F4 10
## 5 I 5 F5 10
## 6 II 1 F2 24
## 7 II 2 F3 17
## 8 II 3 F4 12
## 9 II 4 F5 6
## 10 II 5 F1 21
## # ... with 15 more rows
Hacemos eñ analisis de varianza
modelo <- aov(rendimiento~tratamientos+filas+columnas, data = latino)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## tratamientos 4 890.8 222.7 44.54 4.18e-07 ***
## filas 4 4.0 1.0 0.20 0.9335
## columnas 4 55.2 13.8 2.76 0.0774 .
## Residuals 12 60.0 5.0
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Para el caso de los tratamientos existen diferencias, por lo que debemos aplicar una prueba de comparación de medias.
DUN <- duncan.test(modelo,"tratamientos", console=TRUE)
##
## Study: modelo ~ "tratamientos"
##
## Duncan's new multiple range test
## for rendimiento
##
## Mean Square Error: 5
##
## tratamientos, means
##
## rendimiento std r Min Max
## F1 22.2 1.923538 5 20 25
## F2 22.6 2.073644 5 20 25
## F3 16.4 3.286335 5 11 19
## F4 13.2 2.280351 5 10 16
## F5 6.6 2.408319 5 4 10
##
## Alpha: 0.05 ; DF Error: 12
##
## Critical Range
## 2 3 4 5
## 3.081307 3.225244 3.312453 3.370172
##
## Means with the same letter are not significantly different.
##
## rendimiento groups
## F2 22.6 a
## F1 22.2 a
## F3 16.4 b
## F4 13.2 c
## F5 6.6 d
Como podemos observar entre el tratamiento 1 y 2 no existen diferencias, pero si entre estos dos y los restantes.
Experimento bifactorial con diseño completamente al azar
Ejemplo Se realizó un experimento en el cultivo del plátano fruta (Musa AAAB) con el objetivo de evaluar 2 clones con 3 normas riego. Los clones fueron:
-C1 FHIA 01 -C2 FHIA 18
Las normas de riego fueron:
- N1: 25 mm semanales
- N2: 44 mm semanales
- N3: 80 mm semanales
Se muestreó un campo por cada tratamiento midiéndose el peso del racimo (expresado en kg) en 10 m plantones de cada campo.
Los resultados son los siguientes:
Traemos los datos R
## # A tibble: 60 x 3
## clon riego peso
## <fct> <fct> <dbl>
## 1 C1 N1 33
## 2 C1 N1 33.2
## 3 C1 N1 32.9
## 4 C1 N1 33.7
## 5 C1 N1 33.4
## 6 C1 N1 32.6
## 7 C1 N1 34
## 8 C1 N1 33.5
## 9 C1 N1 33.9
## 10 C1 N1 32.9
## # ... with 50 more rows
Hacemos el modelo
modelo <- aov(peso~clon*riego, data = bifactorial)
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## clon 1 318.8 318.8 164.0 < 2e-16 ***
## riego 2 610.6 305.3 157.1 < 2e-16 ***
## clon:riego 2 62.6 31.3 16.1 3.28e-06 ***
## Residuals 54 105.0 1.9
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Se puede observar que para el caso de los tratamientos no buscamos la significación ya que en los experimentos factoriales en los tratamientos están incluidos los factores en estudio y la interacción entre los factores.
Como resultado del análisis de varianza podemos observar que existen diferencias entre la interacción entre los factores clones y normas de riego así como entre los clones y entre las normas de riego. La interpretación de un análisis de varianza de un experimento bifactorial se inicia observando el efecto de la interacción.
En nuestro ejemplo se encontró diferencia significativa en la interacción, por lo que es necesario comparar las medias de la s normas de riego dentro de cada clon y/o las medias de cada clon dentro de cada norma o también comparar todas contra todas.
Hacemos una tabla de promedios
model.tables(modelo, "mean")
## Tables of means
## Grand mean
##
## 32.57167
##
## clon
## clon
## C1 C2
## 30.27 34.88
##
## riego
## riego
## N1 N2 N3
## 36.73 28.98 31.99
##
## clon:riego
## riego
## clon N1 N2 N3
## C1 33.31 26.45 31.04
## C2 40.16 31.52 32.95
Evaluamos las interacciones
posthoc <- lsmeans(modelo,
pairwise ~ clon*riego,
adjust="tukey")
cld(posthoc[[1]],
alpha=.05,
Letters=letters)
## clon riego lsmean SE df lower.CL upper.CL .group
## C1 N2 26.4 0.441 54 25.2 27.7 a
## C1 N3 31.0 0.441 54 29.8 32.2 b
## C2 N2 31.5 0.441 54 30.3 32.7 bc
## C2 N3 33.0 0.441 54 31.7 34.2 c
## C1 N1 33.3 0.441 54 32.1 34.5 c
## C2 N1 40.2 0.441 54 39.0 41.4 d
##
## Confidence level used: 0.95
## Conf-level adjustment: sidak method for 6 estimates
## P value adjustment: tukey method for comparing a family of 6 estimates
## significance level used: alpha = 0.05
Medias con letras diferentes difieren significativamente, P < 0.05 Como podemos observar existen diferencias entre la combinación C2N1 con el resto de las combinaciones, no existen diferencias entre C1N1 y C2N3, ni entre C2N2 y C1N3, así como entre A1B2 y el resto de las combinaciones resultando la mejor combinación A2B1 y la peor C1N2.
Graficamos la interacción
plot <- ggline(bifactorial, x = "riego", y = "peso", color = "clon",
add = c("mean_se", "dotplot")) +theme_bw() + ggtitle("Grafica de interaccion")
plot
## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
Bibliografia
Universidad Jose Carlos Mariategui. Experimentacion agricola. Escuela Profesional de ingenieria agronomica. Peru. 2009