NOVILLOS <- read.csv("novillos.csv")
str(NOVILLOS)
## 'data.frame': 45 obs. of 6 variables:
## $ TRATAMIENTO : chr "P15" "P15" "P15" "P15" ...
## $ CORRAL : int 1 1 1 1 1 2 2 2 2 2 ...
## $ ANIMAL_NUM : int 1 2 3 4 5 6 7 8 9 10 ...
## $ PESO_INICIAL: int 121 210 200 222 209 315 312 311 309 300 ...
## $ PESO_FINAL : int 447 446 445 446 444 432 435 436 432 431 ...
## $ GANANCIA : int 326 236 245 224 235 117 123 125 123 131 ...
NOVILLOS <- NOVILLOS %>%
mutate(
TRATAMIENTO = factor(TRATAMIENTO),
CORRAL = factor(CORRAL),
ANIMAL_NUM = factor(ANIMAL_NUM),
PESO_INICIAL = as.numeric(PESO_INICIAL),
PESO_FINAL = as.numeric(PESO_FINAL),
GANANCIA = as.numeric(GANANCIA)
)
str(NOVILLOS)
## 'data.frame': 45 obs. of 6 variables:
## $ TRATAMIENTO : Factor w/ 3 levels "P15","P25","P35": 1 1 1 1 1 1 1 1 1 1 ...
## $ CORRAL : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 2 2 2 2 2 ...
## $ ANIMAL_NUM : Factor w/ 15 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ PESO_INICIAL: num 121 210 200 222 209 315 312 311 309 300 ...
## $ PESO_FINAL : num 447 446 445 446 444 432 435 436 432 431 ...
## $ GANANCIA : num 326 236 245 224 235 117 123 125 123 131 ...
# Promedio por corral
NOVILLOS_DIETA <- NOVILLOS %>%
group_by(TRATAMIENTO, CORRAL) %>%
summarise(GANANCIA_MEDIA = mean(GANANCIA))%>%
ungroup()
NOVILLOS_DIETA
## # A tibble: 9 × 3
## TRATAMIENTO CORRAL GANANCIA_MEDIA
## <fct> <fct> <dbl>
## 1 P15 1 253.
## 2 P15 2 124.
## 3 P15 3 256.
## 4 P25 1 291.
## 5 P25 2 124.
## 6 P25 3 234.
## 7 P35 1 212.
## 8 P35 2 125.
## 9 P35 3 176.
str(NOVILLOS_DIETA)
## tibble [9 × 3] (S3: tbl_df/tbl/data.frame)
## $ TRATAMIENTO : Factor w/ 3 levels "P15","P25","P35": 1 1 1 2 2 2 3 3 3
## $ CORRAL : Factor w/ 3 levels "1","2","3": 1 2 3 1 2 3 1 2 3
## $ GANANCIA_MEDIA: num [1:9] 253 124 256 291 124 ...
# Opción 1: usando los paquetes del tidyverse
NOVILLOS_DIETA %>%
group_by(TRATAMIENTO) %>%
summarise(
media = mean(GANANCIA_MEDIA),
sd = sd(GANANCIA_MEDIA),
n = n())
## # A tibble: 3 × 4
## TRATAMIENTO media sd n
## <fct> <dbl> <dbl> <int>
## 1 P15 211. 75.6 3
## 2 P25 216. 84.6 3
## 3 P35 171. 43.9 3
# Opción 2: usando summarytools
NOVILLOS_DIETA %>%
group_by(TRATAMIENTO) %>%
descr(GANANCIA_MEDIA)
## Descriptive Statistics
## GANANCIA_MEDIA by TRATAMIENTO
## Data Frame: NOVILLOS_DIETA
## N: 9
##
## P15 P25 P35
## ----------------- -------- -------- --------
## Mean 211.13 216.20 171.07
## Std.Dev 75.65 84.58 43.93
## Min 123.80 124.20 124.80
## Q1 123.80 124.20 124.80
## Median 253.20 233.80 176.20
## Q3 256.40 290.60 212.20
## Max 256.40 290.60 212.20
## MAD 4.74 84.21 53.37
## IQR 66.30 83.20 43.70
## CV 0.36 0.39 0.26
## Skewness -0.38 -0.20 -0.12
## SE.Skewness 1.22 1.22 1.22
## Kurtosis -2.33 -2.33 -2.33
## N.Valid 3.00 3.00 3.00
## N 3.00 3.00 3.00
## Pct.Valid 100.00 100.00 100.00
ggplot(NOVILLOS_DIETA, aes(x = TRATAMIENTO, y = GANANCIA_MEDIA, fill = TRATAMIENTO)) +
geom_boxplot() +
labs(title = "Ganancia de Peso",
x = "Tratamientos", y = "Ganancia de Peso (g)") +
theme_minimal()
H0: No hay diferencias significativas en las ganancias de peso.
H1: Al menos un tratamiento tiene ganancia de peso diferente.
modelo_novillos <- aov(GANANCIA_MEDIA ~ TRATAMIENTO, data = NOVILLOS_DIETA)
# Resumen del ANOVA
summary(modelo_novillos)
## Df Sum Sq Mean Sq F value Pr(>F)
## TRATAMIENTO 2 3668 1834 0.372 0.704
## Residuals 6 29614 4936
residuos_modelo_novillos <- modelo_novillos$residuals # residuos = observado - predicho
predichos_modelo_novillos <- modelo_novillos$fitted.values # predichos
tabla <- data.frame(
Observado = NOVILLOS_DIETA$GANANCIA_MEDIA,
Predichos = predichos_modelo_novillos,
Residual = residuos_modelo_novillos,
Tratamiento = NOVILLOS_DIETA$TRATAMIENTO)
print(tabla)
## Observado Predichos Residual Tratamiento
## 1 253.2 211.1333 42.066667 P15
## 2 123.8 211.1333 -87.333333 P15
## 3 256.4 211.1333 45.266667 P15
## 4 290.6 216.2000 74.400000 P25
## 5 124.2 216.2000 -92.000000 P25
## 6 233.8 216.2000 17.600000 P25
## 7 212.2 171.0667 41.133333 P35
## 8 124.8 171.0667 -46.266667 P35
## 9 176.2 171.0667 5.133333 P35
hist(residuos_modelo_novillos, main = "Histograma de residuos")
boxplot(residuos_modelo_novillos, main = "Boxplot de residuos")
plot(modelo_novillos, which = 2)
H0: SI se cumple el supuesto de Normalidad. (se cumple si es mayor a 0.05)
H1: NO se cumple el supuesto de Normalidad.
shapiro.test(modelo_novillos$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_novillos$residuals
## W = 0.88492, p-value = 0.1768
plot(modelo_novillos, which = 1) # Residos vs predichos
H0: SI cumple el supuesto de Homocedasticidad. (SE CUMPLE MAYOR A 0,05)
H1: NO se cumple el supuesto de Homocedasticidad
# Para esta prueba usamos una función de la librería "car"
leveneTest(GANANCIA_MEDIA ~ TRATAMIENTO, data = NOVILLOS_DIETA)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 2 0.1718 0.8462
## 6
poroto <- read_xlsx("poroto.xlsx")
head(poroto)
## # A tibble: 6 × 5
## VARIEDAD REPETICIÓN INSECTICIDA TRATAMIENTO RENDIMIENTO
## <chr> <dbl> <chr> <chr> <dbl>
## 1 V1 1 D0 V1_D0 0.89
## 2 V1 2 D0 V1_D0 0.94
## 3 V1 3 D0 V1_D0 0.85
## 4 V1 4 D0 V1_D0 1.12
## 5 V1 5 D0 V1_D0 1.35
## 6 V1 6 D0 V1_D0 1.05
str(poroto)
## tibble [24 × 5] (S3: tbl_df/tbl/data.frame)
## $ VARIEDAD : chr [1:24] "V1" "V1" "V1" "V1" ...
## $ REPETICIÓN : num [1:24] 1 2 3 4 5 6 1 2 3 4 ...
## $ INSECTICIDA: chr [1:24] "D0" "D0" "D0" "D0" ...
## $ TRATAMIENTO: chr [1:24] "V1_D0" "V1_D0" "V1_D0" "V1_D0" ...
## $ RENDIMIENTO: num [1:24] 0.89 0.94 0.85 1.12 1.35 1.05 1.78 2 1.86 2.3 ...
poroto <- poroto %>%
mutate(
VARIEDAD = factor(VARIEDAD),
REPETICIÓN = factor(REPETICIÓN),
INSECTICIDA = factor(INSECTICIDA),
TRATAMIENTO = factor(TRATAMIENTO))
str(poroto)
## tibble [24 × 5] (S3: tbl_df/tbl/data.frame)
## $ VARIEDAD : Factor w/ 2 levels "V1","V2": 1 1 1 1 1 1 1 1 1 1 ...
## $ REPETICIÓN : Factor w/ 6 levels "1","2","3","4",..: 1 2 3 4 5 6 1 2 3 4 ...
## $ INSECTICIDA: Factor w/ 2 levels "D0","D1": 1 1 1 1 1 1 2 2 2 2 ...
## $ TRATAMIENTO: Factor w/ 4 levels "V1_D0","V1_D1",..: 1 1 1 1 1 1 2 2 2 2 ...
## $ RENDIMIENTO: num [1:24] 0.89 0.94 0.85 1.12 1.35 1.05 1.78 2 1.86 2.3 ...
poroto %>%
group_by(TRATAMIENTO) %>%
descr(RENDIMIENTO)
## Descriptive Statistics
## RENDIMIENTO by TRATAMIENTO
## Data Frame: poroto
## N: 24
##
## V1_D0 V1_D1 V2_D0 V2_D1
## ----------------- -------- -------- -------- --------
## Mean 1.03 2.04 1.74 2.63
## Std.Dev 0.18 0.25 0.32 0.12
## Min 0.85 1.78 1.33 2.50
## Q1 0.89 1.86 1.40 2.50
## Median 1.00 1.96 1.81 2.65
## Q3 1.12 2.30 2.00 2.70
## Max 1.35 2.40 2.10 2.80
## MAD 0.17 0.21 0.35 0.15
## IQR 0.20 0.35 0.48 0.18
## CV 0.18 0.12 0.18 0.05
## Skewness 0.59 0.37 -0.25 0.04
## SE.Skewness 0.85 0.85 0.85 0.85
## Kurtosis -1.33 -1.86 -1.93 -1.88
## N.Valid 6.00 6.00 6.00 6.00
## N 6.00 6.00 6.00 6.00
## Pct.Valid 100.00 100.00 100.00 100.00
ggplot(poroto, aes(x = INSECTICIDA, y = RENDIMIENTO, fill = VARIEDAD)) +
geom_boxplot() +
theme_minimal()
ANOVA
modelo_factorial_dca_poroto <- aov( RENDIMIENTO ~ VARIEDAD + INSECTICIDA + VARIEDAD:INSECTICIDA, data = poroto)
summary(modelo_factorial_dca_poroto)
## Df Sum Sq Mean Sq F value Pr(>F)
## VARIEDAD 1 2.529 2.529 48.018 9.95e-07 ***
## INSECTICIDA 1 5.425 5.425 103.015 2.46e-09 ***
## VARIEDAD:INSECTICIDA 1 0.022 0.022 0.422 0.523
## Residuals 20 1.053 0.053
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
library(emmeans)
# Gráfico de interacción con emmeans (simple)
emmip(modelo_factorial_dca_poroto, INSECTICIDA ~ VARIEDAD)
# Gráfico de diagnóstico
plot(modelo_factorial_dca_poroto, which = 1:2)
## 9. Evalúe la normalidad de los residuos utilizando la prueba de
Shapiro-Wilk.
# Prueba de normalidad de Shapiro-Wilk
shapiro.test(modelo_factorial_dca_poroto$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_factorial_dca_poroto$residuals
## W = 0.97151, p-value = 0.7043
#Test de Levene (car)
leveneTest(RENDIMIENTO ~ INSECTICIDA * VARIEDAD, data = poroto)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 3 1.2728 0.3107
## 20
# Factor "VARIEDAD"
Tukey_var_poroto <- HSD.test(modelo_factorial_dca_poroto, "VARIEDAD")
Tukey_var_poroto
## $statistics
## MSerror Df Mean CV MSD
## 0.0526575 20 1.86375 12.31239 0.1954165
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey VARIEDAD 2 2.949998 0.05
##
## $means
## RENDIMIENTO std r se Min Max Q25 Q50 Q75
## V1 1.539167 0.5682582 12 0.06624292 0.85 2.4 1.0225 1.565 1.9475
## V2 2.188333 0.5176667 12 0.06624292 1.33 2.8 1.8425 2.300 2.6250
##
## $comparison
## NULL
##
## $groups
## RENDIMIENTO groups
## V2 2.188333 a
## V1 1.539167 b
##
## attr(,"class")
## [1] "group"
plot(Tukey_var_poroto)
### Conclusión: Luego de realizar el Test de Tukey, confirmamos que la
Variead 2 obtiene mejores rendimientos (kg/parcela) que la variedad
1.
Tukey_insecticida_poroto <- HSD.test(modelo_factorial_dca_poroto, "INSECTICIDA")
Tukey_insecticida_poroto
## $statistics
## MSerror Df Mean CV MSD
## 0.0526575 20 1.86375 12.31239 0.1954165
##
## $parameters
## test name.t ntr StudentizedRange alpha
## Tukey INSECTICIDA 2 2.949998 0.05
##
## $means
## RENDIMIENTO std r se Min Max Q25 Q50 Q75
## D0 1.388333 0.4453157 12 0.06624292 0.85 2.1 1.0225 1.34 1.7875
## D1 2.339167 0.3596073 12 0.06624292 1.78 2.8 1.9825 2.45 2.6250
##
## $comparison
## NULL
##
## $groups
## RENDIMIENTO groups
## D1 2.339167 a
## D0 1.388333 b
##
## attr(,"class")
## [1] "group"
plot(Tukey_insecticida_poroto)
### Conclusión: Luego de realizado la prueba de Tukey Para la Dosis de
Insecicida, confirmamos que el tratamiento D1 obtiene mejor rendimiento
(kg/parcela)
ggplot(poroto, aes(x = INSECTICIDA, y = RENDIMIENTO, fill = VARIEDAD)) +
stat_summary(fun = mean, # calcula la media para cada tratamiento
geom = "bar", # usa barras para mostrar la media de cada
position = position_dodge(width = 0.9)) + # evita que las barras se superpongan
labs(x = "INSECTICIDA",
y = "RENDIMIENTO") +
theme_minimal()
## E. Conclusiones.