Utilizaremos el dataset “VACAS” disponible en Agrarias Virtual.
# Con el argumento "sheet" le indicamos la hoja que debe cargar
VACUNAS<- read_excel("VACAS.xlsx", sheet = "tambo")
VACUNAS## # A tibble: 30 × 4
## TAMBO SUPLEMENTO REPETICION PROTEINA_BRUTA
## <chr> <chr> <dbl> <dbl>
## 1 I control 1 3.19
## 2 II control 2 3.16
## 3 III control 3 3.25
## 4 IV control 4 3.48
## 5 V control 5 3.25
## 6 VI control 6 3.1
## 7 I S1 1 3.03
## 8 II S1 2 3.07
## 9 III S1 3 3.23
## 10 IV S1 4 3.3
## # ℹ 20 more rows
## tibble [30 × 4] (S3: tbl_df/tbl/data.frame)
## $ TAMBO : chr [1:30] "I" "II" "III" "IV" ...
## $ SUPLEMENTO : chr [1:30] "control" "control" "control" "control" ...
## $ REPETICION : num [1:30] 1 2 3 4 5 6 1 2 3 4 ...
## $ PROTEINA_BRUTA: num [1:30] 3.19 3.16 3.25 3.48 3.25 3.1 3.03 3.07 3.23 3.3 ...
| Name | VACUNAS |
| Number of rows | 30 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 2 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| TAMBO | 0 | 1 | 1 | 3 | 0 | 6 | 0 |
| SUPLEMENTO | 0 | 1 | 2 | 7 | 0 | 5 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| REPETICION | 0 | 1 | 3.50 | 1.74 | 1.00 | 2.00 | 3.50 | 5.00 | 6.00 | ▇▃▃▃▃ |
| PROTEINA_BRUTA | 0 | 1 | 3.25 | 0.15 | 2.93 | 3.17 | 3.25 | 3.35 | 3.54 | ▂▃▇▅▃ |
Responder - Objetivo del estudio - ¿Cuál es la unidad experimental? - ¿Cuál es el factor en estudio y cuáles son sus niveles? - ¿Cuántas repeticiones tiene cada tratamiento?
Tambo -> factor
Suplemento -> factor
Repeticiones -> factor (es un identificador)
Proteína bruta -> numérica
VACUNAS <- VACUNAS %>%
mutate(
TAMBO = factor(TAMBO),
SUPLEMENTO = factor(SUPLEMENTO),
REPETICION = factor(REPETICION)
)## tibble [30 × 4] (S3: tbl_df/tbl/data.frame)
## $ TAMBO : Factor w/ 6 levels "I","II","III",..: 1 2 3 4 5 6 1 2 3 4 ...
## $ SUPLEMENTO : Factor w/ 5 levels "control","S1",..: 1 1 1 1 1 1 2 2 2 2 ...
## $ REPETICION : Factor w/ 6 levels "1","2","3","4",..: 1 2 3 4 5 6 1 2 3 4 ...
## $ PROTEINA_BRUTA: num [1:30] 3.19 3.16 3.25 3.48 3.25 3.1 3.03 3.07 3.23 3.3 ...
| Name | VACUNAS |
| Number of rows | 30 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| factor | 3 |
| numeric | 1 |
| ________________________ | |
| Group variables | None |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| TAMBO | 0 | 1 | FALSE | 6 | I: 5, II: 5, III: 5, IV: 5 |
| SUPLEMENTO | 0 | 1 | FALSE | 5 | con: 6, S1: 6, S2: 6, S3: 6 |
| REPETICION | 0 | 1 | FALSE | 6 | 1: 5, 2: 5, 3: 5, 4: 5 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| PROTEINA_BRUTA | 0 | 1 | 3.25 | 0.15 | 2.93 | 3.17 | 3.25 | 3.35 | 3.54 | ▂▃▇▅▃ |
## Descriptive Statistics
## PROTEINA_BRUTA by (SUPLEMENTO)
## Data Frame: VACUNAS
## N: 30
##
## control S1 S2 S3 S4
## ----------------- --------- -------- -------- -------- --------
## Mean 3.24 3.15 3.15 3.34 3.38
## Std.Dev 0.13 0.12 0.15 0.09 0.12
## Min 3.10 3.03 2.93 3.22 3.20
## Q1 3.16 3.05 3.06 3.28 3.33
## Median 3.22 3.15 3.16 3.32 3.37
## Q3 3.25 3.25 3.24 3.44 3.45
## Max 3.48 3.30 3.33 3.45 3.54
## MAD 0.07 0.15 0.13 0.10 0.09
## IQR 0.08 0.19 0.18 0.14 0.10
## CV 0.04 0.04 0.05 0.03 0.03
## Skewness 0.80 0.06 -0.17 0.12 -0.10
## SE.Skewness 0.85 0.85 0.85 0.85 0.85
## Kurtosis -0.86 -2.16 -1.77 -1.94 -1.37
## N.Valid 6.00 6.00 6.00 6.00 6.00
## N 6.00 6.00 6.00 6.00 6.00
## Pct.Valid 100.00 100.00 100.00 100.00 100.00
ggplot(VACUNAS, aes(x = SUPLEMENTO, y = PROTEINA_BRUTA, fill = SUPLEMENTO)) +
geom_boxplot() +
labs(title = "Proteína bruta en leche según suplemento",
x = "Suplemento", y = "Proteína bruta (%)") +
theme_minimal()Ajustamos un modelo ANAVA para evaluar diferencias entre tratamientos en un DBCA.
Vamos a usar la función aov() que es parte del
paquete básico de R.
Función con argumentos:
aov(VARIABLE_RESPUESTA ~ FACTOR + BLOQUE, datos = BASE_DE_DATOS)
# Creamos el objeto modelo_dca
modelo_dbca <- aov(PROTEINA_BRUTA ~ SUPLEMENTO + TAMBO, data = VACUNAS)
summary(modelo_dbca)## Df Sum Sq Mean Sq F value Pr(>F)
## SUPLEMENTO 4 0.26035 0.06509 14.72 9.30e-06 ***
## TAMBO 5 0.28739 0.05748 13.00 1.03e-05 ***
## Residuals 20 0.08845 0.00442
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
H0: SI cumple el supuesto de Homocedasticidad.
H1: NO se cumple el supuesto de Homocedasticidad
# Para esta prueba usamos una función de la librería "car"
leveneTest(PROTEINA_BRUTA ~ SUPLEMENTO, data = VACUNAS)## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 0.5269 0.7169
## 25
# Usaremos una función del paquete agricolae
TUKEY_DBCA <- HSD.test(modelo_dbca, "SUPLEMENTO")
TUKEY_DBCA## $statistics
## MSerror Df Mean CV MSD
## 0.004422333 20 3.250667 2.045753 0.1148897
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey SUPLEMENTO 5 4.231857 0.05
##
## $means
## PROTEINA_BRUTA std r se Min Max Q25 Q50 Q75
## control 3.238333 0.13136463 6 0.02714877 3.10 3.48 3.1675 3.220 3.2500
## S1 3.155000 0.11794066 6 0.02714877 3.03 3.30 3.0550 3.150 3.2450
## S2 3.146667 0.14827902 6 0.02714877 2.93 3.33 3.0650 3.160 3.2400
## S3 3.336667 0.09352362 6 0.02714877 3.22 3.45 3.2800 3.315 3.4175
## S4 3.376667 0.11518102 6 0.02714877 3.20 3.54 3.3350 3.370 3.4350
##
## $comparison
## NULL
##
## $groups
## PROTEINA_BRUTA groups
## S4 3.376667 a
## S3 3.336667 ab
## control 3.238333 bc
## S1 3.155000 c
## S2 3.146667 c
##
## attr(,"class")
## [1] "group"
## $statistics
## MSerror Df Mean CV t.value LSD
## 0.004422333 20 3.250667 2.045753 2.085963 0.0800888
##
## $parameters
## test p.ajusted name.t ntr alpha
## Fisher-LSD none SUPLEMENTO 5 0.05
##
## $means
## PROTEINA_BRUTA std r se LCL UCL Min Max
## control 3.238333 0.13136463 6 0.02714877 3.181702 3.294965 3.10 3.48
## S1 3.155000 0.11794066 6 0.02714877 3.098369 3.211631 3.03 3.30
## S2 3.146667 0.14827902 6 0.02714877 3.090035 3.203298 2.93 3.33
## S3 3.336667 0.09352362 6 0.02714877 3.280035 3.393298 3.22 3.45
## S4 3.376667 0.11518102 6 0.02714877 3.320035 3.433298 3.20 3.54
## Q25 Q50 Q75
## control 3.1675 3.220 3.2500
## S1 3.0550 3.150 3.2450
## S2 3.0650 3.160 3.2400
## S3 3.2800 3.315 3.4175
## S4 3.3350 3.370 3.4350
##
## $comparison
## NULL
##
## $groups
## PROTEINA_BRUTA groups
## S4 3.376667 a
## S3 3.336667 a
## control 3.238333 b
## S1 3.155000 c
## S2 3.146667 c
##
## attr(,"class")
## [1] "group"
agricolaeVamos a asignar los tratamientos seleccionados a las U.E. o parcelas usando el paquete agricolae de R.
Recordemos: en un DBCA los tratamientos se asignan al azar dentro de cada bloque, asegurando que en cada bloque estén presentes todos los tratamientos.
# Vector de tratamientos (5 tratamientos)
tratamientos <- c("control", "S1", "S2", "S3", "S4")
# Número de repeticiones = número de bloques (4 bloques)
tambos <- 6
# Asignación aleatoria con agricolae (una sola vez)
# design.rcbd: Randomized Complete Block Design
diseno_dbca <- design.rcbd(tratamientos, r = tambos, serie = 1, seed = 123)
# Mostrar la tabla ("field book") con la asignación aleatoria de tratamientos
diseno_dbca$book## plots block tratamientos
## 1 11 1 control
## 2 12 1 S2
## 3 13 1 S3
## 4 14 1 S4
## 5 15 1 S1
## 6 21 2 S1
## 7 22 2 control
## 8 23 2 S4
## 9 24 2 S2
## 10 25 2 S3
## 11 31 3 control
## 12 32 3 S3
## 13 33 3 S1
## 14 34 3 S4
## 15 35 3 S2
## 16 41 4 S4
## 17 42 4 S2
## 18 43 4 S3
## 19 44 4 S1
## 20 45 4 control
## 21 51 5 S3
## 22 52 5 control
## 23 53 5 S2
## 24 54 5 S4
## 25 55 5 S1
## 26 61 6 S2
## 27 62 6 S1
## 28 63 6 S3
## 29 64 6 control
## 30 65 6 S4
Argumentos
Si deseo que sea totalmente aleatoria…
dbca_random <- design.rcbd(tratamientos, r = tambos, serie = 1, randomization = TRUE)
dbca_random$book## plots block tratamientos
## 1 11 1 S3
## 2 12 1 control
## 3 13 1 S2
## 4 14 1 S1
## 5 15 1 S4
## 6 21 2 S2
## 7 22 2 S1
## 8 23 2 control
## 9 24 2 S4
## 10 25 2 S3
## 11 31 3 S3
## 12 32 3 control
## 13 33 3 S1
## 14 34 3 S4
## 15 35 3 S2
## 16 41 4 S4
## 17 42 4 S2
## 18 43 4 S1
## 19 44 4 S3
## 20 45 4 control
## 21 51 5 S3
## 22 52 5 S4
## 23 53 5 control
## 24 54 5 S1
## 25 55 5 S2
## 26 61 6 S4
## 27 62 6 control
## 28 63 6 S2
## 29 64 6 S1
## 30 65 6 S3
## [,1] [,2] [,3] [,4] [,5]
## [1,] "S3" "control" "S2" "S1" "S4"
## [2,] "S2" "S1" "control" "S4" "S3"
## [3,] "S3" "control" "S1" "S4" "S2"
## [4,] "S4" "S2" "S1" "S3" "control"
## [5,] "S3" "S4" "control" "S1" "S2"
## [6,] "S4" "control" "S2" "S1" "S3"