library("tidyverse")
library("rcompanion")
library("nortest")
library("ggpubr")
library("pwr")
library("ez")
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.
datos <- read.csv2("EI-2022-2-PE1-Datos.csv", stringsAsFactors = TRUE)
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\]
Variable Independiente Categórica 3 niveles, 3 grupos
Variable Dependiente escala de intervalos iguales(unidad de medida)
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
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.
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
# 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).
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