Regresar a la página principal

Enunciado

Un biólogo decidió caracterizar 3 tipos de flores y para esto tomo la medida de longitud en centímetros a 15 flores de 3 especies vegetales. A continuación, se presentan los datos.

Especie Observaciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Iris setosa 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 5.4 4.8 4.8 4.3 5.8
Iris versicolor 7 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5 5.9 6 6.1 5.6
Iris virginica 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8

Resuelva:

Elabore la corrida correspondiente de un modelo completamente al azar en el software R y conteste

• ¿Cuánto fue el valor p mostrado en la tabla de análisis de varianza?
• ¿Las especies son significativamente diferentes?
• Muestre los diferentes grupos que se forman en las pruebas post anova LSD y Duncan
• Realice el grafico de barras correspondiente a los grupos formados en las pruebas post anova de Duncan.

Solución

Un biólogo decidió caracterizar 3 tipos de flores y para esto tomo la medida de longitud en centímetros a 15 flores de 3 especies vegetales. A continuación, se presentan los datos:

Análisis de datos

En éste documento presento los ejercicios del taller propuestos para el curso:

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
iris_data <- read.csv("iris-01.csv")
iris_data
##          Especies Obs.1 Obs.2 Obs.3 Obs.4 Obs.5 Obs.6 Obs.7 Obs.8 Obs.9 Obs.10
## 1     Iris,setosa   5.1   4.9   4.7   4.6   5.0   5.4   4.6   5.0   4.4    4.9
## 2 Iris,versicolor   7.0   6.4   6.9   5.5   6.5   5.7   6.3   4.9   6.6    5.2
## 3  Iris,virginica   6.3   5.8   7.1   6.3   6.5   7.6   4.9   7.3   6.7    7.2
##   Obs.11 Obs.12 Obs.13 Obs.14 Obs.15
## 1    5.4    4.8    4.8    4.3    5.8
## 2    5.0    5.9    6.0    6.1    5.6
## 3    6.5    6.4    6.8    5.7    5.8

Organización de los datos con pivot_longer

iris_data_org <- iris_data %>% pivot_longer(cols = Obs.1:Obs.15, names_to = "OBSERVATIONS",values_to= "LENGTH")
iris_data_org
## # A tibble: 45 × 3
##    Especies    OBSERVATIONS LENGTH
##    <chr>       <chr>         <dbl>
##  1 Iris,setosa Obs.1           5.1
##  2 Iris,setosa Obs.2           4.9
##  3 Iris,setosa Obs.3           4.7
##  4 Iris,setosa Obs.4           4.6
##  5 Iris,setosa Obs.5           5  
##  6 Iris,setosa Obs.6           5.4
##  7 Iris,setosa Obs.7           4.6
##  8 Iris,setosa Obs.8           5  
##  9 Iris,setosa Obs.9           4.4
## 10 Iris,setosa Obs.10          4.9
## # ℹ 35 more rows

Análisis exploratorio de datos

iris_data_org$OBSERVATIONS <- as.factor(iris_data_org$OBSERVATIONS)

# Resumen de los datos
str(iris_data_org)
## tibble [45 × 3] (S3: tbl_df/tbl/data.frame)
##  $ Especies    : chr [1:45] "Iris,setosa" "Iris,setosa" "Iris,setosa" "Iris,setosa" ...
##  $ OBSERVATIONS: Factor w/ 15 levels "Obs.1","Obs.10",..: 1 8 9 10 11 12 13 14 15 2 ...
##  $ LENGTH      : num [1:45] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
summary(iris_data_org)
##    Especies          OBSERVATIONS     LENGTH     
##  Length:45          Obs.1  : 3    Min.   :4.300  
##  Class :character   Obs.10 : 3    1st Qu.:5.000  
##  Mode  :character   Obs.11 : 3    Median :5.800  
##                     Obs.12 : 3    Mean   :5.782  
##                     Obs.13 : 3    3rd Qu.:6.500  
##                     Obs.14 : 3    Max.   :7.600  
##                     (Other):27

Análisis gráfico

