SITUACIÓN 1:

A- Exploración de datos.

1. Cargar la base de daots novillos.csv y crear el objeto NOVILLOS.

NOVILLOS <- read.csv("novillos.csv")

2. Explorar su estructura.

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 ...

Transformación de varianles.

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 ...

3. Calcular la ganancia de peso promedio por corral.

# 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 ...

4. Obtener medidas descriptivas de la ganancia de peso por corral y por tratamiento. Sacar conclusiones.

# 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

Visualización de datos

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()

Conclusiones: Se puede observar valores similares de ganancia de peso entre los tratamientos P15 (211.13) y P25 (216.2). Sin embargo, en el tratamiento P35 se puede notar una aparente disminución marcada de la ganancia de peso (171,07). Esto se podría explicar considerando que el nivel de fibra incluído en la dieta está causando una fuerte disminución en la digestibilidad,lo cual causa directamente una disminución del consumo debido al efecto del llenado físico de los animales, y eso lleva a una menor ganancia de peso. Sin embargo, la elevada variabilidad observada entre corrales sugiere que las diferencias deben confirmarse mediante el análisis estadístico inferencial (ANOVA).

B. Analisis de la Varianza

5. Plantear las hipótesis.

H0: No hay diferencias significativas en las ganancias de peso.

H1: Al menos un tratamiento tiene ganancia de peso diferente.

6. Ajustar un modelo de ANOVA.

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

7. El valor de p = 0.704 es mayor que 0.05. Por lo tanto, no se rechaza la hipótesis nula (H₀).

No hay evidencia estadística suficiente para afirmar que existen diferencias significativas entre tratamientos.

C. Verificación de Supuestos.

8. Elaborar gráficos diagnósticos del modelo (residuos vs ajustados y Q-Q plot).

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

Análisis gráfico de los residuos

hist(residuos_modelo_novillos, main = "Histograma de residuos")

boxplot(residuos_modelo_novillos, main = "Boxplot de residuos")

Normalidad

Gráfico Q-Q plot

plot(modelo_novillos, which = 2)

Prueba de Shapiro-Wilks

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

Homocedasticidad

Gráfico de residuos vs predichos

plot(modelo_novillos, which = 1) # Residos vs predichos

Test de Levene

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

Gráficamente es difícil analizar la normalidad de los residuos en este caso. Sin embargo, la prueba de Shapiro-Wilk indicó que se cumple el supuesto de normalidad de los residuos (p = 0.177).

De igual manera, según la prueba de Levene, se cumple el supuesto de homogeneidad de varianzas entre los tratamientos (p = 0.846).

D. Comparación de Medias.

12. No resulta pertinente realizar comparaciones múltiples, dado que el ANOVA no mostró diferencias significativas entre los tratamientos (p = 0.704).

Sin embargo, al ser la variabilidad muy alta, habría que intertar repetir el ensayo aumentando el número de individuos así tal vez se pueda tener conclusiones más certeras.

SITUACIÓN 2:

A. Exploración de Datos

1. Construcción de la base de datos: Con base en el enunciado y los datos proporcionados, construya la base de datos en Excel y guárdela como un archivo “poroto.xlsx” para su posterior importación en R.

2. Cargue el archivo en R. Explore su estructura (nombres de variables, tipo de variables, primeros registros) para verificar que los datos se hayan importado correctamente.

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 ...

Transformación de variables.

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 ...

3. Obtenga medidas descriptivas del rendimiento para cada nivel de los factores y para cada combinación de los tratamientos. Describa los promedios observados y la variabilidad.

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

El rendimiento medio del cultivo de poroto varió entre tratamientos desde 1,03 kg/parcela (V1_D0) hasta 2,63 kg/parcela (V2_D1).

En general, se observa que el tratamiento con el producto agroquímico (D1) incrementó el rendimiento en ambas variedades.

La variedad (V2) presentó los valores más altos tanto en semillas tratadas como no tratadas, con una media de 1,74 kg/parcela sin tratamiento y 2,63 kg/parcela con tratamiento.

En cuanto a la variabilidad, los coeficientes de variación (CV) fueron relativamente bajos (entre 5 % y 18 %), indicando buena homogeneidad dentro de los tratamientos.

4. Realice un gráfico de interacción que muestre la relación entre los dos factores en estudio. Describa.

