En las investigaciones biológicas, muchas veces determinamos las frecuencias con la que ocurren ciertos eventos, que están clasificados en ciertas categorías.
Por ejemplo, en un experimento de genética, se puede determinar la frecuencia con la que ocurren ciertos genotipos en una población. O en un experimento de ecología, se puede determinar la frecuencia con la que ocurren ciertas especies en diferentes comunidades.
La prueba de bondad de ajuste se usa para determinar si una muestra de datos se ajusta a una distribución de probabilidad específica. La hipótesis nula (\(H_0\)) para una prueba de bondad de ajuste es que la distribución de frecuencias observadas en los datos no es diferente de una distribución de frecuencias especificada con anterioridad (binomial, Poisson). Si \(H_0\) no se puede rechazar, quiere decir que cualquier alejamiento de la distribución esperada, es debido al azar. Esta prueba la utilizamos anteriormente para probar el ajuste a una distribución de Poisson.
Los supuestos de esta prueba son:
Ahora vamos a usar la prueba de bondad de ajuste para determinar si una muestra de datos se ajusta a una distribución de probabilidad teórica. Para esta prueba usaremos el estadístico de prueba \(\chi^2\).
El estadístico de prueba \(\chi^2\) se calcula como:
\[\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}\]
donde:
Si el valor de \(\chi^2\) es mayor que el valor crítico para un \(\alpha\) predeterminado (usualmente 0.05), entonces rechazamos la hipótesis nula.
En una observación realizada en los jardínes de la UPRH, encontramos que debajo de un árbol de Palo de María (Calophyllum antillanum), había plántulas de dos tipos: con hojas verdes y con hojas crema (etiolizadas).
Figura 1. Plántulas de Palo de María (Calophyllum antillanum) con hojas verdes y hojas crema.
Sospechamos que la etiolización de las plántulas es debida a un gen recesivo. Si ese es el caso y se cumple el supuesto de cruces al azar, entonces la proporción de plántulas con hojas crema debería ser de 1/4. Obtuvimos el siguiente contaje:
Vamos a realizar una prueba de bondad de ajuste para determinar si la proporción hojas verde:hojas crema es de 3:1.
Hipótesis nula: La proporción de plántulas con hojas verdes y hojas crema es de 3:1.
Hipótesis alternativa: La proporción de plántulas con hojas verdes y hojas crema no es de 3:1.
# Datos observados
observed <- c(270, 86)
# Proporción esperada
expected <- c(3/4, 1/4) * sum(observed)
# crear una tabla gt con los datos observados y esperados
library(gt)
tabla <- gt(data = data.frame(observado = observed, esperado = expected))
tabla
observado | esperado |
---|---|
270 | 267 |
86 | 89 |
# Calcular el estadístico de prueba
chi2 <- sum((observed - expected)^2 / expected)
# Imprimir el valor de chi2
cat("Estadístico de prueba:", chi2, "\n")
## Estadístico de prueba: 0.1348315
# Calcular el valor crítico
alpha <- 0.05
# Grados de libertad
df <- length(observed) - 1
critical_value <- qchisq(1 - alpha, df)
# Calcular el p-valor
p_value <- 1 - pchisq(chi2, df)
# Imprimir resultados
cat("Valor crítico:", critical_value, "\n")
## Valor crítico: 3.841459
cat("P-value:", p_value, "\n")
## P-value: 0.7134743
# Decisión
if (chi2 > critical_value) {
decision <- "Rechazamos H0"
} else {
decision <- "No rechazamos H0"
}
decision
## [1] "No rechazamos H0"
# Gráfica de la distribución chi-cuadrado
library(ggplot2)
# Datos
x <- seq(0, 20, 0.01)
y <- dchisq(x, df)
# Gráfica
ggplot(data.frame(x = x, y = y), aes(x = x, y = y)) +
geom_line() +
geom_vline(xintercept = chi2, color = "blue") +
geom_area(data = subset(data.frame(x = x, y = y), x > critical_value), aes(x = x, y = y), fill = "red", alpha = 0.5) +
labs(x = "Chi-cuadrado", y = "f(Chi-cuadrado)") +
coord_cartesian(xlim = c(0,8), ylim = c(0, 1)) +
theme_minimal()
FIGURA 2. Distribución \(\chi^2\) con la región crítica en rojo y el estadístico de prueba en azul.
chisq.test
# Prueba de bondad de ajuste con chisq.test
chisq.test(observed, p = c(3/4, 1/4))
##
## Chi-squared test for given probabilities
##
## data: observed
## X-squared = 0.13483, df = 1, p-value = 0.7135
En un estudio de biodiversidad en un bosque tropical, se encontraron las siguientes frecuencias de especies de árboles:
Se sospecha que la distribución de especies en el bosque sigue una distribución de probabilidad específica. Vamos a realizar una prueba de bondad de ajuste para determinar si la distribución de especies en el bosque sigue una distribución uniforme.
Hipótesis nula: La distribución de especies en el bosque sigue una distribución uniforme.
Hipótesis alternativa: La distribución de especies en el bosque no sigue una distribución uniforme.
# Datos observados
observed <- c(20, 30, 40, 10)
# Proporción esperada
expected <- rep(sum(observed) / length(observed), length(observed))
# crear una tabla gt con los datos observados y esperados
tabla <- gt(data = data.frame(observado = observed, esperado = expected))
tabla
observado | esperado |
---|---|
20 | 25 |
30 | 25 |
40 | 25 |
10 | 25 |
# Calcular el estadístico de prueba
chi2 <- sum((observed - expected)^2 / expected)
# Grados de libertad
df <- length(observed) - 1
# Imprimir el valor de chi2
cat("Estadístico de prueba:", chi2, "\n")
## Estadístico de prueba: 20
# Calcular el valor crítico
alpha <- 0.05
critical_value <- qchisq(1 - alpha, df)
# Calcular el p-valor
p_value <- 1 - pchisq(chi2, df)
# Imprimir resultados
cat("Valor crítico:", critical_value, "\n")
## Valor crítico: 7.814728
cat("P-value:", p_value, "\n")
## P-value: 0.0001697424
# Decisión
if (chi2 > critical_value) {
decision <- "Rechazamos H0"
} else {
decision <- "No rechazamos H0"
}
decision
## [1] "Rechazamos H0"
chisq.test
para una distribución
uniforme# Prueba de bondad de ajuste con chisq.test para distribución uniforme
chisq.test(observed, p = rep(1/length(observed), length(observed)))
##
## Chi-squared test for given probabilities
##
## data: observed
## X-squared = 20, df = 3, p-value = 0.0001697
# alternativa con rescale.p
# chisq.test(observed, p = c(25,25,25,25), rescale.p = TRUE)