::p_load(dplyr, # Manipulacion datos
pacman# Visualizacion
gginference, # Reporte
rempsyc, # Tablas
kableExtra, # Varios
broom, # nice table
flextable,
rempsyc)
options(scipen = 999) # para desactivar notacion cientifica
rm(list = ls()) # para limpiar el entorno de trabajo
Práctico 2: Test de hipótesis
Sesión del miércoles, 27 de agosto de 2025
Objetivo de la práctica
El objetivo de esta guía práctica es realizar una serie de ejercicios de inferencia estadística, tomando como base todos los contenidos de la Unidad 1. En particular, se abordan pruebas de hipótesis para diferencias de medias y direccionales utilizando la prueba t
La guía tiene 3 ejercicios. El primero de ellos es un ejemplo, y los ejercicios 2 y 3 se desarrollan de manera autónoma en la sala (también puede ser en grupo).
Recursos de la práctica
En esta práctica trabajaremos con un subconjunto de datos previamente procesados de la Encuesta de Caracterización Socioeconómica (CASEN) del año 2022, elaborada por el Ministerio de Desarrollo Social y Familia. Para este ejercicio, obtendremos directamente esta base desde internet. No obstante, también tienes la opción de acceder a la misma información a través del siguiente enlace: CASEN 2022
. Desde allí, podrás descargar el archivo que contiene el subconjunto procesado de la base de datos CASEN 2022.
Cinco pasos para la inferencia estadística
En inferencia, las pruebas de hipótesis nos ayudan a determinar si el resultado que obtenemos en nuestra muestra es un efecto real/extensible a la población o un error. Aquí recomendamos una lista de cinco pasos lógicos para enfrentarnos a la inferencia estadística:
Paso | Detalle |
---|---|
1 |
Formula |
2 | Calcula el error estándar (SE) y el valor estimado de la prueba (ej: Z o t) |
3 |
Especifica la probabilidad de error |
4 | Contrasta el valor estimado con el valor crítico |
5 | Intrepreta los resultados |
Además de estos 5 pasos también existe la posibilidad de calcular un intervalo de confianza, que acompañe la precisión de nuestra estimación.
Preparación datos
Comencemos por preparar nuestros datos. Iniciamos cargando las librerías necesarias.
Los # en el código
En este código y siguientes aparecen varios #, que son una función de comentarios en R. No son necesarios para que el código funcione, pero son útiles en este caso para poder explicar que función cumple cada sección del código. Todo lo que aparece a la derecha de un # no es leído por el programa.
Cargamos los datos directamente desde internet.
load(url("https://github.com/cursos-metodos-facso/datos-ejemplos/raw/main/proc_casen.RData")) #Cargar base de datos
A continuación, exploramos la base de datos proc_casen.
names(proc_casen) # Nombre de columnas
[1] "id_vivienda" "folio" "id_persona" "hogar"
[5] "nucleo" "varunit" "varstrat" "expr"
[9] "edad" "sexo" "educ" "activ"
[13] "y1" "ytrabajocor" "pobreza_multi_5d" "o15"
[17] "qaut" "fdt" "ocupado" "desocupado"
[21] "inact" "hijo" "n_educ" "universitaria"
[25] "tipo_ocup" "ss_salud" "ayuda_moverse" "ayuda_thogar"
[29] "disc_fisica"
dim(proc_casen) # Dimensiones
[1] 202111 29
Contamos con 29 variables (columnas) y 202.111 observaciones (filas).
Recordemos…
En estadística, la formulación de hipótesis que implica dos variables (o la comparación de grupos) busca determinar si existen diferencias en una variable entre grupos y, de ser el caso, evaluar si esta diferencia es estadísticamente significativa.
Hasta ahora, hemos aprendido a contrastar hipótesis sobre diferencias entre grupos. A esto también se le llama hipótesis de dos colas.
Contrastamos la hipótesis nula (o de trabajo) de no diferencias entre grupos:
Además, podemos plantear hipótesis respecto a que el valor de cierto parámetro para un grupo puede ser mayor o menor al de otro grupo. A esto se le conoce como hipótesis de una cola.
Veamos ahora cómo aplicar todos estos conocimientos con ejercicios, pero utilizamos set.seed
para reproducibilidad de los resultados
set.seed(123) # Fijar la semilla para reproducibilidad
Ejercicio 1
Este ejercicio está basado en un ejemplo de clases y está desarrollado para que sirva de ejemplo a los siguientes ejercicios que deben ser desarrollados de manera autónoma.
La pregunta de investigación es: ¿Es el salario de los hombres mayor que el de las mujeres?
Para contrastar esta hipótesis, vamos utilizar la bbdd proc_casen
, seleccionaremos las variables sexo
e ytrabajocor
y haremos un subset de datos de 1.500 casos.
<- proc_casen %>%
casen_subset select(sexo, ytrabajocor) %>% # seleccionamos
sample_n(1500) # extraemos una muestra de 1500 casos
<- na.omit(casen_subset) # eliminamos casos perdidos (listwise) casen_subset
Generamos tabla para visualizar la distribución de los datos.
%>%
casen_subset ::group_by(sexo) %>% # se agrupan por la variable categórica
dplyr::summarise(Obs. = n(),
dplyrPromedio = mean(ytrabajocor, na.rm=TRUE),
SD = sd(ytrabajocor, na.rm=TRUE)) %>% # se agregan las operaciones a presentar en la tabla
::kable(format = "markdown") # se genera la tabla kableExtra
sexo | Obs. | Promedio | SD |
---|---|---|---|
1 | 379 | 690724.8 | 613238.9 |
2 | 309 | 585360.4 | 567737.7 |
Ahora vamos con los 5 pasos de la inferencia
1. Formulación de hipótesis
El primer aspecto a establecer es el tipo de hipótesis a formular: ¿Direccional o no direccional? En este caso, la pregunta indica una direccionalidad (“mayor que”), por lo tanto corresponde a una hipótesis direccional. Si hubiera sido una pregunta que hiciera referencia simplemente a diferencias (“¿Es el salario de los hombres distinto al de las mujeres?”) correspondería a una hipótesis no direccional.
La hipótesis general es que el salario de los hombres es mayor que el de las mujeres. Pasando a lenguaje de hipótesis, esto se plantea como:
Hipótesis alternativa:
: Promedio salarial hombres ( ) - Promedio salarial mujeres ( ) > 0
Hipótesis nula:
:
Pasos 2, 3 y 4 de una vez con R
En clases vimos que los pasos 2, 3 y 4 corresponden a:
Obtener error estándar y estadístico de prueba empírico correspondiente (ej: Z o t)
Establecer la probabilidad de error
(usualmente 0.05) y obtener valor crítico (teórico) de la prueba correspondienteCálculo de intervalo de confianza / contraste valores empírico/crítico
Esta secuencia de pasos tiene un sentido pedagógico para poder entender cómo finalmente se llega a interpretar el contraste de hipótesis en el paso 5. Pero en análisis de datos, luego de establecer las hipótesis nos vamos directamente al software que nos permite obtener de una vez toda la información de los pasos 2, 3 y 4.
<- t.test(casen_subset$ytrabajocor ~ casen_subset$sexo,
test_ej1 alternative = "greater",
conf.level = 0.95)
test_ej1
Welch Two Sample t-test
data: casen_subset$ytrabajocor by casen_subset$sexo
t = 2.3355, df = 674.99, p-value = 0.009906
alternative hypothesis: true difference in means between group 1 and group 2 is greater than 0
95 percent confidence interval:
31054.71 Inf
sample estimates:
mean in group 1 mean in group 2
690724.8 585360.4
También podemos visualizarlo en una tabla más amable.
<- tidy(test_ej1, conf_int = T)
stats.table nice_table(stats.table, broom = "t.test")
Visualicemos la distribución de esta prueba y su zona de rechazo.
::ggttest(test_ej1) gginference
5. Interpretación
La prueba t que evalúa la diferencia de medias entre el salario y el sexo sugiere que el efecto es positivo y estadísticamente signficativo (diferencia = 105.364,47, t = 2.34, p < .05). El valor
Ejercicio 2
Tomando como ejemplo el trabajo de la ganadora del Premio Nobel de Economía 2023 Claudia Goldin, en este ejercicio evaluaremos la siguiente pregunta: ¿Es el salario de las mujeres con hijos menor al salario de las mujeres sin hijos? Por ende, usaremos prueba
Utilice la bbdd proc_casen
y seleccione las variables ocupado
, sexo
, ytrabajocor
e hijo
. Luego, filtra por ocupado == 1
y sexo == 2
para quedarse solo con mujeres ocupadas y genera una muestra aleatoria de 1.500 casos con la función sample_n()
. Luego, elimina los casos pérdidos con na.omit()
.
Genere una tabla de descriptivos de los ingresos (ytrabajocor
) según si las observaciones tienen hijos o no (hijo
). Presente cantidad de observaciones por categoría, media y desviación estándar.
Una ayuda con el procesamiento (solo esta vez)…
set.seed(123)
<- proc_casen %>%
goldin_data ::select(ocupado, sexo, ytrabajocor, hijo) %>%
dplyr::filter(ocupado == 1 & sexo == 2) %>%
dplyrsample_n(1500) %>%
na.omit()# creamos subset con solo mujeres ocupadas
%>%
goldin_data ::group_by(hijo) %>%
dplyr::summarise(Obs. = n(),
dplyrMedia = mean(ytrabajocor, na.rm = T),
DS = sd(ytrabajocor, na.rm = T)) %>%
::kable(format = "markdown") # hacemos la tabla kableExtra
hijo | Obs. | Media | DS |
---|---|---|---|
0 | 353 | 706113.7 | 830191.0 |
1 | 1098 | 590847.7 | 638006.8 |
Ahora vamos con los 5 pasos de la inferencia
1. Formulación de hipótesis
El primer paso es traducir nuestra pregunta a una hipótesis estadística contrastable. Para ello: a) elija el tipo de hipótesis a plantear ¿direccional o no direccional? y b) especifique la hipótesis nula (
- hipótesis direccional
b.1) (
b.2) (
Pasos 2, 3 y 4 de una vez con R
Siguiendo el ejemplo del Ejercicio 1, utilice el software para generar los estadísticos correspondientes. Contraste sus hipótesis considerando un 95% de confianza.
<- t.test(goldin_data$ytrabajocor ~ goldin_data$hijo,
test_ej2 alternative = "greater",
conf.level = 0.95)
test_ej2
Welch Two Sample t-test
data: goldin_data$ytrabajocor by goldin_data$hijo
t = 2.3914, df = 492.66, p-value = 0.008578
alternative hypothesis: true difference in means between group 0 and group 1 is greater than 0
95 percent confidence interval:
35835.71 Inf
sample estimates:
mean in group 0 mean in group 1
706113.7 590847.7
<- tidy(test_ej2, conf_int = T)
stats.table nice_table(stats.table, broom = "t.test")
5. Interpretación
Interprete los resultados obtenidos: ¿es posible rechazar la hipótesis planteada?
La prueba t que evalúa la diferencia de medias…
Respuesta: Con un 95% de confianza es posible rechazar la hipótesis nula planteada. El promedio salarial de las mujeres sin hijos es $115.265,96 mayor que el de las mujeres con hijos.
Ejercicio 3
En este ejercicio tomamos de ejemplo una pregunta clásica en ciencias sociales: ¿el ingreso de las personas está relacionado a su nivel educacional?. Para responder esta pregunta vamos a usar una prueba
Esta vez les dejaremos el procesamiento a ustedes. Utilice la bbdd proc_casen
y seleccione las variables ytrabajocor
y universitaria
. Luego genere una muestra aleatoria 1500 casos con la función sample_n()
y elimine los datos perdidos de la variable ytrabajocor
. Luego, genere una tabla de descriptivos de los ingresos (ytrabajocor
) según si las personas cuentan con educación universitaria o no (universitaria
). Presente cantidad de observaciones por categoría, media y desviación estándar.
set.seed(123)
<- proc_casen %>%
casen_ej3 select(universitaria, ytrabajocor) %>% # seleccionamos
sample_n(1500) # extraemos una muestra de 1500 casos
<- na.omit(casen_ej3) # eliminamos casos perdidos (listwise) casen_ej3
%>%
casen_ej3 ::group_by(universitaria) %>% # se agrupan por la variable categórica
dplyr::summarise(Obs. = n(),
dplyrPromedio = mean(ytrabajocor, na.rm=TRUE),
SD = sd(ytrabajocor, na.rm=TRUE)) %>% # se agregan las operaciones a presentar en la tabla
::kable(format = "markdown") # se genera la tabla kableExtra
universitaria | Obs. | Promedio | SD |
---|---|---|---|
0 | 446 | 461593.3 | 337675.4 |
1 | 242 | 978472.9 | 790672.8 |
1. Formulación de hipótesis
El primer paso es traducir nuestra pregunta a una hipótesis estadística contrastable. Para ello: a) elija el tipo de hipótesis a plantear ¿direccional o no direccional? y b) especifique la hipótesis nula (
- Hipótesis direccional
b1) (
b2) (
Pasos 2, 3 y 4 de una vez con R
Siguiendo el ejemplo del Ejercicio 1, utilice el software para generar los estadísticos correspondientes. Contraste sus hipótesis considerando un 95% de confianza y un 99% de confianza. Comente las diferencias en el paso 5.
95%
<- t.test(casen_ej3$ytrabajocor ~ casen_ej3$universitaria,
test_ej3 alternative = "less",
conf.level = 0.95)
test_ej3
Welch Two Sample t-test
data: casen_ej3$ytrabajocor by casen_ej3$universitaria
t = -9.7008, df = 289.53, p-value < 0.00000000000000022
alternative hypothesis: true difference in means between group 0 and group 1 is less than 0
95 percent confidence interval:
-Inf -428957
sample estimates:
mean in group 0 mean in group 1
461593.3 978472.9
<- tidy(test_ej3, conf_int = T)
stats.table nice_table(stats.table, broom = "t.test")
::ggttest(test_ej3) gginference
99%
<- t.test(casen_ej3$ytrabajocor ~ casen_ej3$universitaria,
test_ej4 alternative = "less",
conf.level = 0.99)
test_ej4
Welch Two Sample t-test
data: casen_ej3$ytrabajocor by casen_ej3$universitaria
t = -9.7008, df = 289.53, p-value < 0.00000000000000022
alternative hypothesis: true difference in means between group 0 and group 1 is less than 0
99 percent confidence interval:
-Inf -392237
sample estimates:
mean in group 0 mean in group 1
461593.3 978472.9
<- tidy(test_ej4, conf_int = T)
stats.table nice_table(stats.table, broom = "t.test")
5. Interpretación
Interprete los resultados obtenidos: ¿es posible rechazar la hipótesis nula? ¿a raíz de qué información llega a la conclusión? ¿qué diferencia observa al aplicar la prueba con ambos niveles de confianza (95% y 99%)?
Respuesta: es posible rechazar la hipótesis nula tanto para un 95% como para un 99% de confianza.
El único cambio observado es un leve aumento de el intervalo de confianza estimado para un 99% de confianza.