ggplot(poroto, aes(x = INSECTICIDA, y = RENDIMIENTO, fill = VARIEDAD)) +
  geom_boxplot() +
  theme_minimal()

Con el análisis gráfico también se puede concluir de manera muy clara de que la Variedad (V2) muestra mejor rendimiento ya sea con o sin tratamiento químico. A su vez, se verifica que el tratamiento con insecticida mejora el rendimiento en ambas variedades.

B. Análisis de Varianza Factorial (ANOVA)

5. Plantee las hipótesis adecuadas:

5.1 Interacción variedad × insecticida

H0: (⍺𝜷) = 0 (No hay interacción entre variedad y utilización producto químico)

H1: (⍺𝜷) ≠ 0 (Existe interacción, el efecto del producto químico depende de la variedad)

5.2 Efecto del factor Vareidad.

H0 ⍺ = 0 (La variedad no tiene efecto sobre el rendimiento)

H1 ⍺ ≠ 0 (Al menos una variedad tiene efecto sobre el rendimiento)

5.3 Efecto del factor Insecticida.

H0: 𝜷 = 0 (el rendimiento no presenta diferencias con utilización de insecticida).

H1: 𝜷 ≠ 0 (existe diferencias en el rendimiento con la utilización de insecticida).

6. Ajuste el modelo de ANOVA factorial.

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

7. Interpretación de resultados.

Interacción Variedad × Insecticida:

El valor p = 0.523 es mayor que 0.01, por lo tanto no existe interacción significativa entre ambos factores.

Efecto principal de Variedad:

El valor p = 9.95e-07 es menor que 0.01, lo que indica diferencias altamente significativas entre las variedades.

Efecto principal de Insecticida:

El valor p = 2.46e-09 es también menor que 0.01, indicando un efecto altamente significativo del uso de insecticida.

Conclusión general:

A un nivel de significancia de α = 0.01, se detectan efectos principales significativos de la variedad y del insecticida, pero no existe interacción significativa entre ellos. Esto implica que ambos factores afectan el rendimiento de manera independiente.

library(emmeans)
# Gráfico de interacción con emmeans (simple)
emmip(modelo_factorial_dca_poroto, INSECTICIDA ~ VARIEDAD)

Las líneas del gráfico mantienen una tendencia muy similar, lo que también muestra que no existiría una interacción marcada entre los factores, sino efectos principales aditivos de la variedad y del tratamiento químico.

C. Verificación de Supuestos

8. Elabore los gráficos diagnósticos del modelo (residuos vs. ajustados y Q-Q plot).

# 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.

H₀: Los residuos siguen una distribución normal.

H₁: Los residuos no siguen una distribución normal.

# 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

Como el valor p (0.7043) es mayor que 0.05, no se rechaza H₀.

Por lo tanto, se concluye que los residuos se distribuyen normalmente, cumpliéndose el supuesto de normalidad del modelo.

10. Evalúe la homogeneidad de varianzas utilizando la prueba de Levene.

H₀: Las varianzas de los grupos son homogéneas.

H₁: Las varianzas de los grupos son diferentes (no homogéneas).

#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

Dado que el valor p (0.3107) es mayor que 0.05 (o 0.01), no se rechaza H₀. Por lo tanto, se concluye que las varianzas entre tratamientos son homogéneas, cumpliéndose el supuesto de homocedasticidad del modelo.

D. Comparación de Medias

11. Si resulta pertinente realice una prueba de comparaciones múltiples y concluya.

# 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)

12. Elabore un gráfico de barras para visualización de medias de tratamientos.

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.

13. En este trabajo donde se evaluó el efecto de 2 variedades y de la utilización de un producto químico (insecticida), sobre en rendimiento del poroto (kg/parcela), se puedo observar claramente que la utilización de insecticida ha mejorado el rendimiento independientemente de la variedad de poroto utilizada. Así mismo, se pudo comprobar que la Variedad (V2) tiene mejor rendimiento respecto a la Variedad (V1), tanto con la aplicación de insecticida como sin éste. Entonces podemos decir que hay una acción aditiva entre la selección de la Variable (V2) y la aplicación del tratamiento químico.

La ausencia de interacción significativa sugiere que no hay combinaciones específicas de variedad y tratamiento que alteren el efecto esperado; el aumento por insecticida se mantiene constante en ambas variedades.