Una empresa de alimentos está estudiando el efecto de 4 temperaturas sobre el rendimiento del almidón de yuca (en gramos). Cada evaluación tarda aproximadamente una hora y media, por lo que solamente se pueden realizar 4 evaluaciones por dÃa. La idea general consiste en realizar una repetición completa del experimento en cada uno de los niveles del factor de control (factor bloque) y se realiza la aleatorización de los tratamientos dentro de cada bloque.
| Temperatura | Dia 1 | Dia 2 | Dia 3 | Dia 4 |
|---|---|---|---|---|
| 30 | 14 | 14.1 | 14.5 | 14 |
| 35 | 13.9 | 13.8 | 14.2 | 14 |
| 40 | 14.1 | 14.2 | 14.4 | 13.9 |
| 45 | 13 | 13.1 | 13.5 | 13.2 |
#install.packages("tidyverse")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Yuca_desordenada <- read_csv("data/Yuca_desordenada.csv")
## Rows: 4 Columns: 5
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (5): Temperatura, Dia 1, Dia 2, Dia 3, Dia 4
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
yuca <- Yuca_desordenada %>%
pivot_longer(cols = `Dia 1`:`Dia 4`,
names_to = "Dia",
values_to = "Rendimiento")
knitr::kable(yuca)
| Temperatura | Dia | Rendimiento |
|---|---|---|
| 30 | Dia 1 | 14.0 |
| 30 | Dia 2 | 14.1 |
| 30 | Dia 3 | 14.5 |
| 30 | Dia 4 | 14.0 |
| 35 | Dia 1 | 13.9 |
| 35 | Dia 2 | 13.8 |
| 35 | Dia 3 | 14.2 |
| 35 | Dia 4 | 14.0 |
| 40 | Dia 1 | 14.1 |
| 40 | Dia 2 | 14.2 |
| 40 | Dia 3 | 14.4 |
| 40 | Dia 4 | 13.9 |
| 45 | Dia 1 | 13.0 |
| 45 | Dia 2 | 13.1 |
| 45 | Dia 3 | 13.5 |
| 45 | Dia 4 | 13.2 |
str(yuca) #estructura de los datos
## tibble [16 × 3] (S3: tbl_df/tbl/data.frame)
## $ Temperatura: num [1:16] 30 30 30 30 35 35 35 35 40 40 ...
## $ Dia : chr [1:16] "Dia 1" "Dia 2" "Dia 3" "Dia 4" ...
## $ Rendimiento: num [1:16] 14 14.1 14.5 14 13.9 13.8 14.2 14 14.1 14.2 ...
yuca$Temperatura <- as.factor(yuca$Temperatura)
yuca$Dia <- as.factor(yuca$Dia)
#calculado rento total
sum(yuca$Rendimiento)
## [1] 221.9
# Creacion de nueva columnas
yuca <- yuca %>%
mutate(rento_perc=(Rendimiento/sum(yuca$Rendimiento))*100)
# Resumen de los datos
str(yuca)
## tibble [16 × 4] (S3: tbl_df/tbl/data.frame)
## $ Temperatura: Factor w/ 4 levels "30","35","40",..: 1 1 1 1 2 2 2 2 3 3 ...
## $ Dia : Factor w/ 4 levels "Dia 1","Dia 2",..: 1 2 3 4 1 2 3 4 1 2 ...
## $ Rendimiento: num [1:16] 14 14.1 14.5 14 13.9 13.8 14.2 14 14.1 14.2 ...
## $ rento_perc : num [1:16] 6.31 6.35 6.53 6.31 6.26 ...
summary(yuca)
## Temperatura Dia Rendimiento rento_perc
## 30:4 Dia 1:4 Min. :13.00 Min. :5.858
## 35:4 Dia 2:4 1st Qu.:13.72 1st Qu.:6.185
## 40:4 Dia 3:4 Median :14.00 Median :6.309
## 45:4 Dia 4:4 Mean :13.87 Mean :6.250
## 3rd Qu.:14.12 3rd Qu.:6.365
## Max. :14.50 Max. :6.534
bxp_temp <- yuca %>% ggplot(aes(x = Temperatura, y = Rendimiento, fill = Temperatura)) +
geom_boxplot() +
labs(x = "Temperatura (°C)", y = "Rendimiento (%)", title = "Boxplot - Temperatura")
ggsave(plot = bxp_temp, "bxp_temp.png", dpi = 300, units = "in", height = 6, width = 8)
bxp_temp
bxp_dias <- yuca %>% ggplot(aes(x = Dia, y = Rendimiento, fill = Dia)) +
geom_boxplot() +
labs(x = "Dias", y = "Rendimiento (%)", title = "Boxplot - Dias")
ggsave(plot = bxp_dias, "bxp_dias.png", dpi = 300, units = "in", height = 6, width = 8)
bxp_dias
bxp_dias_temp <- yuca %>% ggplot(aes(x = Dia, y = Rendimiento, col = Dia)) +
facet_wrap(~Temperatura) +
geom_point(size = 4) +
theme(axis.text.x = element_text(angle=45, vjust=1, hjust=1)) +
labs(x = NULL, y = "Rendimiento (%)", title = "Boxplot - Dias:Temperatura")
ggsave(plot = bxp_dias_temp, "bxp_dias_temp.png", dpi = 300, units = "in", height = 6, width = 8)
bxp_dias_temp
# interaccion entre dias y temperatura
yuca %>% ggplot(aes(x = Dia:Temperatura, y = Rendimiento, col = Dia:Temperatura)) +
geom_jitter(show.legend = F) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(x = "Dias", y = "Rendimiento (%)", title = "Interaccion - Dias:Temperatura")
correlacion <- yuca %>% ggplot(aes(x = Rendimiento, y = rento_perc)) +
geom_jitter(width = 0.25, height = 0.1, color = "red")+
theme_bw() +
labs(x = "Rendimiento de almidon", y = "Rendimiento porcentual", title = "Rento vs rento porcentual")
ggsave(plot = correlacion, "correlacion.png", dpi = 300, units = "in", height = 4, width = 6)
correlacion
modelo1 <- aov(Rendimiento ~ Temperatura + Dia, data = yuca)
summary(modelo1)
## Df Sum Sq Mean Sq F value Pr(>F)
## Temperatura 3 2.4669 0.8223 73.55 1.19e-06 ***
## Dia 3 0.4269 0.1423 12.73 0.00137 **
## Residuals 9 0.1006 0.0112
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Vamos a hacer la prueba para temperatura
#install.packages("agricolae")
library(agricolae)
compara_temp <- duncan.test(modelo1, "Temperatura")
knitr::kable(compara_temp$groups %>% rownames_to_column("Temperatura"))
| Temperatura | Rendimiento | groups |
|---|---|---|
| 30 | 14.150 | a |
| 40 | 14.150 | a |
| 35 | 13.975 | a |
| 45 | 13.200 | b |
Vamos a hacer la prueba para los dias (BLOQUES)
compara_dias <- duncan.test(modelo1, "Dia")
knitr::kable(compara_dias$groups %>% rownames_to_column("Dia"))
| Dia | Rendimiento | groups |
|---|---|---|
| Dia 3 | 14.150 | a |
| Dia 2 | 13.800 | b |
| Dia 4 | 13.775 | b |
| Dia 1 | 13.750 | b |
Vamos a hacer la prueba para temperatura
compara_temp <- HSD.test(modelo1, "Temperatura")
knitr::kable(compara_temp$groups %>% rownames_to_column("Temperatura"))
| Temperatura | Rendimiento | groups |
|---|---|---|
| 30 | 14.150 | a |
| 40 | 14.150 | a |
| 35 | 13.975 | a |
| 45 | 13.200 | b |
Vamos a hacer la prueba para los dias (BLOQUES)
compara_dias <- HSD.test(modelo1, "Dia")
knitr::kable(compara_dias$groups %>% rownames_to_column("Dia"))
| Dia | Rendimiento | groups |
|---|---|---|
| Dia 3 | 14.150 | a |
| Dia 2 | 13.800 | b |
| Dia 4 | 13.775 | b |
| Dia 1 | 13.750 | b |
codigo en yopad: https://yopad.eu/p/diseno_bloques_azar-365days