Del ejercicio anterior se podia concluir que tanto la longitud como el ancho del petalo mostraba diferencias entre las especies de plantas más concretamente que \(\mu_{\text{Setosa}}\leq\mu_{\text{Versicolor}}\leq\mu_{\text{Virginica}}\). Como recordatorio veamos la grafica:

data <- read.csv("a4_iris.csv")
data <- data %>% mutate(variety = as.factor(variety))
iris_long <- reshape2::melt(data, id.vars = "variety")
ggplot(iris_long, aes(x = value, fill = variety)) +
  geom_histogram(alpha = 0.6, bins = 25, position = "identity") +
  facet_wrap(~variable, scales = "free", ncol = 2) +
  labs(title = "Distribuciones de las variables morfológicas",
       x = "Valor", y = "Frecuencia") +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", hjust = 0.5))

de acuerdo a lo anterior haremos un Analisis de Varianza para contrastar lo anteriormente mencionado.

ANOVA

Para el contraste de hipótesis: \[ H_{0}: \mu_{\text{Setosa}} = \mu_{\text{Versicolor}} = \mu_{\text{Virginica}} \]

Contra.

\[ H_{a}: \text{Al menos una media difiere} \]

Esta prueba es no direccional, más aún:

al ser un estudio exploratorio tomaremos \(\alpha = 0.05\) para este contraste.

Primero extraeremos los datos a utilizar:

y <- data$petal.length
grupo <- data$variety

# Media global
media_global <- mean(y)
# Medias por grupo
medias_grupo <- tapply(y, grupo, mean)
# Tamaños por grupo
n_grupo <- tapply(y, grupo, length)

tabla_resultados <- data.frame(
  Grupo = names(medias_grupo),
  Media = as.numeric(medias_grupo),
  n     = as.numeric(n_grupo)
)

cat("Media global:", round(media_global, 4), "\n\n")

Media global: 3.758

kable(
  tabla_resultados,
  caption = "Medias y tamaños por grupo",
  digits = 4,
  align = "c"
)
Medias y tamaños por grupo
Grupo Media n
Setosa 1.462 50
Versicolor 4.260 50
Virginica 5.552 50

Verificamos que los 3 grupos cuentan con la misma cantidad de registros que las medias parecen diferir de la media global.

Para el Analisis de varianza necesitamos:

\[F = \frac{CM_{entre}}{CM_{dentro}}\]

donde:

Bajo \(H_0\) se cumple que: \[ F \sim F_{k-1,\; N-k}, \]

Donde:

Para nuestro contraste \(k = 3\) y \(N = 150\).

Regla de decisión

Rechazamos la hipótesis nula \(H_{0}\) si el estadistico de prueba es mayor que el valor crítico \[ F_{\text{obs}} > F_{\alpha,\; k-1,\; N-k}, \] o de manera equivalente, si \[ p\text{-valor} < \alpha. \]

# Cuadrados entre grupos (SCB)
SCB <- sum(n_grupo * (medias_grupo - media_global)^2)

# Cuadrados dentro de grupos (SCD)
SCD <- sum(tapply(y, grupo, function(x) sum((x - mean(x))^2)))

# Cuadrados total (SCT)
SCT <- sum((y - media_global)^2)

alpha <- 0.05
k <- length(medias_grupo)
N <- length(y)
glB <- k - 1
glD <- N - k
CM_B <- SCB / glB
CM_D <- SCD / glD

# Estadístico de prueba
F_obs <- CM_B / CM_D
p_valor <- pf(F_obs, glB, glD, lower.tail = FALSE)


F_critico <- qf(1 - alpha, df1 = glB, df2 = glD)
tabla_anova <- data.frame(
  Fuente = c("Entre grupos", "Dentro de grupos", "Total", "Estadistico"),
  SC = c(SCB, SCD, SCT, NA),
  gl = c(glB, glD, N-1, NA),
  CM = c(CM_B, CM_D, NA, NA),
  F_obs = c(F_obs, NA, NA, F_obs),
  F_critico = c(F_critico, NA, NA, F_critico),
  p_valor = c(p_valor, NA, NA, p_valor)
)


tabla_anova %>%
  kable(format = "latex", booktabs = TRUE,
        caption = "Tabla ANOVA para longitud del petalo") %>%
  kable_styling(latex_options = c("striped", "hold_position")) %>%
  row_spec(1, bold = TRUE, color = "blue") %>%
  row_spec(4, italic = TRUE, background = "white")
kable(tabla_anova)
Fuente SC gl CM F_obs F_critico p_valor
Entre grupos 437.1028 2 218.5514000 1180.161 3.057621 0
Dentro de grupos 27.2226 147 0.1851878 NA NA NA
Total 464.3254 149 NA NA NA NA
Estadistico NA NA NA 1180.161 3.057621 0

