Cuando generamos una media muestral, ésta corresponde a una estimación sin sesgo de μ (la media poblacional). Sin embargo, esta media no es una estimación perfecta, dado que nosotros estamos usando una muestra y no la población entera. Si nosotros tomáramos otra muestra, esperaríamos que la media de esta media fuera un tanto distinta. La media que nosotros estimamos va a ser un poco mayor o menos que la media poblacional. Una forma de estimar la precisión de nuestra media es generar un intervalo de confianza alrededor de la media muestral, entendiendo intervalo de confianza como un rango de números dentro de los cuales se cree que el parámetro se va a encontrar.
El primer paso para construir un intervalo de confianza es decidir sobre el riesgo que estamos dispuestos asumir de estar equivocados. Esta probabilidad de error se denota con la letra α. Una probabilidad de 0.05 es la que se usa más comúnmente. Establecer un α igual a 0.05, o un intervalo de confianza de 95%, significa que en el largo plazo, 95% de los intervalos de confianza derivados de muestras repetidas contendrían el verdadero parámetro poblacional y 5% no. Junto con el intervalo de confianza de 95%, muchas personas usan también un intervalo de 99%.
| Puntuación Z para varios niveles de alfa α | |||
|---|---|---|---|
| Nivel de confianza | α | α/2 | Puntaje Z |
| 90% | 0.10 | 0.050 | ±1.65 |
| 95% | 0.05 | 0.025 | ±1.96 |
| 99% | 0.01 | 0.005 | ±2.58 |
El segundo paso para construir el intervalo de confianza es dividir la probabilidad de error por la cola superior o inferior de la distribución y, luego encontrar el correspondiente puntaje Z. Por ejemplo, si decidimos establecer α igual a 0.05, nosotros debiéramos ubicar la mitad de esta probabilidad (0.025) en la cola inferior y la otra mitad (0.025) en la cola superior de la distribución. Una vez hecho esto, el puntaje Z asociado es 1.96.
Calculamos los intervalos de confianza:
\\[IC = \\overline{x} \\pm t\_{(gl, \\alpha/2)}\*\\frac{s}{\\sqrt{n}}\\\]
Abrimos nuestra base de datos:
# Utilizamos para desactivar notación científica
options(scipen=999)
library(foreign)
library(haven)
base <- read_dta("smoke.dta")
La función ci.mean del paquete misty puede
ser de gran utilidad para estimar intervalos de confianza de medias en
nuestras variables. El resultado muestra el número de observaciones, la
frecuencia y porcentaje de valores perdidos, la media y desviación
estándar de nuestra variable de interes y la estimación de los
intervalos inferior y superior señalados como Low y
Upp. Note que la función no reporta el error estándar. Para
esto utilizaremos la función std.error del paquete
plotrix
## Instalamos y cargamos librerías
#install.packages("misty")
library(misty)
## Warning: package 'misty' was built under R version 4.3.3
## |-------------------------------------|
## | misty 0.6.2 (2024-02-05) |
## | Miscellaneous Functions T. Yanagida |
## |-------------------------------------|
##
## Attaching package: 'misty'
## The following objects are masked from 'package:foreign':
##
## read.dta, write.dta
#install.packages("plotrix")
library(plotrix)
std.error(base$age) # Estimamos error estándar
## [1] 0.5993888
ci.mean(base$age) # Función ci.mean de paquete misty
## Two-Sided 95% Confidence Interval: Arithmetic Mean
##
## n nNA pNA M SD Low Upp
## 807 0 0% 41.24 17.03 40.06 42.41
El paquete, por defecto, define el nivel de confianza en 95%. Esto significa que en el largo plazo, 95% de los intervalos de confianza derivados de muestras repetidas contendrían el verdadero parámetro poblacional y 5% no. Los resultados indican que el intervalo 41.24 + (1.96 *0.60) contiene u. Nosotros podemos tener 95% de confianza de que la verdadera media poblacional de edad se encuentra entre 41.24 + (1.18). En otras palabras, la edad se encuentra entre \[40.06 y 42.42\] años.
Podemos construir distintos niveles de intervalos de confianza, añadiendo las siguientes opciones:
ci.mean(base$age, conf.level = 0.90) # 90%
## Two-Sided 90% Confidence Interval: Arithmetic Mean
##
## n nNA pNA M SD Low Upp
## 807 0 0% 41.24 17.03 40.25 42.22
ci.mean(base$age, conf.level = 0.99) # 99%
## Two-Sided 99% Confidence Interval: Arithmetic Mean
##
## n nNA pNA M SD Low Upp
## 807 0 0% 41.24 17.03 39.69 42.79
Es posible construir intervalos de confianza para distintos grupos de
individuos. Por ejemplo, vamos a analizar si hay diferencias en la edad
media de las personas fumadoras y no fumadoras, utilizando la opción
group, que indica la variable o grupo que queremos
comparar.
ci.mean(base$age, group = base$fumador) # intervalo 95% por fumador
## Two-Sided 95% Confidence Interval: Arithmetic Mean
##
## Group n nNA pNA M SD Low Upp
## 0 497 0 0% 42.56 18.07 40.97 44.16
## 1 310 0 0% 39.11 15.00 37.44 40.79
A un 95% de confianza, la edad media de los no fumadores se encuentra entre 40.97- 44.16 años y para los fumadores se encuentra entre 37.44-40.79 años de edad. Los intervalos de confianza de la edad para fumadores y no fumadores no se cruzan o traslapan. Esto implica que en la población, nosotros estamos 95% confiados que la edad media de los fumadores es más baja que la edad media de los no fumadores.
Podríamos utilizar otros niveles de confianza:
# intervalo 90% por fumador
ci.mean(base$age, conf.level = 0.90, group = base$fumador)
## Two-Sided 90% Confidence Interval: Arithmetic Mean
##
## Group n nNA pNA M SD Low Upp
## 0 497 0 0% 42.56 18.07 41.23 43.90
## 1 310 0 0% 39.11 15.00 37.71 40.52
# intervalo 99% por fumador
ci.mean(base$age, conf.level = 0.99, group = base$fumador)
## Two-Sided 99% Confidence Interval: Arithmetic Mean
##
## Group n nNA pNA M SD Low Upp
## 0 497 0 0% 42.56 18.07 40.47 44.66
## 1 310 0 0% 39.11 15.00 36.91 41.32
Cuando hablamos de proporciones, estamos considerando en general, variables dicotómicas del tipo, fuma v/s no fuma, abandona el colegio v/s termina sus estudios, no postula v/s postula a la universidad, no bebe v/s bebe, el empleado no es promovido v/s promovido de categoría, etc. Los intervalos de confianza para proporciones siguen un patrón similar al seguido por las variables continuas. Es decir, a medida que el tamaño de la muestra crece, la distribución de una proporción (p) se aproxima a una distribución normal.
De aquí, el intervalo de confianza para una proporción p es igual a:
\\[IC = \\overline{p} \\pm z\*\\sqrt{\\frac{p(1-p)}{n}}\\\]
La estimación del intervalo de confianza toma en cuenta el hecho de
que la variable en cuestión, no puede ser menor que 0 y mayor que 1. En
R, el proceso para generar intervalos de confianza para proporciones
puede ser realizado utilizando la función ci.prop. Debemos
entender que llamaremos p a la proporción
muestral de éxitos/sucesos totales:
\\[p = \\frac{Éxitos}{n}\\\]
La función ci.prop solo funciona para variables dummy (0
y 1), por lo que si queremos estimar la proporción para ambos grupo
debemos crear una variable dummy para cada uno de sus valores.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## generamos variables para 0 y 1
table(base$fumador)
##
## 0 1
## 497 310
# fumador = 0
base <- base %>% mutate(fumador0 = if_else(fumador==0, 1, 0))
# fumador = 1
base <- base %>% mutate(fumador1 = if_else(fumador==1, 1, 0))
# Verificamos
table(base$fumador0)
##
## 0 1
## 310 497
table(base$fumador1)
##
## 0 1
## 497 310
ci.prop(base$fumador0)
## Two-Sided 95% Confidence Interval: Proportion
##
## n nNA pNA Prop Low Upp
## 807 0 0% 0.616 0.582 0.649
ci.prop(base$fumador1)
## Two-Sided 95% Confidence Interval: Proportion
##
## n nNA pNA Prop Low Upp
## 807 0 0% 0.384 0.351 0.418
Obtenemos resultados similares
Para estimar la proporcion e IC para distintos grupos raciales, por ejemplo, el comando es:
# intervalo 95% por raza
ci.prop(base$fumador0, group = base$white)
## Two-Sided 95% Confidence Interval: Proportion
##
## Group n nNA pNA Prop Low Upp
## 0 98 0 0% 0.622 0.524 0.712
## 1 709 0 0% 0.615 0.579 0.650
ci.prop(base$fumador1, group = base$white)
## Two-Sided 95% Confidence Interval: Proportion
##
## Group n nNA pNA Prop Low Upp
## 0 98 0 0% 0.378 0.288 0.476
## 1 709 0 0% 0.385 0.350 0.421
Vamos a comparar las medias más directamente, a partir del comando
ttest. El comando ttest en Stata realiza in test de diferencia en
medias, a través de un test de hipótesis (asociado a un determinado
nivel de significancia). La típica hipótesis nula es que la diferencia
de medias es igual a cero/no hay diferencias o es igual a un valor
determinado. Las funciones t.test y prop.test
son de gran utilidad. Para esto, utilizaremos otra base:
library(haven)
base1 <- read_dta("simce.dta")
Partamos con el caso más simple de test de medias, realizaremos un
ttest para una muestra única. El t-test en este caso testea la hipótesis
nula de que la media poblacional es igual a un número dado. Para ello se
ocupa la opción mu, al que designamos un valor.
En este caso, compararemos la media de la variable
lecto11 con un valor previamente definido de 250. R calcula
el estadístico t y su valor p (p value asociado) bajo el supuesto que la
muestra proviene de una distribución normal. Si el valor p es menor que
el nivel de significancia (p < α), se considera que hay evidencia
suficiente para rechazar la hipótesis nula y se concluye que hay una
diferencia significativa. En caso contrario, si el valor p es mayor que
el nivel de significancia (p ≥ α), no se rechaza la hipótesis nula y se
concluye que no hay suficiente evidencia para afirmar la existencia de
una diferencia significativa. Por defecto, consideraremos 0.05 como
nuestro valor α. Por tanto:
\(H_0: P_{lecto11}=250\) La media de lectura es igual a 250.
\(H_1: P_{lecto11}\neq250\) La media de lectura es distinta de 250.
valor_referencia <- 250
t.test(base1$lecto11, mu = valor_referencia, alternative = "two.sided")
##
## One Sample t-test
##
## data: base1$lecto11
## t = 10.018, df = 12914, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 250
## 95 percent confidence interval:
## 253.4916 255.1905
## sample estimates:
## mean of x
## 254.341
En este ejemplo, se obtiene el estadístico t=10.018 con 12914 grados de libertad. El valor p con dos colas (two tailed p values) es 0.0000, que es menor a 0.05. Concluimos entonces que la media de la variable lecto11 es distinta de 250.
Si queremos especificar nuestra test otorgando direccionalidad a nuestra hipótesis, debemos realizar un t-test de una sola cola (one-tailed), que evaluaría la hipótesis nula contra las hipótesis alternativas de que la media es menor que 250 (test cola izquierda) o mayor que 250 (test cola derecha).
Cola izquierda:
\(H_0: P_{lecto11}=250\) La media de lectura es igual a 250.
\(H_1: P_{lecto11}<250\) La media de lectura es menor de 250.
t.test(base1$lecto11, mu = valor_referencia, alternative = "less")
##
## One Sample t-test
##
## data: base1$lecto11
## t = 10.018, df = 12914, p-value = 1
## alternative hypothesis: true mean is less than 250
## 95 percent confidence interval:
## -Inf 255.0539
## sample estimates:
## mean of x
## 254.341
Cola derecha:
\(H_0: P_{lecto11}=250\) La media de lectura es igual a 250.
\(H_1: P_{lecto11}>250\) La media de lectura es mayor de 250.
t.test(base1$lecto11, mu = valor_referencia, alternative = "greater")
##
## One Sample t-test
##
## data: base1$lecto11
## t = 10.018, df = 12914, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 250
## 95 percent confidence interval:
## 253.6282 Inf
## sample estimates:
## mean of x
## 254.341
Rechazamos hipóteis nula: la media de lectura es mayor de 250.
Un paired t-test, se usa cuando las observaciones no son
independientes una de otras. Por ejemplo, vamos a analizar a los mismos
alumnos que dieron el Simce de matemáticas y el simce de lectura. Uno
esperaría que haya una correlación entre estos puntajes para cada
estudiante. El pared t-test realiza este análisis. Para cada estudiante,
nosotros miramos las diferencias en los valores de las dos variables y
testeamos si la media de estas diferencias es igual a cero. Para esto,
utilizaremos la opción paired=TRUE en la función
t.test.
Propongamos las hipótesis:
\(H_0: \mu_d=0\). La media de las diferencias es igual a 0, en otras palabras, no hay diferencia en los resultados de los estudiantes para lenguaje y matemáticas.
\(H_1: \mu_d \neq 0\) La media de las diferencias es distinta de 0, en otras palabras, hay diferencia en los resultados de los estudiantes para lenguaje y matemáticas.
t.test(base1$lecto11, base1$mate11,
alternative = "two.sided",
paired = TRUE)
##
## Paired t-test
##
## data: base1$lecto11 and base1$mate11
## t = -10.21, df = 12914, p-value < 2.2e-16
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -4.190102 -2.840353
## sample estimates:
## mean difference
## -3.515227
En este ejemplo, obtenemos el estadístico t=-10.21 con 12914 grados de libertad. El valor p con dos colas (two tailed p values) es 0.0000, que es menor a 0.05. Concluimos entonces que la diferencia de media de los puntajes lecto11 y mate11 es distinta de 0. Rechazamos la hipótesis nula.
Este t-test está orientado a comparar medias de una variable entre dos grupos. En este ejemplo, vamos a comparar la media para los puntajes simce de matemáticas entre mujeres y hombres. Este test asume que las varianzas para las dos poblaciones son la misma. Así, antes de evaluar el test de hipótesis de medias, debemos evaluar si hay igualdad de varianzas:
\(H_0: var_{matm} = var_{math}\). No hay diferencia en la varianza del puntaje de matemáticas entre hombres y mujeres.
\(H_1: var_{matm} \neq var_{math}\). Hay diferencia en la varianza del puntaje de matemáticas entre hombres y mujeres.
Con esto podemos estimar nuestro test:
var.test(base1$mate11 ~ base1$genero)
##
## F test to compare two variances
##
## data: base1$mate11 by base1$genero
## F = 1.0093, num df = 6494, denom df = 6419, p-value = 0.7091
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.9612654 1.0597935
## sample estimates:
## ratio of variances
## 1.009331
El test nos muestra un valor p de 0.71, mayor al \(\alpha=0.05\), por lo que no tenemos evidencia para rechazar la hipótesis nula. En consecuencia podemos decir que las varianzas son iguales. A partir de este escenario, podemos estimar nuestra prueba t:
\(H_0: \mu_{matm} = \mu_{math}\). No hay diferencia en el puntaje de matemáticas entre hombres y mujeres.
\(H_1: \mu_{matm} \neq \mu_{math}\). Hay diferencia en el puntaje de matemáticas entre hombres y mujeres.
Con esto podemos estimar nuestro test:
t.test(base1$mate11 ~ base1$genero,
alternative="two.sided",
var.equal = TRUE,
conf.level=0.95)
##
## Two Sample t-test
##
## data: base1$mate11 by base1$genero
## t = -7.624, df = 12913, p-value = 2.631e-14
## alternative hypothesis: true difference in means between group F and group M is not equal to 0
## 95 percent confidence interval:
## -8.050522 -4.757544
## sample estimates:
## mean in group F mean in group M
## 254.6729 261.0769
En este ejemplo, el estadístico t=-7.624 con 12913 grados de libertad. El valor p con dos colas (two tailed p values) es 0.0000, que es menor a 0.05. En base a esta información, podemos rechazar la hipótesis nula. Concluimos entonces que la diferencia de medias en matemáticas entre mujeres y hombres es distinta de 0.
¿Si quisieramos establecer una dirección en nuestra hipóteis?
\(H_0: \mu_{matm} = \mu_{math}\). No hay diferencia en el puntaje de matemáticas entre hombres y mujeres.
\(H_1: \mu_{matm} < \mu_{math}\). El promedio en el puntaje de matemáticas es menor para mujeres versus hombres.
Con esto podemos estimar nuestro test:
t.test(base1$mate11 ~ base1$genero,
alternative="less",
var.equal = TRUE,
conf.level=0.95)
##
## Two Sample t-test
##
## data: base1$mate11 by base1$genero
## t = -7.624, df = 12913, p-value = 1.315e-14
## alternative hypothesis: true difference in means between group F and group M is less than 0
## 95 percent confidence interval:
## -Inf -5.022287
## sample estimates:
## mean in group F mean in group M
## 254.6729 261.0769
En este ejemplo, el estadístico t=-7.624 con 12913 grados de libertad. El valor p con una cola (one tailed p values) es 0.0000, que es menor a 0.05. En base a esta información, podemos rechazar la hipótesis nula. Concluimos entonces que la diferencia de medias en matemáticas entre mujeres y hombres es menor a 0, por tanto, las mujeres tienen un promedio menor en matemáticas que los hombres.
Podemos testear la diferencia/igualdad de proporciones usando el
comando prop.test. Los resultados que entrega son similares
a los obtenidos con t.test. Se interpretan de la misma
forma.
Testeamos si la media de la muestra es igual a una constante conocida. En nuestra muestra de resultados simce, queremos testear si la proporción de alumnos cuyo padre tiene origen étnico es igual a 20%.
\(H_0: P_{orget}=0.20\) La proporción de alumnos cuyo padre tiene origen étnico es igual a 20%.
\(H_1: P_{orget}\neq0.20\) la proporción de alumnos cuyo padre tiene origen étnico es distinta a 20%.
# Valor de referencia en proporción
valor_referencia <- 0.20
# Aplicamos el test
prop.test(x=sum(na.omit(base1$etniapadre)),
n=length(na.omit(base1$etniapadre)),
p=valor_referencia,
alternative="two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: sum(na.omit(base1$etniapadre)) out of length(na.omit(base1$etniapadre)), null probability valor_referencia
## X-squared = 971.95, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.2
## 95 percent confidence interval:
## 0.07336333 0.08373168
## sample estimates:
## p
## 0.07839225
Los resultados obtenidos en el test, nos indica que el valor p=0.000 es menor que 0.05. A un 95% de nivel de confianza, podemos rechazar la hipótesis nula que establee que la proporción de alumnos cuyo padre tiene origen étnico es = 0.20.
Queremos testear si la proporción de alumnos que obtuvo sobre 250 puntos en la prueba simce de lectura del 2011 difiere entre hombres y mujeres.
# tabla
table(base1$lecturaprop, base1$genero)
##
## F M
## 0 2647 3199
## 1 3848 3221
table(base1$genero) # total de mujeres y hombres
##
## F M
## 6495 6420
prop.test(x = c(3848, 3221), ## M con ptje sobre 250 y H con ptje sobre 250
n = c(6495, 6420)) ## total de mujeres y hombres
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(3848, 3221) out of c(6495, 6420)
## X-squared = 106.94, df = 1, p-value < 2.2e-16
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## 0.07348794 0.10799674
## sample estimates:
## prop 1 prop 2
## 0.5924557 0.5017134
Los tests nos indican que las proporciones de hombres y mujeres que obtuvieron un puntaje sobre 250 puntos son estadísticamente distintas a un nivel de confianza de 95%.
# mayor
prop.test(x = c(3848, 3221),
n = c(6495, 6420),
alternative="greater")
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(3848, 3221) out of c(6495, 6420)
## X-squared = 106.94, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
## 0.07623709 1.00000000
## sample estimates:
## prop 1 prop 2
## 0.5924557 0.5017134
# menor
prop.test(x = c(3848, 3221),
n = c(6495, 6420),
alternative="less")
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(3848, 3221) out of c(6495, 6420)
## X-squared = 106.94, df = 1, p-value = 1
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 0.1052476
## sample estimates:
## prop 1 prop 2
## 0.5924557 0.5017134