Ejemplo de Aplicación

En un experimento se probaron dos métodos de siembra y tres variedades de arroz. Por razones de facilidad en el manejo del mismo, se decidió utilizar un arreglo en parcelas divididas, en donde las parcelas grandes correspondieron a los métodos de siembra y en las parcelas pequeñas se sembraron las tres variedades de arroz (Oryza sativa L.).

Los tratamientos se distribuyeron mediante un diseño en bloques completos al azar con 4 repeticiones. La variable de respuesta fiue kg/parcela de 25 m. A continuación se detallan los factores evaluados.

Métodos de siembra: I: Inundación S: Secano

Variedades: BB: Blue Bonnett BP: Belle Patna CR: Criolla

El Rendimiento de arroz en kg/parcela de 25 m’, al comparar distintos métodos de siembra en diferentes variedades de arroz.

Instalar paquetes y sus dependencias

# Crear un vector de paquetes
pacotes <- c("agricolae", "performance", "ggplot2", "doebioresearch",
             "outliers","car", "readxl","tidyverse", 
             "RColorBrewer","nortest", "stats", 
             "agridat", "performance")

# Script para instalar y cargar librerias y dependencias
if(sum(as.numeric(!pacotes %in% installed.packages())) != 0){
  instalador <- pacotes[!pacotes %in% installed.packages()]
  for(i in 1:length(instalador)) {
    install.packages(instalador, dependencies = T)
    break()}
  sapply(pacotes, require, character = T) 
} else {
  sapply(pacotes, require, character = T) 
}
## Loading required package: agricolae
## Loading required package: performance
## Loading required package: ggplot2
## Loading required package: doebioresearch
## Warning: package 'doebioresearch' was built under R version 4.3.2
## Loading required package: outliers
## Loading required package: car
## Loading required package: carData
## Loading required package: readxl
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some()   masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: RColorBrewer
## 
## Loading required package: nortest
## 
## Loading required package: agridat
## Warning: package 'agridat' was built under R version 4.3.2
##      agricolae    performance        ggplot2 doebioresearch       outliers 
##           TRUE           TRUE           TRUE           TRUE           TRUE 
##            car         readxl      tidyverse   RColorBrewer        nortest 
##           TRUE           TRUE           TRUE           TRUE           TRUE 
##          stats        agridat    performance 
##           TRUE           TRUE           TRUE

Diseño en Parcelas Divididas con dos factores

Importar Datos

df <- read_excel("D:/AGRONOMIA/SEMESTRE 9/SOFTWARE R/PARCELAS DIVIDIDAS/taller6.xlsx")
str(df)
## tibble [24 × 4] (S3: tbl_df/tbl/data.frame)
##  $ Metodo_de_siembra: chr [1:24] "SECANO" "SECANO" "SECANO" "SECANO" ...
##  $ Variedad         : chr [1:24] "Blue_bonnette" "Blue_bonnette" "Blue_bonnette" "Blue_bonnette" ...
##  $ bloque           : num [1:24] 1 2 3 4 1 2 3 4 1 2 ...
##  $ Rendimiento      : num [1:24] 8.5 8.2 8 7.6 8 7 7.3 6.9 10 10.8 ...

Convertir en factores

df$Metodo_de_siembra <- as.factor(df$Metodo_de_siembra)
df$Variedad <- as.factor(df$Variedad)
df$bloque <- as.factor(df$bloque)
print(n=30, 
      df)
## # A tibble: 24 × 4
##    Metodo_de_siembra Variedad      bloque Rendimiento
##    <fct>             <fct>         <fct>        <dbl>
##  1 SECANO            Blue_bonnette 1              8.5
##  2 SECANO            Blue_bonnette 2              8.2
##  3 SECANO            Blue_bonnette 3              8  
##  4 SECANO            Blue_bonnette 4              7.6
##  5 SECANO            Belle_patna   1              8  
##  6 SECANO            Belle_patna   2              7  
##  7 SECANO            Belle_patna   3              7.3
##  8 SECANO            Belle_patna   4              6.9
##  9 SECANO            Criolla       1             10  
## 10 SECANO            Criolla       2             10.8
## 11 SECANO            Criolla       3             11  
## 12 SECANO            Criolla       4             11.6
## 13 INUNDACION        Blue_bonnette 1              5.8
## 14 INUNDACION        Blue_bonnette 2              5.6
## 15 INUNDACION        Blue_bonnette 3              5.2
## 16 INUNDACION        Blue_bonnette 4              5.8
## 17 INUNDACION        Belle_patna   1              7  
## 18 INUNDACION        Belle_patna   2              7.1
## 19 INUNDACION        Belle_patna   3              7.3
## 20 INUNDACION        Belle_patna   4              7.3
## 21 INUNDACION        Criolla       1              8.3
## 22 INUNDACION        Criolla       2              8  
## 23 INUNDACION        Criolla       3              8  
## 24 INUNDACION        Criolla       4              8.7

Valores atípicos

df%>%
  select_if(is.numeric)%>%
  outlier()
## Rendimiento 
##        11.6

ANOVA DPD bifactorial

Variable de respuesta en Rendimiento

df[4]
## # A tibble: 24 × 1
##    Rendimiento
##          <dbl>
##  1         8.5
##  2         8.2
##  3         8  
##  4         7.6
##  5         8  
##  6         7  
##  7         7.3
##  8         6.9
##  9        10  
## 10        10.8
## # ℹ 14 more rows

Realizar el análisis de varianza (ANOVA)