Observamos un estadístico de prueba extremadamente grande en comparación con el valor crrítico así como un \(p\)-valor extremadamente pequeño por lo cual podemos afirmar que existe evidencia estadiística muy fuerte en favor en contra de la hipótesis nula, es decir que al menos una de las especies tiene una media en la longitud del petalo.

Para saber cuales la especie más pequeña y más grande realizaremos una prueba post-hoc para el contraste de dipótesis:

\[ H_{0}^{(i,j)} : \mu_i = \mu_j \]
Contra.

\[ H_{a}^{(i,j)} : \mu_i \neq \mu_j \]

En nuestro caso:

[ \[\begin{aligned} &H_{0}^{(1)} : \mu_{\text{Setosa}} = \mu_{\text{Versicolor}} \quad \text{vs} \quad H_{a}^{(1)} : \mu_{\text{Setosa}} \neq \mu_{\text{Versicolor}} \\ &H_{0}^{(2)} : \mu_{\text{Setosa}} = \mu_{\text{Virginica}} \quad \text{vs} \quad H_{a}^{(2)} : \mu_{\text{Setosa}} \neq \mu_{\text{Virginica}} \\ &H_{0}^{(3)} : \mu_{\text{Versicolor}} = \mu_{\text{Virginica}} \quad \text{vs} \quad H_{a}^{(3)} : \mu_{\text{Versicolor}} \neq \mu_{\text{Virginica}} \end{aligned}\]

]

Para lo cual el estadístico de prueba se define como:

\[ q = \frac{|\bar{X}_i - \bar{X}_j|}{SE}, \]

donde:

Bajo la hipótesis nula \(H_0\) (no hay diferencias entre las medias), se cumple que:

\[ q \sim q_{k,\; N-k}, \]

donde:

Para nuestro contraste, \(k = 3\) y \(N = 150\), por lo que los grados de libertad dentro son \(147\).

Regla de decisión

Rechazamos la hipótesis nula \(H_{0}\) para la comparación entre los grupos \(i\) y \(j\) si el estadístico de prueba es mayor que el valor crítico de la distribución studentizada de rango:

\[ q_{\text{obs}} > q_{\alpha,\; k,\; N-k}, \]

o de manera equivalente, si

\[ p\text{-valor} < \alpha. \]

diffs <- combn(medias_grupo, 2, function(x) x[2] - x[1])
SE <- sqrt(CM_D / n_grupo)

q_vals <- abs(diffs) / SE
q_critico <- qtukey(0.95, nmeans = length(medias_grupo), df = glD)

# Intervalos de confianza
IC_lwr <- diffs - q_critico * SE
IC_upr <- diffs + q_critico * SE

# p-valores ajustados
p_adj <- 1 - ptukey(q_vals, nmeans = length(medias_grupo), df = glD)

tabla_posthoc <- data.frame(
  Comparación = c("Versicolor-Setosa", "Virginica-Setosa", "Virginica-Versicolor"),
  diff = diffs,
  lwr = IC_lwr,
  upr = IC_upr,
  p_adj = p_adj
)

tabla_posthoc %>%
  kable(format = "latex", booktabs = TRUE,
        caption = "Prueba post hoc de Tukey para longitud del pétalo",
        align = "lcccc") %>%   
  kable_styling(latex_options = c("striped", "hold_position")) %>%
  row_spec(0, bold = TRUE, background = "#f0f0f0")
kable(tabla_posthoc)
Comparación diff lwr upr p_adj
Setosa Versicolor-Setosa 2.798 2.59422 3.00178 0
Versicolor Virginica-Setosa 4.090 3.88622 4.29378 0
Virginica Virginica-Versicolor 1.292 1.08822 1.49578 0

Los resultados de la prueba post-hoc muestran lo siguiente:

Dado que las comparaciones muestran diferencias significativas se puede concluir que las medias tienen el orden:

\[ \mu_{Setosa}<\mu_{Versicolor}<\mu_{Virginica} \]

Dado que los intervalos de confianza no contienen al cero se puede concluir que, con una probabilidad del 95%, las diferencias observadas no son producto del azar. Aunado a esto los \(p\)-valores nos indican que contamos con evidencia estadística suficiente para concluir que el orden de las medias es el mencionado, lo cual confirma nuestra suposición inicial.

Repetiremos el mismo proceso pero para el ancho del petalo obteniendo lo siguiente:

