Code
library(readxl)
library(tidyverse)
Pruebas de hipótesis
library(readxl)
library(tidyverse)
<- read_excel("datos/encuesta_depurada.xlsx")
datos datos
|>
datos ggplot(mapping = aes(x = promedio_academico)) +
geom_density()
|>
datos ggplot(mapping = aes(sample = promedio_academico)) +
geom_qq() +
geom_qq_line()
library(ggpubr)
ggqqplot(data = datos$promedio_academico)
library(car)
qqPlot(x = datos$promedio_academico)
[1] 4 22
\[H_0: X \sim N(\mu, \sigma)\] \[H_1: X \nsim N(\mu, \sigma)\]
shapiro.test(x = datos$promedio_academico)
Shapiro-Wilk normality test
data: datos$promedio_academico
W = 0.94241, p-value = 0.1056
library(nortest)
ad.test(x = datos$promedio_academico)
Anderson-Darling normality test
data: datos$promedio_academico
A = 0.60659, p-value = 0.1046
\[H_0: \mu = 3.5\] \[H_1: \mu \neq 3.5\]
\[T = \frac{\bar{X} - \mu}{S/\sqrt{n}}\]
<- mean(datos$promedio_academico)
x_barra <- 3.5
mu_referencia <- sd(datos$promedio_academico)
desviacion_muestral <- sqrt(nrow(datos)) raiz_n
\[T = \frac{3.699 - 3.5}{0.2488643/5.477226} = 4.379768\]
- mu_referencia) / (desviacion_muestral / raiz_n) (x_barra
[1] 4.379768
Podemos obtener los límites critícos con R:
qt(p = 0.025, df = 29, lower.tail = TRUE)
[1] -2.04523
qt(p = 0.025, df = 29, lower.tail = FALSE)
[1] 2.04523
\[\bar{X} - t_{\alpha/2, n-1} \times \frac{s}{\sqrt{n}}\]
- (2.045 * (desviacion_muestral / raiz_n)) x_barra
[1] 3.606083
\[\bar{X} + t_{\alpha/2, n-1} \times \frac{s}{\sqrt{n}}\]
+ (2.045 * (desviacion_muestral / raiz_n)) x_barra
[1] 3.791917
pt(q = -4.371917, df = 29, lower.tail = TRUE)
[1] 7.228808e-05
pt(q = 4.371917, df = 29, lower.tail = FALSE)
[1] 7.228808e-05
7.228808e-05 + 7.228808e-05
[1] 0.0001445762
x:
la variable sobre la cual estamos haciendo inferencia. En este caso el promedio_académicoalternative
: tipo de hipótesis alternativa. En este es una prueba bilateral usamos “two.sided”conf.level
: nivel de confianza (1 - nivel de significancia = 1 - 0.05 = 0.95)mu
: valor promedio de referencia. En este caso es 3.5t.test(x = datos$promedio_academico,
alternative = "two.sided",
conf.level = 0.95,
mu = 3.5)
One Sample t-test
data: datos$promedio_academico
t = 4.3798, df = 29, p-value = 0.0001415
alternative hypothesis: true mean is not equal to 3.5
95 percent confidence interval:
3.606073 3.791927
sample estimates:
mean of x
3.699
<- t.test(
prueba_t1 x = datos$promedio_academico,
alternative = "two.sided",
conf.level = 0.95,
mu = 3.5
)
library(broom)
|> tidy() prueba_t1
\[H_0: p = 0.5\] \[H_1: p \neq 0.5\]
prop.table(table(datos$trabajo))[[2]]
[1] 0.3666667
x
: el número de éxitos para el evento de interés. En este caso son estudiantes que trabajan (n = 11)n
: total de ensayos (observaciones). En este caso equivale a 30.p
: proporción de referencia. En este caso es 0.5alternative
: tipo de hipótesis alternativa. En este caso es “two.sided”conf.level
: nivel de confianza. En este caso es 1 - 0.05 = 0.95prop.test(
x = 11,
n = 30,
p = 0.5,
alternative = "two.sided",
conf.level = 0.95
)
1-sample proportions test with continuity correction
data: 11 out of 30, null probability 0.5
X-squared = 1.6333, df = 1, p-value = 0.2012
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.2054281 0.5609198
sample estimates:
p
0.3666667
<- read_excel("datos/datos_cebada.xlsx") |>
datos_cebada mutate(year = as.factor(year))
datos_cebada
\[H_0: \sigma^2_{1931} / \sigma^2_{1932} = 1\] \[H_1: \sigma^2_{1931} / \sigma^2_{1932} \neq 1\]
En este caso vamos a usar un nivel de significancia del 5%.
ggqqplot(data = datos_cebada$yield)
shapiro.test(x = datos_cebada$yield)
Shapiro-Wilk normality test
data: datos_cebada$yield
W = 0.96055, p-value = 0.05005
formula
: y ~ x. En este caso “y” es la variable produccion y el “x” es el año.ratio
: es el resultado del cociente de las dos varianzas. En este caso asumimos en la hipótesis nula el valor de “1”.alternative
: tipo de prueba. En este es bilateral (“two.sided”)conf.level
: nivel de confianza. En este caso es 0.95 (1 - 0.5)var.test(datos_cebada$yield ~ datos_cebada$year,
ratio = 1,
alternative = "two.sided",
conf.level = 0.95)
F test to compare two variances
data: datos_cebada$yield by datos_cebada$year
F = 1.3952, num df = 29, denom df = 29, p-value = 0.375
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.6640874 2.9314037
sample estimates:
ratio of variances
1.395245
bartlett.test(datos_cebada$yield ~ datos_cebada$year)
Bartlett test of homogeneity of variances
data: datos_cebada$yield by datos_cebada$year
Bartlett's K-squared = 0.78702, df = 1, p-value = 0.375
leveneTest(datos_cebada$yield ~ datos_cebada$year)
<- read_excel("datos/datos_trigo.xlsx")
datos_trigo datos_trigo
\[H_0: \mu_{bajo} = \mu_{alto}\]
\[H1: \mu_{bajo} \neq \mu_{alto}\]
El juego de hipótesis anterior es equivalente al siguiente:
\[H_0: \mu_{bajo} - \mu_{alto} = 0\]
\[H1: \mu_{bajo} - \mu_{alto} \neq 0\]
<- datos_trigo %>% filter(nitro == "L")
nitro_bajo <- datos_trigo %>% filter(nitro == "H")
nitro_alto
ggqqplot(nitro_bajo$yield)
ggqqplot(nitro_alto$yield)
shapiro.test(nitro_alto$yield)
Shapiro-Wilk normality test
data: nitro_alto$yield
W = 0.90953, p-value = 2.064e-05
shapiro.test(nitro_bajo$yield)
Shapiro-Wilk normality test
data: nitro_bajo$yield
W = 0.9039, p-value = 1.153e-05
leveneTest(datos_trigo$yield ~ datos_trigo$nitro)
formula
: y ~ x. En este caso “y” es la producción y “x” es el nivel de fertilización con nitrógeno (bajo, alto)alternative
: tipo de hipótesis alternativa. En este caso es bilateral.conf.level
: nivel de confianza. En este caso es del 95%var.equal
: toma valores TRUE o FALSE para cuando las varianzas son iguales o diferentes, respectivamente.t.test(datos_trigo$yield ~ datos_trigo$nitro,
alternative = "two.sided",
conf.level = 0.95,
var.equal = FALSE)
Welch Two Sample t-test
data: datos_trigo$yield by datos_trigo$nitro
t = 2.9051, df = 143.36, p-value = 0.004254
alternative hypothesis: true difference in means between group H and group L is not equal to 0
95 percent confidence interval:
17.44086 91.70200
sample estimates:
mean in group H mean in group L
517.4762 462.9048
\[H_0: p1 = p2\] \[H_1: p1 \neq p2\]
O de forma equivalente:
\[H_0: p1 - p2 = 0\]
\[H_1: p1 - p2 \neq 0\]
En este caso usaremos un nivel de significancia del 5% (0.05)
table(datos$trabajo)
No Sí
19 11
x
: el número de éxitos para el evento de interés. En este caso son estudiantes que trabajan (n = 11) y no trabajan (n = 19)n
: total de ensayos (observaciones). En este caso equivale a 30.alternative
: tipo de hipótesis alternativa. En este caso es “two.sided”conf.level
: nivel de confianza. En este caso es 1 - 0.05 = 0.95prop.test(x = c(11, 19),
n = c(30, 30),
alternative = "two.sided",
conf.level = 0.95)
2-sample test for equality of proportions with continuity correction
data: c(11, 19) out of c(30, 30)
X-squared = 3.2667, df = 1, p-value = 0.0707
alternative hypothesis: two.sided
95 percent confidence interval:
-0.5438677 0.0105344
sample estimates:
prop 1 prop 2
0.3666667 0.6333333
<- read_excel("datos/datos_parciales.xlsx")
calificaciones calificaciones
\[H_0: \mu_{post} - \mu_{pre} = 0\]
\[H_1: \mu_{post} - \mu_{pre} \neq 0\]
En este caso vamos a usar un nivel de significancia del 5% (0.05)
<- calificaciones$Post - calificaciones$Pre
diferencia diferencia
[1] 4 4 1 2 -3 5 3 2 -4 2 1 -1 2 7 0 4 6 3 4 -1
ggqqplot(data = diferencia)
shapiro.test(x = diferencia)
Shapiro-Wilk normality test
data: diferencia
W = 0.9686, p-value = 0.725
var.test(x = calificaciones$Pre,
y = calificaciones$Post,
ratio = 1,
alternative = "two.sided",
conf.level = 0.95)
F test to compare two variances
data: calificaciones$Pre and calificaciones$Post
F = 0.60329, num df = 19, denom df = 19, p-value = 0.2795
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.238790 1.524186
sample estimates:
ratio of variances
0.6032913
t.test(x = calificaciones$Pre,
y = calificaciones$Post,
alternative = "two.sided",
conf.level = 0.95,
paired = TRUE,
var.equal = TRUE)
Paired t-test
data: calificaciones$Pre and calificaciones$Post
t = -3.2313, df = 19, p-value = 0.004395
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
-3.3778749 -0.7221251
sample estimates:
mean difference
-2.05
library(infer)
set.seed(2024)
<- datos_trigo |>
remuestreo_dif_medias specify(formula = yield ~ nitro) |>
generate(reps = 1000, type = "bootstrap") |>
calculate(stat = "diff in means", order = c("H", "L"))
|>
remuestreo_dif_medias visualize()
<-
ic_dif_medias |>
remuestreo_dif_medias get_confidence_interval(level = 0.95,
type = "percentile")
ic_dif_medias