if (!require(stests)) {
install.packages("devtools") # solo si tampoco está instalado
devtools::install_github("fhernanb/stests")
}
if (!require(nortest)) {
install.packages("nortest") # se baja desde CRAN
library(nortest)
} else {
library(nortest)
}
library(stests)
library(stats)
library(nortest)
Para realizar este tipo de prueba se usa la función
var.test del paquete stests.
La función var.test tiene la siguiente estructura:
stests::var.test(
x,
alternative = "two.sided",
null.value = 1,
conf.level = 0.95
)
Ejemplo
Para verificar si el proceso de llenado de bolsas de café está operando con la variabilidad permitida se toman aleatoriamente muestras de tamaño diez cada cuatro horas. Una muestra de bolsas está compuesta por las siguientes observaciones: 502, 501, 497, 491, 496, 501, 502, 500, 489, 490. El proceso de llenado está bajo control si presenta una varianza de 40 o menos. ¿Está el proceso llenando bolsas conforme lo dice la envoltura? Use un nivel de significancia del 5%.
Solución
En un ejemplo anterior se comprobó que la muestra proviene de una población normal así que se puede proceder con la prueba de hipótesis sobre \(σ^2\).
En este ejemplo nos interesa estudiar el siguiente conjunto de hipótesis:
\[ \small H_0: \sigma^2 \le 40\\ \small H_1: \sigma^2 > 40 \]
contenido <- c(510, 492, 494, 498, 492,
496, 502, 491, 507, 496)
stests::var.test(x=contenido, alternative='greater',
null.value=40, conf.level=0.95)
##
## X-squared test for variance
##
## data: contenido
## X-squared = 9.64, df = 9, p-value = 0.3804
## alternative hypothesis: true variance is greater than 40
## 95 percent confidence interval:
## 0.000 115.966
## sample estimates:
## variance of x
## 42.84444
El parámetro de interés es:
\[ \frac{\sigma_1^2}{\sigma_2^2} \]
Ejemplo
Se realiza un estudio para comparar los tratamientos:
La variable respuesta es el tiempo de cocción (min).
¿Son las varianzas iguales? Usar \[\alpha =
0.05.\]
T1: 76, 85, 74, 78, 82, 75, 82
T2: 57, 67, 55, 64, 61, 63, 63
Las hipótesis son:
\[ H_0:\ \frac{\sigma_{T1}^2}{\sigma_{T2}^2} = 1 \]
\[ H_1:\ \frac{\sigma_{T1}^2}{\sigma_{T2}^2} \neq 1 \]
Ingreso de datos
T1 <- c(76, 85, 74, 78, 82, 75, 82)
T2 <- c(57, 67, 55, 64, 61, 63, 63)
require(nortest) # Se debe tener instalado
lillie.test(T1)$p.value
## [1] 0.520505
stats::var.test(x=T1, y=T2, null.value=1,
alternative="two.sided",
conf.level=0.95)
##
## F test to compare two variances
##
## data: T1 and T2
## F = 1.011, num df = 6, denom df = 6, p-value = 0.9897
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1737219 5.8838861
## sample estimates:
## ratio of variances
## 1.011019
Ejemplo 2 El arsénico en agua potable es un posible riesgo para la salud. Un artículo reportó concentraciones de arsénico en agua potable (ppb) para diez comunidades urbanas y diez comunidades rurales.
Urbana: 3, 7, 25, 10, 15, 6, 12, 25, 15, 7
Rural: 48, 44, 40, 38, 33, 21, 20, 12, 1, 18
¿Son las varianzas de las concentraciones iguales o diferentes? Usar \[\alpha = 0.05.\]
En este problema interesa probar:
\[ H_0:\ \frac{\sigma_{\text{Urb}}^2}{\sigma_{\text{Rur}}^2} = 1 \]
\[ H_1:\ \frac{\sigma_{\text{Urb}}^2}{\sigma_{\text{Rur}}^2} \neq 1 \]
Ingreso de los datos
urb <- c(3, 7, 25, 10, 15, 6, 12, 25, 15, 7)
rur <- c(48, 44, 40, 38, 33, 21, 20, 12, 1, 18)
require(nortest) # Se debe tener instalado
lillie.test(urb)$p.value
## [1] 0.5522105
lillie.test(rur)$p.value
## [1] 0.6249628
stests::var.test(x=urb, y=rur, null.value=1,
alternative="two.sided",
conf.level=0.95)
##
## F test to compare two variances
##
## data: urb and rur
## F = 0.24735, num df = 9, denom df = 9, p-value = 0.04936
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.06143758 0.99581888
## sample estimates:
## ratio of variances
## 0.2473473
Para comparar las medias de dos grupos independientes bajo el
supuesto de que las varianzas poblacionales son desconocidas pero
iguales, se utiliza la función t.test.
La estructura general de la función es:
t.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95)
"two.sided", "less",
"greater")TRUE) o independientes (FALSE)Ejemplo
Se quiere determinar si existe diferencia significativa entre los tiempos de cocción de fríjoles tratados con T1 y T2 al 5% de significancia.
Se crea primero un gráfico tipo boxplot:
datos <- data.frame(tiempo = c(T1, T2),
trat = rep(1:2, each = 7))
boxplot(tiempo ~ trat, data = datos, las = 1,
xlab = "Tratamiento", ylab = "Tiempo (min)")
El diagrama sugiere diferencias visibles entre ambos tratamientos, donde el tratamiento T1 presenta tiempos mayores.
Se plantean las hipótesis:
\[ H_0 : \mu_1 - \mu_2 = 0 \]
\[ H_1 : \mu_1 - \mu_2 \neq 0 \]
t.test(x = T1, y = T2,
alternative = "two.sided", mu = 0,
paired = FALSE, var.equal = TRUE,
conf.level = 0.97)
El valor p = 4.737e-06 es significativamente menor
al nivel de significancia (0.05), por lo que se rechaza la
hipótesis nula.
Se concluye que existe diferencia estadísticamente significativa entre
los tiempos promedio de cocción.
Si el objetivo es minimizar el tiempo, el tratamiento recomendado es T2.
Ejemplo Retomando el ejemplo de la concentración de arsénico en el agua, ¿existen diferencias entre las concentraciones de arsénico de la zona urbana y rural? Usar un nivel de significancia del 5%.
Primero se construirá un boxplot comparativo para las concentraciones de arsénico diferenciando por la zona donde se tomaron las muestras. Abajo el código para obtener el boxplot. De esta figura se observa si las cajas del boxplot se traslapan o no; esto da un indicio de si las medias poblacionales, \(\mu_1\) y \(\mu_2\), son diferentes.
datos <- data.frame(Concentracion=c(urb, rur),
Zona=rep(c('Urbana', 'Rural'), each=10))
boxplot(Concentracion ~ Zona, data=datos, las=1,
xlab='Zona', ylab='Concentración arsénico (ppb)')
\[ H_0 : \mu_1 - \mu_2 = 0 \]
\[ H_1 : \mu_1 - \mu_2 \neq 0 \]
t.test(x=urb, y=rur, alternative="two.sided", mu=0,
paired=FALSE, var.equal=FALSE, conf.level=0.95)
##
## Welch Two Sample t-test
##
## data: urb and rur
## t = -2.7669, df = 13.196, p-value = 0.01583
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -26.694067 -3.305933
## sample estimates:
## mean of x mean of y
## 12.5 27.5
De la prueba se obtiene un valor-P pequeño, por lo tanto, podemos concluir que si hay diferencias significativas entre las concentraciones de arsénico del agua entre las dos zonas. La zona que presenta mayor concentración media de arsénico en el agua es la rural.
Para comparar proporciones entre dos poblaciones independientes se
emplea la función prop.test.
"two.sided", "less",
"greater")Ejemplo
Se quiere comparar la proporción de piezas defectuosas antes y después de implementar un nuevo método de fabricación.
| Grupo | Defectuosas | Analizadas |
|---|---|---|
| Antes | 75 | 1500 |
| Después | 80 | 2000 |
Nivel de significancia: 10%
Se plantean las hipótesis:
\[ H_0 : p_{\text{antes}} - p_{\text{después}} = 0 \]
\[ H_1 : p_{\text{antes}} - p_{\text{después}} > 0 \]
prop.test(x = c(75, 80), n = c(1500, 2000),
alternative = "greater", conf.level = 0.90)
El p-valor es 0.09011, valor ligeramente mayor al
nivel de significancia (0.10), por lo que no se
rechaza \(H_0\).
Con los datos disponibles no existe evidencia estadística
suficiente para afirmar que la proporción de defectuosos
disminuyó con el nuevo método.