library("tidyverse")
library("rcompanion")
library("nortest")
library("ggpubr")
library("pwr")
library("ez")

Pregunta 1:

Científicos aseguran que mediciones realizadas entre 2007 y 2009 sugieren que existen diferencias en el largo de la aleta entre las tres especies de pingüinos estudiadas. (26-28 puntos) Realice un análisis inferencial con 99% de confianza, semilla 101, explicando y justificando paso a paso el procedimiento seguido (hipótesis contrastadas, prueba estadística usada, verificación de condiciones, etc.), que determine si la aseveración enunciada es respaldada por los datos.

Lectura de datos

datos <- read.csv2("EI-2022-2-PE1-Datos.csv", stringsAsFactors = TRUE)

Formulación de hipótesis

  • H0: El largo de la aleta promedio es igual para las 3 especies.

  • HA:El largo de la aleta en promedio es distinto para al menos una de las 3 especies.

En formato matemático, las hipótesis quedan de la siguiente forma:

\[ Sea: A: Adelia, B: Barbijo, J:Juanito \] \[H_0: \mu_A = \mu_J = \mu_B\]

\[H_A: \mu_A \neq \mu_B \lor \mu_A \neq \mu_J \lor \mu_B \neq \mu_J \lor \mu_A \neq \mu_B \neq \mu_J\]

Variables

Especie:

Variable Independiente Categórica 3 niveles, 3 grupos

Largo aleta:

Variable Dependiente escala de intervalos iguales(unidad de medida)

Condiciones ANOVA de un factor para muestras Independientes

  • Poblaciones siguen un distribución normal (Mediante Shapiro Test).
  • Cada id de pinguino pertence a una sola especie, por lo tanto las muestras son independientes.
  • La escala con la que se mide la variable dependiente(Largo aleta) tiene propiedades de una escala de intervalos iguales: Al tratarse de una medida universal por el sistema internacional de unidades (SIU) esta condición se cumple.
  • Homocedasticidad, Al ser ANOVA una prueba robusta, se posterga su discusión hasta ver el resultado de la prueba de Levene efectuada por ezANOVA.

Obtención de muestra

set.seed(101)
alfa <- 0.01 # 99% de confianza
datos_juanito <- (datos %>% filter(Especie == "Juanito") %>% select(Largo_aleta))
datos_adelia <- datos %>% filter(Especie == "Adelia") %>% select(Largo_aleta)
datos_barbijo <- datos %>% filter(Especie == "Barbijo") %>% select(Largo_aleta)
instancia <- factor(1:50)
Largo_aleta <- c(datos_juanito$Largo_aleta,datos_adelia$Largo_aleta,datos_barbijo$Largo_aleta)
Especie <- factor(c(rep("Juanito",nrow(datos_juanito)),rep("Adelia",nrow(datos_adelia)),rep("Barbijo",nrow(datos_barbijo))))
data_long <- data.frame(instancia,Especie,Largo_aleta)
data_long
##    instancia Especie Largo_aleta
## 1          1 Juanito         221
## 2          2 Juanito         229
## 3          3 Juanito         226
## 4          4 Juanito         222
## 5          5 Juanito         212
## 6          6 Juanito         209
## 7          7 Juanito         230
## 8          8 Juanito         228
## 9          9 Juanito         221
## 10        10 Juanito         213
## 11        11 Juanito         210
## 12        12 Juanito         221
## 13        13 Juanito         222
## 14        14 Juanito         215
## 15        15 Juanito         210
## 16        16 Juanito         216
## 17        17 Juanito         209
## 18        18 Juanito         222
## 19        19 Juanito         215
## 20        20 Juanito         215
## 21        21 Juanito         208
## 22        22 Juanito         230
## 23        23  Adelia         196
## 24        24  Adelia         197
## 25        25  Adelia         185
## 26        26  Adelia         184
## 27        27  Adelia         191
## 28        28  Adelia         190
## 29        29  Adelia         199
## 30        30  Adelia         191
## 31        31  Adelia         174
## 32        32  Adelia         186
## 33        33  Adelia         188
## 34        34  Adelia         185
## 35        35  Adelia         199
## 36        36  Adelia         190
## 37        37  Adelia         189
## 38        38  Adelia         187
## 39        39  Adelia         192
## 40        40  Adelia         190
## 41        41 Barbijo         195
## 42        42 Barbijo         199
## 43        43 Barbijo         193
## 44        44 Barbijo         197
## 45        45 Barbijo         197
## 46        46 Barbijo         187
## 47        47 Barbijo         197
## 48        48 Barbijo         185
## 49        49 Barbijo         197
## 50        50 Barbijo         210
Pequeña Aclaración