bxp_iris <- iris_data_org %>% ggplot(aes(x = Especies, y = LENGTH, fill = Especies))+
  geom_boxplot()+
   labs(x = "Especies", y  = "Longitud", title = "Boxplot-Comparación")
print(bxp_iris)

ggsave(plot = bxp_iris, "bxp_iris.png", dpi = 300, units = "in", height = 6, width = 8)

Modelacion bajo un DBCA - ANOVA

modelo1 <- aov(LENGTH ~ Especies+ OBSERVATIONS, data = iris_data_org)
summary(modelo1)
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## Especies      2 18.763   9.382  22.280 1.62e-06 ***
## OBSERVATIONS 14  3.532   0.252   0.599    0.843    
## Residuals    28 11.790   0.421                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El valor de \(p=1.62\times10^{-06}\) para las especies indica que hay una fuerte evidencia en contra de la hipótesis nula. Lo anterior sugiere que hay al menos una diferencia significativa entre las medias de las diferentes especies en cuanto a las observaciones analizadas.

Por otra parte, el valor de \(p=0.843\) para las observaciones es alto, lo que sugiere que no hay evidencia suficiente para rechazar la hipótesis nula. Esto significa que no hay una diferencia significativa entre las medias de las observaciones en función de las especies.

Prueba post - ANOVA (Duncan)

Vamos a hacer la prueba para observaciones

#install.packages("agricolae")
library(agricolae)
compara_especies <- duncan.test(modelo1, "Especies")
compara_especies
## $statistics
##     MSerror Df     Mean       CV
##   0.4210794 28 5.782222 11.22244
## 
## $parameters
##     test   name.t ntr alpha
##   Duncan Especies   3  0.05
## 
## $duncan
##      Table CriticalRange
## 2 2.896885     0.4853641
## 3 3.043847     0.5099871
## 
## $means
##                   LENGTH      std  r        se Min Max  Q25 Q50  Q75
## Iris,setosa     4.913333 0.397971 15 0.1675469 4.3 5.8 4.65 4.9 5.05
## Iris,versicolor 5.973333 0.656252 15 0.1675469 4.9 7.0 5.55 6.0 6.45
## Iris,virginica  6.460000 0.710935 15 0.1675469 4.9 7.6 6.05 6.5 6.95
## 
## $comparison
## NULL
## 
## $groups
##                   LENGTH groups
## Iris,virginica  6.460000      a
## Iris,versicolor 5.973333      b
## Iris,setosa     4.913333      c
## 
## attr(,"class")
## [1] "group"
compara_especies$groups %>% rownames_to_column("Especies")
##          Especies   LENGTH groups
## 1  Iris,virginica 6.460000      a
## 2 Iris,versicolor 5.973333      b
## 3     Iris,setosa 4.913333      c

Las especies en el mismo grupo no difieren significativamente entre sí, mientras que las especies en diferentes grupos tienen diferencias significativas en términos de longitud.

Vamos a hacer la prueba para las observaciones (BLOQUES)

compara_observations <- duncan.test(modelo1, "OBSERVATIONS")
compara_observations$groups %>% rownames_to_column("OBSERVATIONS")
##    OBSERVATIONS   LENGTH groups
## 1         Obs.3 6.233333      a
## 2         Obs.6 6.233333      a
## 3         Obs.1 6.133333      a
## 4         Obs.5 6.000000      a
## 5         Obs.9 5.900000      a
## 6        Obs.13 5.866667      a
## 7        Obs.10 5.766667      a
## 8        Obs.15 5.733333      a
## 9         Obs.8 5.733333      a
## 10       Obs.12 5.700000      a
## 11        Obs.2 5.700000      a
## 12       Obs.11 5.633333      a
## 13        Obs.4 5.466667      a
## 14       Obs.14 5.366667      a
## 15        Obs.7 5.266667      a
compara_especie_lsd <- LSD.test(modelo1,"Especies")
compara_especie_lsd$groups %>% rownames_to_column("Especies")
##          Especies   LENGTH groups
## 1  Iris,virginica 6.460000      a
## 2 Iris,versicolor 5.973333      b
## 3     Iris,setosa 4.913333      c

Teniendo un análisis similar a lo que había sucedido con la prueba Duncan.