Se trabajará con el dataset de R llamado USArrests el cual contiene datos estadísticos, en arrestos por cada 100,000 residentes por agresión, asesinato y violación en cada uno de los 50 estados de EE. UU. en 1973. También se proporciona el porcentaje de la población que vive en áreas urbanas[1]. Se utilizará este conjunto de datos para trabajar en los items 1, 2 y 3 del presente ejercicio.
hist(x = USArrests$Rape)
Al graficar un histograma de los datos, especificamente la columna correspondiente a “rape” se puede verificar que los datos tienen una distribución que podría considerarse normal, por lo tanto se utilizarán estos datos para las 3 primeras pruebas de hipotesis a realizar.
summary(USArrests$Rape) #Se obtiene la media poblacional realizando un summary
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.30 15.07 20.10 21.23 26.18 46.00
sdPoblacion = sd(USArrests$Rape)
#Media poblacional= 21.23
#Desviacion poblacional: 9.366385
set.seed(1)
Muestra = sample(USArrests$Rape ,size =35, replace=FALSE) #Se toma una muestra de tamaño 35
summary(Muestra) #Se obtiene la media muestral realizando summary de los datos
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.30 14.55 20.00 20.38 26.15 38.70
#Media muestral= 20.38
sdMuestra= sd(Muestra)
sdMuestra
## [1] 8.234972
#Desviacion muestral: 8.234972
En el año 1973, la cantidad de arrestos por el delito de violación en los Estados Unidos (por 100.000 habitantes) se distribuye normalmente con una media de 21.23 y una desviación estándar poblacional de 9.366385. El instituto penal de los EE.UU desea saber si el promedio de arrestos es menor a 21.23 al año. Se selecciona una muestra de 35 personas y el promedio de arrestos resulta de 20.38. Si el nivel de significancia es 0.05. ¿A que conclusión puede llegar?
#Datos
mu=21.23
sigma = 9.366385
x_bar=20.38
n=35
intervaloinferior = mu-3*sigma
intervalosuperior = mu+3*sigma
grafico_densidad = ggplot(data = data.frame(x = c(intervaloinferior, intervalosuperior)), aes(x)) +
stat_function(fun = dnorm, n = 36, args = list(mean =21.23, sd = 9.366385)) + ylab("") +
scale_y_continuous(breaks = NULL) + xlab("Arrestos por delito rape ") + ylab("Densidad") + ggtitle("Función de densidad (distribución normal)") + theme_bw() +
geom_vline(xintercept = 20.38,cex=1.2,colour ="darkred",linetype="longdash") +
geom_text(aes(x=20.38, label="xbar", y=0.0), colour ="darkred",size=5) + geom_vline(xintercept = 21.23,cex=1.2,colour ="coral3",linetype="longdash") + geom_text(aes(x=21.23, label="mu", y=0.00001), colour ="coral3",size=5)
grafico_densidad
Nuestra hipótesis nula (hipótesis más conservadora), basándose en los datos señalados en el enunciado puede ser especificada como:
H0:μ0 >= 21.23
Por otro lado, la hipótesis alternativa (hipótesis que proponemos, que el instituto desea probar) es:
HA:μ0 < 21.23
Si aplicamos la normalización para calcular z bajo una prueba de una cola, se tiene que:
#Normalización
z = (x_bar-mu)/(sigma/sqrt(n))
z
## [1] -0.5368846
#Confianza
alfa = 0.05
confianza = 1-alfa
z_alfa = qnorm(alfa)
z_alfa
## [1] -1.644854
El valor de z es -0.5368846, mientras que zα es -1.644854, esto posiciona a z a la derecha de zα, lo cual significa que z se encuentra en la zona de aceptación, por lo que NO podemos rechazar H0. Esto también puede ser probado simulando los datos, para luego aplicar la función z-test de la biblioteca de R BSDA, obteniendo un valor p mayor a 0.05.
set.seed(1)
#Creación de muestra artificial
datos = sample(USArrests$Rape ,size =35, replace=FALSE)
#Aplicación de test
z = z.test(x=datos,mu=mu,sigma.x=sigma,conf.level = confianza,alternative="less")
print(z)
##
## One-sample z-Test
##
## data: datos
## z = -0.53869, p-value = 0.2951
## alternative hypothesis: true mean is less than 21.23
## 95 percent confidence interval:
## NA 22.98129
## sample estimates:
## mean of x
## 20.37714
El p-value obtenido es mayor a 0.05 (p-value = 0.2951), por lo tanto se comprueba que se acepta la hipótesis nula: H0:μ0 >= 21.23, por ende, no se puede probar lo solicitado por el instituto penal de los EE.UU ya que el promedio de arrestos de hecho es mayor o igual a 21.23 al año.
El procedimiento anterior puede ser graficado como:
dnorm_limit <- function(x) {
y <- dnorm(x)
y[x < z_alfa | x > -z_alfa] <- NA
return(y)
}
# ggplot() with dummy data
grafico_densidad = ggplot(data.frame(x = c(-3, 3)), aes(x = x)) +
stat_function(fun = dnorm_limit, geom = "area", fill = "blue", alpha = 0.2) + stat_function(fun = dnorm) +
xlab("Arrestos por delito rape") + ylab("Densidad") + ggtitle("Función de densidad") +
theme_bw() + geom_vline(xintercept = (x_bar-mu)/(sigma/sqrt(n)),cex=1.2,colour ="darkred") +
geom_text(aes(x=(x_bar-mu)/(sigma/sqrt(n))+0.2, label="z", y=0.0), colour ="darkred",size=10)
plot(grafico_densidad)
Nombre: t-test. Tipo de prueba: paramétrica. Aplica para n≤30
summary(USArrests$Rape)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.30 15.07 20.10 21.23 26.18 46.00
sdPoblacion = sd(USArrests$Rape)
#MEDIA= 21.23
set.seed(1)
Muestra = sample(USArrests$Rape ,size =20, replace=FALSE)
summary(Muestra)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.30 13.85 19.75 18.82 23.25 31.90
#Media muestral= 18.82
sdMuestra= sd(Muestra)
sdMuestra
## [1] 6.845458
#Desviacion Muestra: 6.845458
En el año 1973,la cantidad de arrestos promedio por el delito de violación en los Estados Unidos es de 21.23 (por 100.000 habitantes). Para determinar si esto es verdad, se toma una muestra aleatoria de 20 de ella, resultando en una media muestral de 18.82 arrestos por dicho delito y una desviación estándar muestral de 6.845458. Pruebe la hipótesis de que la cantidad de arrestos por delito de violación (por 100.000 habitantes) es menor a 21.23 con α=0.05. Suponga una distribución normal.
Antes de responder, podemos graficar la respectiva distribución de probabilidad.
grafico_densidad = ggplot(data = data.frame(x = c(10, 30)), aes(x)) +
stat_function(fun = dt, n = 101, args = list(x =21.23, df = 19)) + ylab("") +
scale_y_continuous(breaks = NULL) + xlab("Arrestos por delito rape") + ylab("Densidad") + ggtitle("Función de densidad (Distribución t)") + theme_bw() +
geom_vline(xintercept = 18.82,cex=1.2,colour ="darkred",linetype="longdash") + geom_text(aes(x=18.82, label="xbar", y=0.0), colour ="darkred",size=5) + geom_vline(xintercept = 21.23,cex=1.2,colour ="coral3",linetype="longdash") + geom_text(aes(x=21.23, label="mu", y=0.001), colour ="coral3",size=5)
grafico_densidad
Nuestra hipótesis nula, basándose en los datos señalados en el enunciado puede ser especificada como:
H0:μ0 >= 21.23 arrestos.
Por otro lado, la hipótesis alternativa es:
HA:μ0 < 21.23 arrestos.
Si aplicamos la normalización para calcular t bajo una prueba de una cola, nos queda que:
#Datos
mu=21.23
s = 6.845458
x_bar=18.82
n=20
#Normalización
t = (x_bar-mu)/(s/sqrt(n))
t
## [1] -1.574452
#Confianza
alfa = 0.05
confianza = 1-alfa
t_alfa = qt(alfa,df = n-1)
t_alfa
## [1] -1.729133
El valor de t es -1.574452, mientras que tα es -1.729133. Esto implica que t está dentro del intervalo de confianza, por lo que NO podemos rechazar H_0.
Esto también puede ser probado simulando los datos, para luego aplicar la función t-test de la biblioteca de R base, obteniendo un valor p mayor a 0.05.
set.seed(1)
#Creación de muestra artificial
datos = sample(USArrests$Rape ,size =20, replace=FALSE)
#Aplicación de test
t = t.test(x=datos,mu=mu,conf.level = confianza, alternative="less")
print(t)
##
## One Sample t-test
##
## data: datos
## t = -1.5777, df = 19, p-value = 0.06557
## alternative hypothesis: true mean is less than 21.23
## 95 percent confidence interval:
## -Inf 21.46177
## sample estimates:
## mean of x
## 18.815
Esto puede ser graficado como:
dnorm_limit <- function(x) {
y <- dnorm(x)
y[x < t_alfa | x > -t_alfa] <- NA
return(y)
}
# ggplot() with dummy data
grafico_densidad = ggplot(data.frame(x = c(-3, 3)), aes(x = x)) +
stat_function(fun = dnorm_limit, geom = "area", fill = "blue", alpha = 0.2) + stat_function(fun = dnorm) +
xlab("Arrestos por delito rape") + ylab("Densidad") + ggtitle("Función de densidad") +
theme_bw() + geom_vline(xintercept = (x_bar-mu)/(s/sqrt(n)),cex=1.2,colour ="darkred") +
geom_text(aes(x=(x_bar-mu)/(s/sqrt(n))+0.2, label="t", y=0.0), colour ="darkred",size=10)
plot(grafico_densidad)
Resumen
Nombre: chi-test.Tipo de prueba: no paramétrica.
Ecuación:
\[ X_0=\frac{(n-1)S^2}{\sigma^2} \]
set.seed(1)
Muestra = sample(USArrests$Rape ,size =20, replace=FALSE) #Se realiza un muestro de tamaño 35
#varianza muestral= 46.86029
varianza= var(Muestra)
En el año 1973, el instituto penal de los EE.UU desea saber si la cantidad de arrestos por delito de violación (por cada 100.000 habitantes) tiene una varianza poblacional igual a 30. Se realiza un muestreo de 20 individuos y se obtiene una varianza muestral de 46,86029. Realizar la prueba de hipótesis con alfa = 0.05.
library("ggplot2")
grafico_densidad = ggplot(data = data.frame(x = c(0, 30)), aes(x)) +
stat_function(fun = dchisq, n = 101, args = list(x =15, df = 19)) + ylab("") +
scale_y_continuous(breaks = NULL) + xlab("Arrestos por delito rape") + ylab("Densidad") + ggtitle("Función de densidad") + theme_bw() +
geom_vline(xintercept = 20.98,cex=1.2,colour ="darkred") + geom_text(aes(x=21, label="S^2", y=0.0), colour ="darkred",size=5)
grafico_densidad
Nuestra hipótesis nula, basándose en los datos señalados en el enunciado puede ser especificada como:
\[ \sigma ^{2} \ = 30 \] Nuestra hipótesis alternativa es:
\[ \sigma ^{2} \ \neq 30 \] Si aplicamos la normalización para calcular chi bajo una prueba de dos colas , nos queda que:
#Datos
sigma2=30
n = 20
s2=46.86029
#Normalización
chi = (n-1)*s2/(sigma2)
chi
## [1] 29.67818
#Confianza
alfa = 0.05
confianza = 1-alfa
chi_alfa = qchisq(1-alfa,df = n-1)
chi_alfa
## [1] 30.14353
El valor de chi es 29.67818, y chi alpha es 30.14353, esto implica que chi está dentro del intervalo de confianza, por lo que NO podemos rechazar H0 Esto también puede ser probado simulando los datos, para luego aplicar la función varTest de la biblioteca de R EnvStats, obteniendo un valor p mayor a 0.05.
set.seed(1)
#Creación de muestra artificial
datos = sample(USArrests$Rape ,size =20, replace=FALSE)
#Aplicación de test
chi = varTest(datos,sigma.squared=sigma2,alternative="greater")
print(chi)
##
## Results of Hypothesis Test
## --------------------------
##
## Null Hypothesis: variance = 30
##
## Alternative Hypothesis: True variance is greater than 30
##
## Test Name: Chi-Squared Test on Variance
##
## Estimated Parameter(s): variance = 46.86029
##
## Data: datos
##
## Test Statistic: Chi-Squared = 29.67818
##
## Test Statistic Parameter: df = 19
##
## P-value: 0.05603958
##
## 95% Confidence Interval: LCL = 29.53687
## UCL = Inf
El conjunto de datos Iris[2] posee 150 casos(filas) y 5 variables (columnas) en las cuales se encuentran las medidas en centimetros del largo, ancho (del sépalo), largo y ancho (del pétalo), de 3 especies de flores, iris setosa, versicolor y virginica. A continuación se plantea un ejemplo en este contexto, para realizar la prueba de hipótesis:
Imaginemos que recolectamos rosas en la Península gaspesiana y encontramos que 71 eran de la especie setosa, 40 versicolor y 17 virginica. Suponga que un artículo científico señala indica que en esta región donde se recopiló las flores, la proporción de rosas rojas, amarillas y blancas es 3:2:1. ¿Hay alguna diferencia significativa entre las proporciones observadas y las proporciones esperadas?
Se define como hipótesis nula que la proporción de rosas rojas amarillas y blancas es 3:2:1
data = data.frame(iris)
flores = c(71, 40, 17)
res = chisq.test(flores, p = c(1/2, 1/3, 1/6))
res
##
## Chi-squared test for given probabilities
##
## data: flores
## X-squared = 1.8125, df = 2, p-value = 0.404
Como el p-value = 0.404 (mayor a 0.05), no se puede rechazar la hipotesis nula, por lo tanto la proporción de rosas rojas, amarillas y blancas es 3:2:1.
En la fabrica de cigarrillos Marlboro se ha presentado un inconveniente en la producción. Suponga que el 20% de las cajetillas de cigarrillos producidas en la fabrica el año pasado poseen un defecto (exceso del componente Ácido cianhídrico). Este año, 40 de 236 cajetillas de cigarrillos tienen el mismo defecto. Considerando un nivel de significancia de .05, ¿podemos rechazar la hipótesis nula d que la proporción de cajetillas con exceso de Ácido cianhídrico producidas por debajo del 20% este año?
Hipotesis nula = P <= 0.20
X=40
pbar=40/236
p0=0.20
n=236
print(prop.test(X,n, p=p0, alt="greater"
, correct=FALSE) )
##
## 1-sample proportions test without continuity correction
##
## data: X out of n, null probability p0
## X-squared = 1.3729, df = 1, p-value = 0.8793
## alternative hypothesis: true p is greater than 0.2
## 95 percent confidence interval:
## 0.1331192 1.0000000
## sample estimates:
## p
## 0.1694915
El pvalue obtenido es de 0.1694915, lo cual no permite rechazar la hipótesis nula, a pesar de que este año se obtuvo 40/236 %, aún así se encuentra dentro del intervalo de confianza dado que el año pasado la proporción era menor a 12%.
En el contexto del mundial 2022, un canal de televisión ha encuestado a 23 asistentes a partidos de futbol en Qatar. A cada asistente se le ha consultado si prefiere al jugador Messi o a Cristiano, dando como resultado que a 7 de los encuestados le gusta más Cristiano, y el resto de asistentes prefiere a Lionel Messi, con un nivel de significancia de .05. ¿Podemos rechazar la noción de que ambos jugadores son igualmente populares?
binom.test(7, 23)
##
## Exact binomial test
##
## data: 7 and 23
## number of successes = 7, number of trials = 23, p-value = 0.09314
## alternative hypothesis: true probability of success is not equal to 0.5
## 95 percent confidence interval:
## 0.1321029 0.5291917
## sample estimates:
## probability of success
## 0.3043478
Se obtuvo un p-value = 0.09314, o rechazamos la noción de que ambos jugadores son igualmente populares
Se tiene una muestra de peso de recién nacidos ¿La mediana del peso de los infantes, difiere de 5 kg? Considere un nivel de significancia del 5%
Peso <- c(2.5, 4.0, 3.4, 4.1, 3.1, 2.9, 2.7, 3.3)
Bebe <- c("Bebe A", "Bebe B", "Bebe C", "Bebe D", "Bebe E", "Bebe F", "Bebe G","Bebe E")
datos= data.frame(Bebe,Peso)
knitr::kable(datos)
| Bebe | Peso |
|---|---|
| Bebe A | 2.5 |
| Bebe B | 4.0 |
| Bebe C | 3.4 |
| Bebe D | 4.1 |
| Bebe E | 3.1 |
| Bebe F | 2.9 |
| Bebe G | 2.7 |
| Bebe E | 3.3 |
Hipótesis Nula: La mediana de los bebes es igual a 7 kg
Hipótesis Alternativa: La mediana de los bebes difiere de 7 kg
res <- wilcox.test(Peso, mu = 7, conf.int = 0.95)
res
##
## Wilcoxon signed rank exact test
##
## data: Peso
## V = 0, p-value = 0.007813
## alternative hypothesis: true location is not equal to 7
## 95 percent confidence interval:
## 2.70 3.75
## sample estimates:
## (pseudo)median
## 3.25
El pvalue obtenido es 0.007813. Con un nivel de significancia de .05 obtenemos que la mediana del peso de los bebes recién nacidos difiere de 7 KG.
[1] McNeil, D. R. (1977) Interactive Data Analysis. New York: Wiley.
[2] Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole. (has iris3 as iris.)
[3] Giglio, J. RPubs - Ejercicios 06. (2022, 15 junio). https://rpubs.com/jgiglio/914933