Ejercicio 1

Se mide \(X\): “Número de de moscas por metro cúbico de follaje”. Se tienen tres tratamientos (hierba, arbustos y árboles). Pruebe la hipótesis de que la abundancia en las tres capas es la misma usando el test de Kruskal-Wallis.

Hierba Arbustos Árbol
180 172 163
173 158 170
175 167 158
182 160 162
181 175 170

Solución

Para probar si el número de moscas es el mismo en las tres capas, se prueba el sistema \[ H_0\colon \theta_1=\theta_2=\theta_3\quad\mathrm{vs.}\quad H_a\colon\theta_i\neq\theta_j\;\;\mbox{para algún}\,\, i\neq j \] con \(\theta_i\) la mediana de la distribución del tratamiento \(i\). En este caso, \(i=1\) denota el tratamiento de la hierba, \(i=2\), el de arbustos, e \(i=3\), el de árboles.

La estadística de prueba es \[ H=\frac{12}{N(N+1)}\sum_{j=1}^k\frac{R_j^2}{n_j}-3(N+1), \] que bajo \(H_0\) se distribuye \(\chi^2_{k-1}\). La decisión será rechazar \(H_0\) con una confiabilidad de \(100(1-\alpha)\%\) si un valor observado de \(H\), digamos \(H_c\), satisface que \(H_c>\chi^2_{k-1, 1-\alpha}\).

Calculamos \(H_c\) con los datos registrados en los tratamientos.

En primer lugar, hacemos el ránking para cada observación:

ranking <- function(df) {
  df_ordenado <- df
  numericos <- unlist(df[sapply(df, is.numeric)])
  rangos_base <- rank(numericos, ties.method = "min")
  frecuencias <- table(numericos)
  freq_vec <- as.numeric(frecuencias[as.character(numericos)])
  ajustes <- 1 / freq_vec
  rangos_ajustados <- rangos_base + ifelse(freq_vec > 1, ajustes, 0)
  i <- 1
  for (col in names(df)) {
    if (is.numeric(df[[col]])) {
      n <- length(df[[col]])
      df_ordenado[[col]] <- rangos_ajustados[i:(i + n - 1)]
      i <- i + n
    }
  }
  
  return(df_ordenado)
}
ranking_data <- ranking(data); ranking_data
##   Hierba Arbustos Árbol
## 1   13.0      9.0   5.0
## 2   10.0      1.5   7.5
## 3   11.5      6.0   1.5
## 4   15.0      3.0   4.0
## 5   14.0     11.5   7.5

Ahora, sumamos los ránkings por cada tratamiento: \(R_1\), \(R_2\) y \(R_3\):

R <- colSums(ranking_data); R
##   Hierba Arbustos    Árbol 
##     63.5     31.0     25.5

Finalmente, usando que \[ N=\sum_{j=1}^kn_j; \]

  1. e.,
N <- length(unlist(data)); N
## [1] 15

se tiene que

Hc = 12/(N*(N+1))*(1/nrow(data))*sum(R^2)-3*(N+1); Hc
## [1] 8.435

Y el valor crítico, con un nivel de significancia de \(0.05\), es

vc = qchisq(.95, length(data)-1); vc
## [1] 5.991465

Gráficamente,

x <- seq(0, qchisq(0.999, length(data)-1), length = 1000)
y <- dchisq(x, df = length(data)-1)
plot(x, y, type = "l", lwd = 2, col = "cyan",
     main = "",
     xlab = expression(chi[2]^2), ylab = "Densidad")
x_rechazo <- x[x > vc]
y_rechazo <- y[x > vc]
polygon(c(vc, x_rechazo, max(x_rechazo)),
        c(0, y_rechazo, 0),
        col = "yellow", border = NA)
abline(v = Hc, col = "magenta", lwd = 2, lty = 2)
legend("topright",
       legend = c(paste0("RR: (", round(vc, 2), ", ∞)"),
                  paste0("Hc (", round(Hc, 2), ")")),
       col = c("yellow", "magenta"),
       lwd = c(NA, 2),
       lty = c(NA, 2),
       pch = c(15, NA),
       pt.cex = 2,
       bty = "n")