y <- data$petal.width
grupo <- data$variety
media_global <- mean(y)
medias_grupo <- tapply(y, grupo, mean)
n_grupo <- tapply(y, grupo, length)
tabla_resultados <- data.frame(
  Grupo = names(medias_grupo),
  Media = as.numeric(medias_grupo),
  n     = as.numeric(n_grupo)
)
cat("Media global:", round(media_global, 4), "\n\n")
## Media global: 1.1993
kable(
  tabla_resultados,
  caption = "Medias y tamaños por grupo",
  digits = 4,
  align = "c"
)
Medias y tamaños por grupo
Grupo Media n
Setosa 0.246 50
Versicolor 1.326 50
Virginica 2.026 50
SCB <- sum(n_grupo * (medias_grupo - media_global)^2)
SCD <- sum(tapply(y, grupo, function(x) sum((x - mean(x))^2)))
SCT <- sum((y - media_global)^2)

alpha <- 0.05
k <- length(medias_grupo)
N <- length(y)
glB <- k - 1
glD <- N - k
CM_B <- SCB / glB
CM_D <- SCD / glD
F_obs <- CM_B / CM_D
p_valor <- pf(F_obs, glB, glD, lower.tail = FALSE)

F_critico <- qf(1 - alpha, df1 = glB, df2 = glD)
tabla_anova <- data.frame(
  Fuente = c("Entre grupos", "Dentro de grupos", "Total", "Estadistico"),
  SC = c(SCB, SCD, SCT, NA),
  gl = c(glB, glD, N-1, NA),
  CM = c(CM_B, CM_D, NA, NA),
  F_obs = c(F_obs, NA, NA, F_obs),
  F_critico = c(F_critico, NA, NA, F_critico),
  p_valor = c(p_valor, NA, NA, p_valor)
)

tabla_anova %>%
  kable(format = "latex", booktabs = TRUE,
        caption = "Tabla ANOVA para ancho del petalo") %>%
  kable_styling(latex_options = c("striped", "hold_position")) %>%
  row_spec(1, bold = TRUE, color = "blue") %>%
  row_spec(4, italic = TRUE, background = "white")
kable(tabla_anova)
Fuente SC gl CM F_obs F_critico p_valor
Entre grupos 80.41333 2 40.2066667 960.0071 3.057621 0
Dentro de grupos 6.15660 147 0.0418816 NA NA NA
Total 86.56993 149 NA NA NA NA
Estadistico NA NA NA 960.0071 3.057621 0

Los resultados de la prueba ANOVA para el ancho del pétalo muestran un estadístico de prueba \(F_{\text{obs}}\), que supera ampliamente el valor crítico $F_{0.05,; 2,; 40}. El \(p\)-valor asociado es prácticamente cero, lo que indica evidencia estadística en contra de la hipótesis nula.

Por lo tanto, se concluye que existen diferencias significativas entre las medias del ancho del pétalo de las tres especies.

diffs <- combn(medias_grupo, 2, function(x) x[2] - x[1])
SE <- sqrt(CM_D / n_grupo)
q_vals <- abs(diffs) / SE
q_critico <- qtukey(0.95, nmeans = length(medias_grupo), df = glD)
IC_lwr <- diffs - q_critico * SE
IC_upr <- diffs + q_critico * SE
p_adj <- 1 - ptukey(q_vals, nmeans = length(medias_grupo), df = glD)

tabla_posthoc <- data.frame(
  Comparación = c("Versicolor-Setosa", "Virginica-Setosa", "Virginica-Versicolor"),
  diff = diffs,
  lwr = IC_lwr,
  upr = IC_upr,
  p_adj = p_adj
)

tabla_posthoc %>%
  kable(format = "latex", booktabs = TRUE,
        caption = "Prueba post hoc de Tukey para ancho del pétalo",
        align = "lcccc") %>%  
  kable_styling(latex_options = c("striped", "hold_position")) %>%
  row_spec(0, bold = TRUE, background = "#f0f0f0")
kable(tabla_posthoc)
Comparación diff lwr upr p_adj
Setosa Versicolor-Setosa 1.08 0.9830903 1.1769097 0
Versicolor Virginica-Setosa 1.78 1.6830903 1.8769097 0
Virginica Virginica-Versicolor 0.70 0.6030903 0.7969097 0

Los resultados de la prueba post-hoc muestran lo siguiente:

Dado que las comparaciones muestran diferencias significativas se puede concluir que las medias tienen el orden:

\[ \mu_{Setosa}<\mu_{Versicolor}<\mu_{Virginica} \]

Dado que los intervalos de confianza no contienen al cero se puede concluir que, con una probabilidad del 95%, las diferencias observadas no son producto del azar. Aunado a esto, los \(p\)-valores nos indican que contamos con evidencia estadística suficiente para concluir que el orden de las medias es el mencionado, lo cual confirma nuestra suposición inicial.

Globalmente podemos concluir que de las flores de la especie Setosa tienen un petalo más corto y mas angosto que la especie Versicolor y está última tiene un petalo más corto y más angosto que la especie Virginica.