Viendo los datos notese que los 3 grupos a analizar tienen distinta cantidad de observaciones, al aplicar la prueba de ANOVA esto puede ser un problema si se tiene una gran diferencia de observaciones, por ejemplo 1000 a 10, pero en este caso tenemos una pequeña diferencia de 10 a 20, por lo tanto con un alfa lo suficientemente exigente se realiza la prueba de ANOVA.

Ahora podemnos empezar a comprobar el supuesto de normalidad para luego aplicar la prueba ANOVA

normalidad <- by(data_long$Largo_aleta, data_long$Especie, shapiro.test)
normalidad
## data_long$Especie: Adelia
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.93466, p-value = 0.2343
## 
## ------------------------------------------------------------ 
## data_long$Especie: Barbijo
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.89528, p-value = 0.1943
## 
## ------------------------------------------------------------ 
## data_long$Especie: Juanito
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.92279, p-value = 0.08687

Todos los p_values son mayores a 0.01, por lo que con 99% de confianza la población a estudiar sigue una distribución normal.

Gráfico de caja

boxplot(Largo_aleta ~ Especie, data_long)

El gráfico de caja nos da a entender que las medianas tienen valores distintos, y existen outlayers o valores atípicos en Adelaia y Barbijo, también se desprende que el rango intercarcualtil es similar entre los grupos y tienen similar dispersiónde datos.

omnibus <- ezANOVA(data = data_long,
                   dv = Largo_aleta,
                   between = Especie,
                   wid = instancia ,
                   return_aov = TRUE)
## Warning: Data is unbalanced (unequal N per group). Make sure you specified a
## well-considered value for the type argument to ezANOVA().
## Coefficient covariances computed by hccm()
omnibus
## $ANOVA
##    Effect DFn DFd        F            p p<.05       ges
## 1 Especie   2  47 96.85033 2.135912e-17     * 0.8047367
## 
## $`Levene's Test for Homogeneity of Variance`
##   DFn DFd      SSn     SSd        F         p p<.05
## 1   2  47 53.19798 784.302 1.593968 0.2139022      
## 
## $aov
## Call:
##    aov(formula = formula(aov_formula), data = data)
## 
## Terms:
##                  Especie Residuals
## Sum of Squares  8941.011  2169.469
## Deg. of Freedom        2        47
## 
## Residual standard error: 6.794035
## Estimated effects may be unbalanced
p_value <- omnibus$ANOVA$p
## Como nos dio un p-value muy pequeño 2.135912e-17  menor a 0.01, se falla en aceptar la Hipótesis Nula en favor de la Hipótesis Alternativa. Si existen diferencias para el largo de la aleta entre todas las especies de pinguinos. Sin embargo, por si sola ANOVA no nos dice nada sobre cuales son esas diferencias, por lo que debemos proceder con un análisis Post-Hoc
g2 <- ezPlot( data = data_long,
              dv = Largo_aleta,
              wid = instancia,
              between = Especie,
              y_lab = "Largo aleta",
              x = Especie)
## Warning: Data is unbalanced (unequal N per group). Make sure you specified a
## well-considered value for the type argument to ezANOVA().
## Coefficient covariances computed by hccm()
## Warning in ezStats(data = data, dv = dv, wid = wid, within = within, within_full
## = within_full, : Unbalanced groups. Mean N will be used in computation of FLSD
g2

Analisis post hoc

# Procedimiento post hoc de Bonferroni y Holm
post_hoc_bonferroni <- pairwise.t.test(data_long$Largo_aleta,data_long$Especie, p.adj = "bonferroni")
post_hoc_holm <- pairwise.t.test(data_long$Largo_aleta, data_long$Especie, p.adj = "holm")
cat("Corección de Bonferroni")
## Corección de Bonferroni
print(post_hoc_bonferroni)
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  data_long$Largo_aleta and data_long$Especie 
## 
##         Adelia Barbijo
## Barbijo 0.083  -      
## Juanito <2e-16 6e-11  
## 
## P value adjustment method: bonferroni
cat("Corección de Holm")
## Corección de Holm
print(post_hoc_holm)
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  data_long$Largo_aleta and data_long$Especie 
## 
##         Adelia Barbijo
## Barbijo 0.028  -      
## Juanito <2e-16 4e-11  
## 
## P value adjustment method: holm

Según Post-Hoc y los p_value obtenidos, existe una diferencia entre Adelia y barbijo con 99% de confianza en ambas correcciones (Holm y Bonferroni).

Si no siguiera una distribución normal se haría mediante Kruskal Wallis

test <- kruskal.test(Largo_aleta ~ Especie, data = data_long)
print(test)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Largo_aleta by Especie
## Kruskal-Wallis chi-squared = 36.946, df = 2, p-value = 9.489e-09