Por lo tanto, con una confiabilidad del \(95\%\), existe suficiente evidencia empírica para rechazar \(H_0\). Es decir, el número de moscas por metro cúbico de follaje no es el mismo en las tres capas.

Ejercicio 2

8 contenedores de agua se toman en cada uno de 4 estanques. Se mide el pH en cada muestra. Pruebe la hipótesis de que el pH en todos los estanques es el mismo usando el test de Kruskal-Wallis.

Estanque_1 Estanque_2 Estanque_3 Estanque_4
7.68 7.71 7.74 7.71
7.69 7.73 7.75 7.71
7.70 7.74 7.77 7.74
7.70 7.74 7.78 7.79
7.72 7.78 7.80 7.81
7.73 7.78 7.81 7.85
7.73 7.80 7.84 7.87
7.76 7.81 7.85 7.91

Solución

Procedemos de forma análoga al ejercicio anterior.

Hacemos el ránking para cada observación:

ranking <- function(df) {
  df_ordenado <- df
  numericos <- unlist(df[sapply(df, is.numeric)])
  rangos_base <- rank(numericos, ties.method = "min")
  frecuencias <- table(numericos)
  freq_vec <- as.numeric(frecuencias[as.character(numericos)])
  ajustes <- 1 / freq_vec
  rangos_ajustados <- rangos_base + ifelse(freq_vec > 1, ajustes, 0)
  i <- 1
  for (col in names(df)) {
    if (is.numeric(df[[col]])) {
      n <- length(df[[col]])
      df_ordenado[[col]] <- rangos_ajustados[i:(i + n - 1)]
      i <- i + n
    }
  }
  
  return(df_ordenado)
}
ranking_data <- ranking(data); ranking_data
##   Estanque_1 Estanque_2 Estanque_3 Estanque_4
## 1   1.000000   5.333333   12.25000   5.333333
## 2   2.000000   9.333333   16.00000   5.333333
## 3   3.500000  12.250000   18.00000  12.250000
## 4   3.500000  12.250000   19.33333  22.000000
## 5   8.000000  19.333333   23.50000  25.333333
## 6   9.333333  19.333333   25.33333  29.500000
## 7   9.333333  23.500000   28.00000  31.000000
## 8  17.000000  25.333333   29.50000  32.000000

Ahora, sumamos los ránkings por cada tratamiento: \(R_1\), \(R_2\) y \(R_3\):

R <- colSums(ranking_data); R
## Estanque_1 Estanque_2 Estanque_3 Estanque_4 
##   53.66667  126.66667  171.91667  162.75000

Finalmente, usando que

N <- length(unlist(data)); N
## [1] 32

se tiene que

Hc = 12/(N*(N+1))*(1/nrow(data))*sum(R^2)-3*(N+1); Hc
## [1] 7.487867

Y el valor crítico, con un nivel de significancia de \(0.05\), es

vc = qchisq(.95, length(data)-1); vc
## [1] 7.814728

Gráficamente,

x <- seq(0, qchisq(0.999, length(data)-1), length = 1000)
y <- dchisq(x, df = length(data)-1)
plot(x, y, type = "l", lwd = 2, col = "cyan",
     main = "",
     xlab = expression(chi[3]^2), ylab = "Densidad")
x_rechazo <- x[x > vc]
y_rechazo <- y[x > vc]
polygon(c(vc, x_rechazo, max(x_rechazo)),
        c(0, y_rechazo, 0),
        col = "yellow", border = NA)
abline(v = Hc, col = "magenta", lwd = 2, lty = 2)
legend("topright",
       legend = c(paste0("RR: (", round(vc, 2), ", ∞)"),
                  paste0("Hc (", round(Hc, 2), ")")),
       col = c("yellow", "magenta"),
       lwd = c(NA, 2),
       lty = c(NA, 2),
       pch = c(15, NA),
       pt.cex = 2,
       bty = "n")

Por lo tanto, con una confiabilidad del \(95\%\), existe suficiente evidencia empírica para no rechazar \(H_0\). Es decir, el pH en los cuatro estanques es el mismo.

\[ \phantom{\begin{pmatrix} 1 \\ 2 \\ 3 \\ 4 \\ \end{pmatrix}} \]