modelo <- splitplot(df[4], df$bloque, df$Metodo_de_siembra, df$Variedad, 3)
modelo
## $Rendimiento
## $Rendimiento[[1]]
## $Rendimiento[[1]][[1]]
## Analysis of Variance Table
## 
## Response: dependent.var
##                    Df Sum Sq Mean Sq  F value    Pr(>F)    
## block               3  0.175  0.0583   0.8607 0.5476318    
## main.plot           1 18.027 18.0267 265.9672 0.0005016 ***
## Ea                  3  0.203  0.0678                       
## sub.plot            2 34.308 17.1538  75.2174 1.626e-07 ***
## main.plot:sub.plot  2  7.776  3.8879  17.0481 0.0003112 ***
## Eb                 12  2.737  0.2281                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## $Rendimiento[[1]][[2]]
## [1] "CV(a): 3.306 , CV(b) : 6.064"
## 
## $Rendimiento[[1]][[3]]
## [1] "R Square 0.957"
## 
## $Rendimiento[[1]][[4]]
## 
##  Shapiro-Wilk normality test
## 
## data:  model$residuals
## W = 0.95513, p-value = 0.3486
## 
## 
## $Rendimiento[[1]][[5]]
## [1] "Normality assumption is not violated"
## 
## $Rendimiento[[1]][[6]]
## [1] "The means of one or more levels of main plot factor are not same, so go for multiple comparison test"
## 
## $Rendimiento[[1]][[7]]
## $Rendimiento[[1]][[7]][[1]]
##      MSerror Df  Mean       CV       MSD
##   0.06777778  3 7.875 3.305926 0.3382432
## 
## $Rendimiento[[1]][[7]][[2]]
##    test    name.t ntr StudentizedRange alpha
##   Tukey main.plot   2         4.500659  0.05
## 
## $Rendimiento[[1]][[7]][[3]]
##            dependent.var groups
## SECANO          8.741667      a
## INUNDACION      7.008333      b
## 
## 
## $Rendimiento[[1]][[8]]
## [1] "The means of one or more levels of sub plot factor are not same, so go for multiple comparison test"
## 
## $Rendimiento[[1]][[9]]
## $Rendimiento[[1]][[9]][[1]]
##     MSerror Df  Mean       CV       MSD
##   0.2280556 12 7.875 6.064148 0.6370213
## 
## $Rendimiento[[1]][[9]][[2]]
##    test   name.t ntr StudentizedRange alpha
##   Tukey sub.plot   3         3.772929  0.05
## 
## $Rendimiento[[1]][[9]][[3]]
##               dependent.var groups
## Criolla              9.5500      a
## Belle_patna          7.2375      b
## Blue_bonnette        6.8375      b
## 
## 
## $Rendimiento[[1]][[10]]
## [1] "The means of one or more levels of interaction are not same, so go for multiple comparison test"
## 
## $Rendimiento[[1]][[11]]
## $Rendimiento[[1]][[11]][[1]]
##     MSerror Df  Mean       CV     MSD
##   0.2280556 12 7.875 6.064148 1.13424
## 
## $Rendimiento[[1]][[11]][[2]]
##    test             name.t ntr StudentizedRange alpha
##   Tukey main.plot:sub.plot   6         4.750231  0.05
## 
## $Rendimiento[[1]][[11]][[3]]
##                          dependent.var groups
## SECANO:Criolla                  10.850      a
## INUNDACION:Criolla               8.250      b
## SECANO:Blue_bonnette             8.075      b
## SECANO:Belle_patna               7.300      b
## INUNDACION:Belle_patna           7.175      b
## INUNDACION:Blue_bonnette         5.600      c

Analisis de Resultados

-El bloque no parece tener un efecto significativo en la variable medida, ya que el valor p es relativamente alto.

-La parcela principal tiene un efecto significativo en la variable medida ya que el valor p es muy bajo.

-La subparcela tiene un efecto significativo en la variable medida debido al valor p muy bajo.

-La interacción entre la parcela principal y la subparcela es significativa, ya que el valor p es bajo.

-La variable dependiente (Rendimiento) tiene diferentes medias según las interacciones entre el Método de Siembra y la Variedad.la interaccion SECANO:Criolla tiene la media más alta (‘a’), seguido por varios grupos con medias similares (‘b’), y finalmente,a interaccion INUNDACION:Blue_bonnette tiene la media más baja (‘c’)

rendimiento_data <- as.data.frame(modelo$Rendimiento[[1]][[11]][[3]])
rendimiento_data <- rownames_to_column(rendimiento_data, var = "Interaction")
names(rendimiento_data) <- c("Interacción",   "Rendimiento", "Grupos") 

Crear el gráfico de líneas

library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
p <- ggplot(df, aes(x = as.character(Metodo_de_siembra), y = Rendimiento, 
                    group = Variedad, color = Variedad)) +
  geom_smooth() +
  geom_point() +
  theme_bw() +
  labs(title = "Rendimiento por Método de siembra y Variedad",
       x = "Metodo de Siembra",
       y = "Rendimiento (Ton/ha)",
       color = "Variedad")

# Convertir el gráfico ggplot2 en un gráfico interactivo de plotly
p_interactivo <- ggplotly(p)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
p_interactivo

Recomendación:

Optar por la siembra de la Variedda CR (Criolla), en condiciones de secano, asi poder mejorar significativamente el rendimiento, dado que muestra la media más alta (‘a’). Evitar sembrar la variedad Blue_bonnette en INUNDACION,para así optimizar la producción agrícola.