Este tipo de pruebas son bastante utilizadas en ecología experimental, ya sea en laboratorio o campo. También es un componente de muchos modelos estadísticos (e.g. regresión linea, modelos lineales generalizados, etc), donde se evalúa la significancia de los parámetros estimados.
Existen dos principales tipos de estudios en ecología: experimental y observacional. Para el caso de experimentos, el investigador puede elegir los individuos y asignarlos a diferentes tratamientos, y así evaluar diferencias entre ellos. Este tipo de estudios son importantes cuando se quiere estimar causalidad. Por otro lado, estudios observacionales son más comunes en ecología, donde se toma una muestra de una población bajo determinado diseño de muestreo. Este tipo de estudios son mayormente empleados para hacer inferencias acerca de la población, pero resulta complicado muchas veces establecer relaciones de causalidad.
Un valor, o rango de valores, especificado para el parámetro que se quiere evaluar. Normalmente representa el o los valores no interesantes que se quiere rechazar.
Ejemplo: \(H_0:\mu = 0\). La hipótesis nula es que la media de la población es cero.
Un valor, o rango de valores, especificado para el parámetro que se quiere evaluar. Normalmente representa el o los valores interesantes que se espera no rechazar.
Ejemplo: \(H_A:\mu \neq 0\). La hipótesis alternativa es que la media de la población es diferente a cero.
A partir de una prueba de hipótesis podemos concluir:
Sin embargo, podemos también cometer tipos de errores, los cuales se resumen a continuación:
\(H_0\) es verdadera | \(H_A\) es verdadera | |
---|---|---|
Rechazar \(H_0\) | Error Tipo I | Decisión correcta |
Fallar en rechazar \(H_0\) | Decisión correcta | Error Tipo II |
Denominado como \(\alpha\), es la probabilidad de cometer un error Tipo I (rechazar la \(H_0\) cuando es verdadera) en una prueba de hipótesis.
Denominado como \(T\), valor calculado a partir de una función de valores muestreados que es usado para decidir si se rechaza la hipótesis nula o no.
Denominado como \(c\), valor con el cual \(T\) es comparado para decidir si se rechaza la hipótesis nula o no.
Probabilidad de obtener la diferencia observada (o una mayor) en el estadístico calculado, asumiendo que \(H_0\) sea verdadera.
Una distribución de probabilidad que se utiliza para decidir si se rechaza o no la hipótesis nula, basado en la ubicación de \(T\) y del valor crítico. Además se emplea para calcular el \(p-value\).
Valores para los cuales \(H_0\) será rechazada.
Estimado para el parámetro en estudio. Expresa un grado de incertidumbre y es influenciado directamente por el tamaño de muestra (a mayor número de observaciones, el intervalo se reduce). Su interpretación es: Si repetimos el experimento muchas veces, el \((1-\alpha)100\%\) de las veces el intervalo construido contendrá el valor verdadero del parámetro de la población. Debemos notar que si fueramos capaces de repetir el experimento, los intervalos de confianza de cada uno de ellos será distinto, sin embargo, como ya hemos mencionado, podremos decir que el \((1-\alpha)100\%\) de ellos contendrá el valor verdadero del parámetro.
Como el nombre lo dice, las pruebas presentadas a continuación se usan cuando se tienen una sola muestra y se especifica un valor para \(H_0\).
Para esta prueba se asume que la distribución de la variable bajo estudio en la población sigue una distribución normal y que la varianza de la población (\(\sigma^2\)) es conocida.
\(Z=\frac{\bar{X}-\mu_0}{\sqrt{\sigma^2/n}}\)
Donde \(\bar{X}\) representa la media de la muestra, \(n\) es el número de observaciones, y \(\mu_0\) es el valor especificado para la media en \(H_0\).
\(N(0,1)\)
Para todos los casos, \(H_0: \mu=\mu_0\)
Donde los valores con los cuales se compara \(Z\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\bar{X}-z_{1-\alpha /2}\sqrt{\sigma^2/n}, \bar{X}+z_{1-\alpha /2}\sqrt{\sigma^2/n})\)
Cuando \(H_A: \mu > \mu_0\):
\((\bar{X}-z_{1-\alpha }\sqrt{\sigma^2/n}, \infty)\)
Cuando \(H_A: \mu < \mu_0\):
\((-\infty,\bar{X}+z_{1-\alpha }\sqrt{\sigma^2/n})\)
Este ejemplo servirá también para otras pruebas de hipótesis y como interpretar sus resultados.
Dado que: \(H_0:\mu = 5cm\) y \(H_A:\mu \neq 5cm\), y que \(\alpha = 0.05\), supongamos que obtenemos un \(p-value = 0.02\) y el estadístico es \(Z=-3.5\).
Estos números lo interpretamos como: Hay cierta evidencia de rechazar \(H_0\) (\(\mu = 5cm\)) y por lo tanto el valor de la media en la población puede ser diferente a 5 cm a un nivel de significancia de \(\alpha = 0.05\). Además, hay un 2% de probabilidad de observar el estadístico obtenido (o uno mayor) si asumimos que \(H_0\) es verdadera.
Ahora vamos a ver como hacer esta prueba en R.
# Primero activar algunas librerias importantes
require(EnvStats)
require(purrr)
require(PASWR2)
# Con los siguientes parametros vamos a simular una muestra a
# partir de una poblacion (i.e. variable) con distribucion normal:
var_pop = 4
mean_pop = 99.6
n = 20 # numero de muestras a obtener
obs = rnorm(n = n, mean = mean_pop, sd = sqrt(var_pop)) # Esta es la muestra
# Tenemos la siguiente prueba de hipotesis
# H0: mu_0 = 101, HA: mu_0 < 101
mu_0 = 101
mean_sample = mean(obs) # calculamos la media de la muestra
# Calculamos el estadistico
z_stat = (mean_sample-mu_0)/sqrt(var_pop/n)
# Observemos la grafica de una distribucion normal estandar:
# Este paso no es necesario, solo para observar que es lo que estamos haciendo.
x = seq(-5, 5, length=100)
hx = dnorm(x)
plot(x, hx, type="l", xlab="x value",
ylab="Density", main="Standard normal distribution")
points(z_stat, 0, col = 'red', pch = 19) # Ver donde esta el z-stat estimado
# Supongamos que deseamos un nivel de significancia alpha = 0.05
# Vamos a calcular el valor critico para comparar el estadistico
alpha = 0.05
critical_value = qnorm(p = alpha)
# Comparamos el estadistico con el valor critico:
z_stat < critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculamos el p-value:
p_value = pnorm(q = z_stat) # area acumulada a la izquiera de la curva (depende de HA)
# Observemos el area usada para calcular el p-value:
# Este paso no es necesario, solo para observar que es lo que estamos haciendo.
lb = -5
ub = z_stat
i = x >= lb & x <= ub
lines(x, hx)
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="red")
# Vamos a obtener los intervalos de confianza:
# Inf: limite inferior
mean_sample + qnorm(p = 1-alpha)*sqrt(var_pop/n) # limite supeior
## [1] 101.2451
# Hasta el momento hemos corrido un z-test paso a paso.
# Estamos listos para obtener conclusiones.
# SIN EMBARGO:
# Podemos usar una funcion implementada en la libreria PASWR2 para correr un z.test:
z.test(obs, mu = 101, sigma.x = sqrt(var_pop), alternative = 'less', conf.level = 0.95)
##
## One Sample z-test
##
## data: obs
## z = -1.0968, p-value = 0.1364
## alternative hypothesis: true mean is less than 101
## 95 percent confidence interval:
## -Inf 101.2451
## sample estimates:
## mean of x
## 100.5095
Para esta prueba se asume que la distribución de la variable bajo estudio en la población sigue una distribución cercana a la normal y que la varianza de la población (\(\sigma^2\)) es desconocida.
\(Z=\frac{\bar{X}-\mu_0}{\sqrt{s^2/n}}\)
Donde \(s^2\) es la varianza de la muestra.
\(t_{n-1}\). Esta distribución se acerca a \(N(0,1)\) cuando \(n\) incrementa.
Para todos los casos, \(H_0: \mu=\mu_0\)
Donde los valores con los cuales se compara \(Z\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\bar{X}-t_{n-1,1-\alpha /2}\sqrt{s^2/n}, \bar{X}+t_{n-1,1-\alpha /2}\sqrt{s^2/n})\)
Cuando \(H_A: \mu > \mu_0\):
\((\bar{X}-t_{n-1,1-\alpha }\sqrt{s^2/n}, \infty)\)
Cuando \(H_A: \mu < \mu_0\):
\((-\infty,\bar{X}+t_{n-1,1-\alpha }\sqrt{s^2/n})\)
Ahora vamos a ver como hacer esta prueba en R.
# Con los siguientes parametros vamos a simular una muestra a
# partir de una poblacion (i.e. variable) con distribucion normal:
var_pop = 5
mean_pop = 101.2
n = 20
obs = rnorm(n = n, mean = mean_pop, sd = sqrt(var_pop)) # Esta es mi muestra
# H0: mu_0 = 101, HA: mu_0 > 101
mu_0 = 101
mean_sample = mean(obs)
var_sample = var(obs) # varianza de la muestra
# Calculamos el estadistico
t_stat = (mean_sample-mu_0)/sqrt(var_sample/n)
# Observemos la grafica de una distribucion t con n-1 df:
# Este paso no es necesario, solo para observar que es lo que estamos haciendo.
x = seq(-5, 5, length=100)
hx = dt(x, df = n-1)
plot(x, hx, type="l", xlab="x value",
ylab="Density", main="Standard normal distribution")
points(t_stat, 0, col = 'red', pch = 19) # Veamos el t estadistico
# Supongamos que deseamos un nivel de significancia alpha = 0.05
alpha = 0.05
critical_value = qt(p = 1-alpha, df = n-1)
t_stat > critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculamos el p-value
p_value = 1 - pt(q = t_stat, df = n-1) # acumulada (p-value)
# Observemos el area usada para calcular el p-value:
lb = t_stat
ub = 5
i = x >= lb & x <= ub
lines(x, hx)
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="red")
# Vamos a obtener los intervalos de confianza:
mean_sample - qt(p = 1 - alpha, df = n-1)*sqrt(var_sample/n) # limite inferior
## [1] 99.74659
# Inf es el limite superior
# Ahora usemos una funcion para correr un t-test en manera simple:
t.test(x = obs, mu = 101, alternative = 'greater', conf.level = 0.95)
##
## One Sample t-test
##
## data: obs
## t = -0.43078, df = 19, p-value = 0.6643
## alternative hypothesis: true mean is greater than 101
## 95 percent confidence interval:
## 99.74659 Inf
## sample estimates:
## mean of x
## 100.75
Esta prueba se emplea cuando tenemos una variable binaria (e.g. presencia/ausencia, hembra/macho, etc).
Sea \(Y_1, Y_2, ..., Y_n\) iid \(Bernoulli(p)\):
\(P(Y_i=1)=p\) y \(P(Y_i=0) = 1-p\)
Donde \(p\) es la probabilidad de éxito.
La distribución de referencia es \(X\sim Binom(n,p_0)\), donde \(X=\sum_i Y_i\) y \(p_0\) es el valor que se especifica en \(H_0\) para \(p\). Aquí, \(H_0: p = p_0\) y \(H_A: p> p_0\), \(H_A: p< p_0\), o \(H_A: p\neq p_0\). Debido que para este método se debe hallar el valor crítico, \(p-value\), región de rechazo de forma ‘manual’, normalmente se usa la función en R binom.test
para hacer una prueba binomial exacta.
Ahora vamos a ver como hacer esta prueba en R.
# Con los siguientes parametros vamos a simular una muestra:
n = 20
p_pop = 0.4
obs = rbinom(n = 1, size = n, prob = p_pop) # obs es X = sum(Y_i), donde Y_i es 0/1 en n muestras
# En otras palabras, obs es el numero de individuos encontrados en mi muestra con la caracteristica deseada
# Vamos a testear la siguiente hipotesis
# H0: p_0 = 0.5, HA: p_0 < 0.5
p_0 = 0.5
p_hat = obs/n
# Metodo exacto: ---
# Vamos a explorar como se ve el plot de probabilidad si
# asumimos p_0 = 0.5
x = 0:n # Todos los valores que puede tomar X
bin_prop = dbinom(x = x, size = n, prob = p_0)
plot(x, bin_prop, type = 'h')
# Ahora usemos una funcion sencilla en R para hacer un binomial test EXACTO:
binom.test(x = obs, n = n, p = p_0, alternative = 'less', conf.level = 0.95)
##
## Exact binomial test
##
## data: obs and n
## number of successes = 9, number of trials = 20, p-value = 0.4119
## alternative hypothesis: true probability of success is less than 0.5
## 95 percent confidence interval:
## 0.0000000 0.6530686
## sample estimates:
## probability of success
## 0.45
\(Z=\frac{\hat{p}-p_0}{\sqrt{p_0(1-p_0)/n}}\)
Donde \(\hat{p}=X/n\).
\(N(0,1)\)
Para todos los casos, \(H_0: p=p_0\)
Donde los valores con los cuales se compara \(Z\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\bar{X}-z_{1-\alpha /2}\sqrt{\hat{p}(1-\hat{p})/n}, \bar{X}+z_{1-\alpha /2}\sqrt{\hat{p}(1-\hat{p})/n})\)
Cuando \(H_A: \mu > \mu_0\):
\((\bar{X}-z_{1-\alpha }\sqrt{\hat{p}(1-\hat{p})/n}, \infty)\)
Cuando \(H_A: \mu < \mu_0\):
\((-\infty,\bar{X}+z_{1-\alpha }\sqrt{\hat{p}(1-\hat{p})/n})\)
Ahora vamos a ver como hacer esta prueba en R.
# Calculemos el estadistico
z_test_p0 = (p_hat - p_0)/sqrt(p_0*(1-p_0)/n)
# Supongamos que deseamos un nivel de significancia alpha = 0.05
# Calculamos el valor critico
alpha = 0.05
critical_value = qnorm(p = alpha)
# Comparamos el estadistico y el valor critico
z_test_p0 < critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculamos el p-value
p_value = pnorm(q = z_test_p0) # acumulada (p-value)
# Podemos usar esta funcion en R para correr este test con aproximacion normal
prop.test(x = obs, n = n, p = p_0, alternative = 'less', correct = FALSE)
##
## 1-sample proportions test without continuity correction
##
## data: obs out of n, null probability p_0
## X-squared = 0.2, df = 1, p-value = 0.3274
## alternative hypothesis: true p is less than 0.5
## 95 percent confidence interval:
## 0.0000000 0.6277923
## sample estimates:
## p
## 0.45
# Podemos usar esta funcion en R para correr este test con aproximacion normal y correccion de continuidad
# Particularmente util cuando tenemos un bajo n.
prop.test(x = obs, n = n, p = p_0, alternative = 'less', correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: obs out of n, null probability p_0
## X-squared = 0.05, df = 1, p-value = 0.4115
## alternative hypothesis: true p is less than 0.5
## 95 percent confidence interval:
## 0.000000 0.650385
## sample estimates:
## p
## 0.45
Utilizado cuando se quiere hacer una prueba acerca de la varianza de la población (\(\sigma^2\)).
\(X^2=\frac{(n-1)s^2}{\sigma ^2}\)
Donde \(s^2\) es la varianza de la muestra.
\(\chi^2_{n-1}\). Esta distribución se acerca a \(N(0,1)\) cuando \(n\) incrementa.
Para todos los casos, \(H_0: \mu=\mu_0\)
Donde los valores con los cuales se compara \(X^2\) son los valores críticos para cada caso.
Cuando \(H_A: \sigma^2 \neq \sigma^2_0\):
\(\frac{(n-1)s^2}{\chi_{n-1}^2(1-\alpha/2)}, \frac{(n-1)s^2}{\chi_{n-1}^2(\alpha/2)}\)
Ahora vamos a ver como hacer esta prueba en R.
# Con los siguientes parametros vamos a simular una muestra:
var_pop = 10
mean_pop = 100
n = 20
obs = rnorm(n = n, mean = mean_pop, sd = sqrt(var_pop)) # Esta es mi muestra
# H0: var_0 = 6, HA: var_0 > 6
var_0 = 6
mean_sample = mean(obs)
var_sample = var(obs)
# Calculamos el estadistico:
X_sigma_0 = (n-1)*var_sample/var_0
# Observemos la grafica de una Chi-cuadrado:
x = seq(0, 50, length=100)
hx = dchisq(x = x, df = n-1)
plot(x, hx, type="l", xlab="x value",
ylab="Density", main="Chi-square distribution")
points(X_sigma_0, 0, col = 'red', pch = 19) # Veamos donde esta el estadistico estimado
# Supongamos que deseamos un nivel de significancia alpha = 0.05
# Calculamos el valor critico:
alpha = 0.05
critical_value = qchisq(p = 1-alpha, df = n-1)
X_sigma_0 > critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculemos el p-value
p_value = 1-pchisq(q = X_sigma_0, df = n-1) # acumulada (p-value)
# Observemos el area usada para calcular el p-value:
lb = X_sigma_0
ub = 50
i = x >= lb & x <= ub
lines(x, hx)
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="red")
# Calculemos intervalos de confianza:
((n-1)*var_sample)/(qchisq(p = 1-alpha, df = n-1)) # Limite inferior
## [1] 5.455561
# Inf: Limite superior
# Ahora usemos la funcion implementada en la libreria EnvStats
varTest(x = obs, alternative = 'greater', conf.level = 0.95, sigma.squared = var_0)
##
## Chi-Squared Test on Variance
##
## data: obs
## Chi-Squared = 27.408, df = 19, p-value = 0.0955
## alternative hypothesis: true variance is greater than 6
## 95 percent confidence interval:
## 5.455561 Inf
## sample estimates:
## variance
## 8.655256
Esta prueba se emplea cuando probar si las observaciones siguen una distribución dada. Normalmente se utiliza la función ks.test
en R para hacer esta prueba, dado que la estimación de su estadístico no es sencillo. Para este caso, \(H_0:F(x)=F_0(x)\) y la hipótesis alternativa puede ser \(H_A:F(x)>F_0(x)\), \(H_A:F(x)<F_0(x)\), o \(H_A:F(x)\neq F_0(x)\), donde \(F_0(x)\) representa una distribución dada.
Ahora vamos a ver como hacer esta prueba en R.
# Ejemplo 1
# Vamos a simular una muestra a partir de una distribucion normal y
# luego comparar con una distribucion estandar dada:
n = 20
obs = rnorm(n = n, mean = 25, sd = 3) # Esta es mi muestra
# H0: F = F0. HA: F != F0
# Usemos una funcion implementada en R :
ks.test(x = obs, y = pnorm, mean = 25, sd = 3, alternative = 'two.sided')
##
## One-sample Kolmogorov-Smirnov test
##
## data: obs
## D = 0.20203, p-value = 0.341
## alternative hypothesis: two-sided
ks.test(x = obs, y = pnorm, mean = 20, sd = 3, alternative = 'two.sided')
##
## One-sample Kolmogorov-Smirnov test
##
## data: obs
## D = 0.74249, p-value = 7.317e-12
## alternative hypothesis: two-sided
# Ejemplo 2
# Vamos a simular una muestra a partir de una distribucion normal y
# luego comparar con una distribucion estandar dada:
n = 90
obs = runif(n = n, min = 0, max = 5) # Esta es mi muestra
# H0: F = F0. HA: F != F0
# Usemos una funcion implementada en R :
ks.test(x = obs, y = punif, min = 0, max = 5, alternative = 'two.sided')
##
## One-sample Kolmogorov-Smirnov test
##
## data: obs
## D = 0.066198, p-value = 0.8004
## alternative hypothesis: two-sided
ks.test(x = obs, y = punif, min = 5, max = 10, alternative = 'two.sided')
##
## One-sample Kolmogorov-Smirnov test
##
## data: obs
## D = 1, p-value = 6.661e-16
## alternative hypothesis: two-sided
También conocida como prueba Chi de Pearson. Utilizada para probar la uniformidad de una variable discreta. Aquí, \(H_0: p(x)=p_0(x)\), donde \(p_0(x)\) representa proporciones uniformes para esa variable.
\(X=\sum_{j=1}^k\frac{(O_j-E_j)^2}{E_j}\)
Donde \(k\) es cada posible categoría que la variable puede tomar, \(O_j\) es el número observado de individuos muestreados que pertenecen a la categoría \(j\). \(E_j\) es el número esperado de individuos muestreados que pertenecen a la categoría \(j\) si \(H_0\) fuera cierto.
\(\chi^2_{k-1}\). Esta distribución se acerca a \(N(0,1)\) cuando \(n\) incrementa.
Para todos los casos, \(H_0: p(x)=p_0(x)\)
Donde los valores con los cuales se compara \(X^2\) son los valores críticos para cada caso.
Ahora vamos a ver como hacer esta prueba en R.
# Vamos a simular la muestra a partir de algunos parametros
# Valores discretos a partir de una distribucion uniforme:
min_pop = 6
max_pop = 10
n = 20
obs_prelim = rdunif(n = n, a = min_pop, b = max_pop)
obs = as.vector(table(obs_prelim))
# Cuales son los valores esperados asumiendo una uniformidad?
n_vals = max_pop - min_pop + 1
esp = rep(x = n/n_vals, times = n_vals)
# H0: p(x) = p_0(x) , HA: p(x) != p_0(x)
# Calculamos el estadistico:
X_est = sum((obs-esp)^2/esp)
# Supongamos que deseamos un nivel de significancia alpha = 0.05
# Calculamos el valor critico
alpha = 0.05
k = n_vals # numero de categorias
critical_value = qchisq(p = 1-alpha, df = k-1)
X_est > critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculemos el p-value
p_value = 1-pchisq(q = X_est, df = k-1) # acumulada (p-value)
# Podemos usar la funcion chisq.test implementada en R para hacer este test:
p_x = rep(x = 1/n_vals, times = n_vals)
chisq.test(obs, p = p_x)
##
## Chi-squared test for given probabilities
##
## data: obs
## X-squared = 3, df = 4, p-value = 0.5578
Para estas pruebas, tenemos dos muestras que pueden ser independientes o emparejadas (dependientes). Para este último caso, cada individuos de la primera muestra esta asociado a un único individuos de la segunda.
Se tienen dos grupos \(X_1, ..., X_m\) y \(Y_1, ..., Y_n\), donde \(\delta = \mu_X- \mu_Y\) (diferencia de medias entre poblaciones). Además, \(\hat{\delta} = \bar{X}- \bar{Y}\). Para este tipo de prueba se asume que las varianzas son conocidas y que \(H_0: \delta = \delta_0\).
\(Z=\frac{\hat{\delta}-\delta_0}{\sqrt{\frac{\sigma^2_X}{m}+\frac{\sigma^2_Y}{n}}}\)
\(N(0,1)\)
Para todos los casos, \(H_0: \delta=\delta_0\)
Donde los valores con los cuales se compara \(Z\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\hat{\delta}-z_{1-\alpha /2}\sqrt{\frac{\sigma^2_X}{m}+\frac{\sigma^2_Y}{n}}, \hat{\delta}+z_{1-\alpha /2}\sqrt{\frac{\sigma^2_X}{m}+\frac{\sigma^2_Y}{n}})\)
Ahora vamos a ver como hacer esta prueba en R.
# Simulamos la muestra:
var_pop_1 = 2
var_pop_2 = 3
mean_pop_1 = 99
mean_pop_2 = 100
n_1 = 20
n_2 = 25
# Simulamos datos:
obs_1 = rnorm(n = n_1, mean = mean_pop_1, sd = sqrt(var_pop_1))
obs_2 = rnorm(n = n_2, mean = mean_pop_2, sd = sqrt(var_pop_2))
# Calculamos media de las muestras:
mean_sample_1 = mean(obs_1)
mean_sample_2 = mean(obs_2)
delta = mean_sample_1 - mean_sample_2
# H0: delta = 0, HA: delta != 0
delta_0 = 0
# Calculamos el estadistico:
z_stat_delta_0 = (delta-delta_0)/sqrt((var_pop_1/n_1) + (var_pop_2/n_2))
# Supongamos que deseamos un nivel de significancia alpha = 0.05
alpha = 0.05
critical_value = qnorm(p = 1-alpha/2)
abs(z_stat_delta_0) < critical_value # Rechazamos la hipotesis nula?
## [1] TRUE
# Calculamos el p-value:
p_value = 2*pnorm(q = z_stat_delta_0) # acumulada (p-value)
# Vamos a obtener los intervalos de confianza:
delta - qnorm(p = 1 - alpha/2)*sqrt((var_pop_1/n_1) + (var_pop_2/n_2)) # limite inferior
## [1] -1.480968
delta + qnorm(p = 1 - alpha/2)*sqrt((var_pop_1/n_1) + (var_pop_2/n_2)) # limite superior
## [1] 0.3576408
# Usamos la funcion implementada en la libreria PASWR2 para hacer este test:
z.test(x = obs_1, y = obs_2, alternative = 'two.sided', mu = 0,
sigma.x = sqrt(var_pop_1), sigma.y = sqrt(var_pop_2), conf.level = 0.95)
##
## Two Sample z-test
##
## data: obs_1 and obs_2
## z = -1.1975, p-value = 0.2311
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.4809684 0.3576408
## sample estimates:
## mean of x mean of y
## 99.21361 99.77527
Se utiliza cuando no se tiene información acerca de la varianza. Aquí se puede asumir que \(\sigma_X^2 = \sigma_Y^2 = \sigma^2\). Luego, se puede calcular la varianza agrupada:
\(s_p^2=\frac{(m-1)s_X^2+(n-1)s_Y^2}{m+n-2}\)
\(t=\frac{\hat{\delta}-\delta_0}{\sqrt{\frac{s_p^2}{m}+\frac{s_p^2}{n}}}\)
\(t_{m+n-2}\)
Para todos los casos, \(H_0: \delta=\delta_0\)
Donde los valores con los cuales se compara \(t\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\hat{\delta}-t_{m+n-2,1-\alpha /2}\sqrt{\frac{s_p^2}{m}+\frac{s_p^2}{n}}, \hat{\delta}+t_{m+n-2,1-\alpha /2}\sqrt{\frac{s_p^2}{m}+\frac{s_p^2}{n}})\)
Ahora vamos a ver como hacer esta prueba en R.
# Cuando no tenemos informacion acerca de la varianza de la poblacion:
# Vamos a asumir que las varianzas son iguales.
# Con la misma simulacion del ejemplo anterior:
# Calculamos la varianza de la muestra
var_sample_1 = var(obs_1)
var_sample_2 = var(obs_2)
# Calculamos S2_p:
S2p = ((n_1-1)*var_sample_1 + (n_2-1)*var_sample_2)/(n_1+n_2-2)
# Calculamos el estadistico:
t_stat = (delta-delta_0)/sqrt((S2p/n_1) + (S2p/n_2))
# Supongamos que deseamos un nivel de significancia alpha = 0.05
alpha = 0.05
critical_value = qt(p = 1-alpha/2, df = n_1+n_2-2)
abs(t_stat) > critical_value # Rechazamos la hipotesis nula?
## [1] FALSE
# Calculamos el p-value
p_value = 2*pt(q = t_stat, df = n_1+n_2-2) # acumulada (p-value)
# Vamos a obtener los intervalos de confianza:
delta - qt(p = 1 - alpha/2, df = n_1+n_2-2)*sqrt((S2p/n_1) + (S2p/n_2)) # limite inferior
## [1] -1.545869
delta + qt(p = 1 - alpha/2, df = n_1+n_2-2)*sqrt((S2p/n_1) + (S2p/n_2)) # limite superior
## [1] 0.4225411
# Ahora usemos una funcion para correr un t-test en manera simple:
# Recordamos que asumimos que varianzas de las dos poblaciones son iguales
t.test(x = obs_1, y = obs_2, mu = 0, var.equal = TRUE, alternative = 'two.sided',
conf.level = 0.95)
##
## Two Sample t-test
##
## data: obs_1 and obs_2
## t = -1.1509, df = 43, p-value = 0.2561
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.5458688 0.4225411
## sample estimates:
## mean of x mean of y
## 99.21361 99.77527
Se utiliza cuando no se tiene información acerca de la varianza de la población. Aquí se asume que \(\sigma_X^2 \neq \sigma_Y^2\).
\(t=\frac{\hat{\delta}-\delta_0}{\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}}}\)
\(t_{\nu}\), donde
\(\nu = \frac{(\frac{s_X^2}{m}+\frac{s_Y^2}{n})^2}{\frac{s_X^4}{m^2(m-1)} + \frac{s_Y^4}{n^2(n-1)}}\)
Para todos los casos, \(H_0: \delta=\delta_0\)
Donde los valores con los cuales se compara \(t\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\hat{\delta}-t_{\nu,1-\alpha /2}\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}}, \hat{\delta}+t_{\nu,1-\alpha /2}\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}})\)
Ahora vamos a ver como hacer esta prueba en R.
# Cuando no tenemos informacion acerca de la varianza de la poblacion:
# Vamos a asumir que las varianzas NO son iguales.
# Vamos a seguir usando el mismo ejemplo:
# Para este caso, vamos a usar simplemente la funcion implementada en R,
# cambiando el argumento var.equal.
t.test(x = obs_1, y = obs_2, mu = 0, var.equal = FALSE, alternative = 'two.sided',
conf.level = 0.95)
##
## Welch Two Sample t-test
##
## data: obs_1 and obs_2
## t = -1.19, df = 42.768, p-value = 0.2406
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.5136359 0.3903083
## sample estimates:
## mean of x mean of y
## 99.21361 99.77527
Se tienen dos grupos \(X_1, ..., X_m\) y \(Y_1, ..., Y_n\), donde \(\delta = \mu_X- \mu_Y\) (diferencia de medias entre poblaciones), pero no son independientes:
\(Cov(X,Y)=E[(X-E(X))(Y-E(Y))]=\sigma_{XY}\)
Además, \(\bar{D} = \bar{X}- \bar{Y}\).
\(Z=\frac{\bar{D}-\delta_0}{\sqrt{\frac{\sigma^2_X}{n}+\frac{\sigma^2_Y}{n}-2\frac{\sigma_{XY}}{n}}}\)
\(N(0,1)\)
Para todos los casos, \(H_0: \delta=\delta_0\)
Donde los valores con los cuales se compara \(Z\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\bar{D}-z_{1-\alpha /2}\sqrt{\frac{\sigma^2_X}{n}+\frac{\sigma^2_Y}{n}-2\frac{\sigma_{XY}}{n}}, \bar{D}+z_{1-\alpha /2}\sqrt{\frac{\sigma^2_X}{n}+\frac{\sigma^2_Y}{n}-2\frac{\sigma_{XY}}{n}})\)
Ahora vamos a ver como hacer esta prueba en R.
# Simulamos la muestra:
var_pop = 4
mean_pop = 103
n = 20
# Simulamos datos:
obs_1 = rnorm(n = n, mean = mean_pop, sd = sqrt(var_pop))
obs_2 = obs_1 + 5
# Para este ejemplo usamos el camino sencillo:
# Seguimos con H0: delta_0 = 0, HA: delta_0 != 0
# Usamos la funcion implementada en la libreria PASWR2 para hacer este test:
z.test(x = obs_1, y = obs_2, alternative = 'two.sided', mu = 0, paired = TRUE,
sigma.d = sqrt(var_pop), conf.level = 0.95)
##
## Paired z-test
##
## data: obs_1 and obs_2
## z = -11.18, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -5.876523 -4.123477
## sample estimates:
## mean of the differences
## -5
Se utiliza cuando no se tiene información acerca de la varianza de la población.
\(t=\frac{\bar{D}-\delta_0}{\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}-2\frac{s_{XY}}{n}}}\)
\(t_{n-1}\)
Para todos los casos, \(H_0: \delta=\delta_0\)
Donde los valores con los cuales se compara \(t\) son los valores críticos para cada caso.
Cuando \(H_A: \mu \neq \mu_0\):
\((\bar{D}-t_{n-1,1-\alpha /2}\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}-2\frac{s_{XY}}{n}}, \bar{D}+t_{n-1,1-\alpha /2}\sqrt{\frac{s_X^2}{m}+\frac{s_Y^2}{n}-2\frac{s_{XY}}{n}})\)
Utilizado cuando se quiere comparar varianzas de dos poblaciones.
\(F=\frac{s_1^2}{s_2^2}\)
Donde \(s_1^2\) y \(s_2^2\) son las varianzas de la muestra de la población 1 y 2, respectivamente.
\(F_{n_1-1, n_2-1}\), donde \(n_1\) y \(n_2\) es el número de observaciones en la muestra 1 y 2, respectivamente.
Para todos los casos, \(H_0: \mu=\mu_0\)
Donde los valores con los cuales se compara \(F\) son los valores críticos para cada caso.
Ahora vamos a ver como hacer esta prueba en R.
# Simulamos la muestra:
var_pop_1 = 2
var_pop_2 = 3
mean_pop_1 = 99
mean_pop_2 = 100
n_1 = 30
n_2 = 25
# Simulamos datos:
obs_1 = rnorm(n = n_1, mean = mean_pop_1, sd = sqrt(var_pop_1))
obs_2 = rnorm(n = n_2, mean = mean_pop_2, sd = sqrt(var_pop_2))
# Calculamos la varianzas de la muestras:
var_sample_1 = var(obs_1)
var_sample_2 = var(obs_2)
# H0: var_1 = var_2, HA: var_1 < var_2
# Calculamos el estadistico
F_stat = var_sample_1/var_sample_2
# Supongamos que deseamos un nivel de significancia alpha = 0.05
# Calculamos el valor critico
alpha = 0.05
critical_value = qf(p = alpha, df1 = n_1 - 1, df2 = n_2 - 1)
F_stat < critical_value # Rechazamos la hipotesis nula?
## [1] TRUE
# Calculamos el p-value:
p_value = pf(q = F_stat, df1 = n_1 - 1, df2 = n_2 - 1) # acumulada (p-value)
# Ahora usamos la funcion para correr este test:
var.test(x = obs_1, y = obs_2, alternative = 'less', conf.level = 0.95)
##
## F test to compare two variances
##
## data: obs_1 and obs_2
## F = 0.32605, num df = 29, denom df = 24, p-value = 0.002292
## alternative hypothesis: true ratio of variances is less than 1
## 95 percent confidence interval:
## 0.0000000 0.6196676
## sample estimates:
## ratio of variances
## 0.3260497
La mayoría de pruebas de hipótesis que hemos descrito hasta el momento requieren que la distribución de la variable en la población sea cercana a la normal. Sin embargo, existen otras pruebas de hipótesis que no requieren este supuesto, comúnmente llamadas pruebas no paramétricas. A continuación describimos las más importantes rápidamente.
Se usa para decidir si una distribución binomial tiene la misma probabilidad de tener éxito o fallar (\(p_0 = 0.5\)). Se puede realizar fácilmente en R utilizando la función binom.test
y especificar que \(p = 0.5\). Claramente, \(H_0:p = p_0\) y \(H_A: p \neq p_0\).
Se usa para verificar si la distribución de dos muestras son idénticas. Claramente, \(H_0:p_1(x) = p_2(x)\) y \(H_A: p_1(x) \neq p_2(x)\).
Ahora vamos a ver como hacer esta prueba en R.
require(MASS)
# Usamos esta base de datos:
head(immer)
## Loc Var Y1 Y2
## 1 UF M 81.0 80.7
## 2 UF S 105.4 82.3
## 3 UF V 119.7 80.4
## 4 UF T 109.7 87.2
## 5 UF P 98.3 84.2
## 6 W M 146.6 100.4
# Para datos emparejados
wilcox.test(immer$Y1, immer$Y2, paired=TRUE)
##
## Wilcoxon signed rank test with continuity correction
##
## data: immer$Y1 and immer$Y2
## V = 368.5, p-value = 0.005318
## alternative hypothesis: true location shift is not equal to 0
Se usa para verificar si la distribución de dos muestras son idénticas. Claramente, \(H_0:p_1(x) = p_2(x)\) y \(H_A: p_1(x) \neq p_2(x)\). Principalmente para evaluar si los muestreos vienen de poblaciones idénticas.
Ahora vamos a ver como hacer esta prueba en R.
# Usamos esta base de datos:
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
# Para datos emparejados
wilcox.test(mpg ~ am, data=mtcars)
##
## Wilcoxon rank sum test with continuity correction
##
## data: mpg by am
## W = 42, p-value = 0.001871
## alternative hypothesis: true location shift is not equal to 0
Se usa para verificar si la distribución de dos muestras son idénticas. Claramente, \(H_0:p_1(x) = p_2(x)\) y \(H_A: p_1(x) \neq p_2(x)\). Principalmente para evaluar si los muestreos vienen de poblaciones idénticas.
Ahora vamos a ver como hacer esta prueba en R.
# Usamos esta base de datos:
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
# Para datos emparejados
kruskal.test(Ozone ~ Month, data = airquality)
##
## Kruskal-Wallis rank sum test
##
## data: Ozone by Month
## Kruskal-Wallis chi-squared = 29.267, df = 4, p-value = 6.901e-06