# Cargar las librerías necesarias
library(readxl)
install.packages("dplyr")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
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
library(ggplot2)
# 1. Cargar y preparar los datos
wagebase <- read_excel("wagebase.xlsx")
head(wagebase)
## # A tibble: 6 × 7
## wage educ exper tenure female married numdep
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3.1 11 2 0 1 0 2
## 2 3.24 12 22 2 1 1 3
## 3 3 11 2 0 0 0 2
## 4 6 8 44 28 0 1 0
## 5 5.3 12 7 2 0 1 1
## 6 8.75 16 9 8 0 1 0
# Ver la estructura de los datos
str(wagebase)
## tibble [526 × 7] (S3: tbl_df/tbl/data.frame)
## $ wage : num [1:526] 3.1 3.24 3 6 5.3 ...
## $ educ : num [1:526] 11 12 11 8 12 16 18 12 12 17 ...
## $ exper : num [1:526] 2 22 2 44 7 9 15 5 26 22 ...
## $ tenure : num [1:526] 0 2 0 28 2 8 7 3 4 21 ...
## $ female : num [1:526] 1 1 0 0 0 0 0 1 1 0 ...
## $ married: num [1:526] 0 1 0 1 1 1 0 0 0 1 ...
## $ numdep : num [1:526] 2 3 2 0 1 0 0 0 2 0 ...
head(wagebase)
## # A tibble: 6 × 7
## wage educ exper tenure female married numdep
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3.1 11 2 0 1 0 2
## 2 3.24 12 22 2 1 1 3
## 3 3 11 2 0 0 0 2
## 4 6 8 44 28 0 1 0
## 5 5.3 12 7 2 0 1 1
## 6 8.75 16 9 8 0 1 0
# Tasa de cambio para el 27 de agosto de 2021 (aproximadamente 3,800 COP por USD)
tasa_cambio <- 3800
# Crear la variable salario en pesos colombianos
# Salario mensual = wage * 8 horas/día * 30 días/mes * tasa de cambio
wagebase <- wagebase %>%
mutate(salario = wage * 8 * 30 * tasa_cambio)
# Verificar la nueva variable
head(wagebase$salario)
## [1] 2827200 2954880 2736000 5472000 4833600 7980000
# Crear variable categórica para educación
wagebase <- wagebase %>%
mutate(educ_cat = ifelse(educ <= 12, "12 años o menos", "Más de 12 años"))
# Prueba t para una muestra
t_test_salario <- t.test(wagebase$salario, mu = 4750000, alternative = "greater")
t_test_salario
##
## One Sample t-test
##
## data: wagebase$salario
## t = 4.2712, df = 525, p-value = 1.154e-05
## alternative hypothesis: true mean is greater than 4750000
## 95 percent confidence interval:
## 5135262 Inf
## sample estimates:
## mean of x
## 5377246
# Intervalo de confianza unilateral superior
ic_salario <- t.test(wagebase$salario, conf.level = 0.95)$conf.int
ic_salario
## [1] 5088748 5665743
## attr(,"conf.level")
## [1] 0.95
Comentario: El intervalo de confianza al 95% para el salario medio es [5.088.748, 5.665.743]. Dado que el valor de $4.750.000 está fuera del intervalo, hay evidencia suficiente para afirmar que el salario medio es mayor a $4.750.000.
# Prueba de proporciones
prop_test_casados <- prop.test(sum(wagebase$married), nrow(wagebase), p = 0.5, alternative = "greater")
prop_test_casados
##
## 1-sample proportions test with continuity correction
##
## data: sum(wagebase$married) out of nrow(wagebase), null probability 0.5
## X-squared = 24.276, df = 1, p-value = 4.174e-07
## alternative hypothesis: true p is greater than 0.5
## 95 percent confidence interval:
## 0.5719279 1.0000000
## sample estimates:
## p
## 0.608365
# Intervalo de confianza para la proporción
ic_prop_casados <- prop.test(sum(wagebase$married), nrow(wagebase), conf.level = 0.95)$conf.int
ic_prop_casados
## [1] 0.5650483 0.6500747
## attr(,"conf.level")
## [1] 0.95
# Comentario: El intervalo de confianza al 95% para la proporción de casados es [0.565, 0.650].
# Dado que 0.5 está fuera del intervalo, hay evidencia suficiente
# para afirmar que más de la mitad de los trabajadores están casados.
# 4. Igualdad de varianzas en salarios por nivel educativo
# Población: Trabajadores agrupados por nivel educativo
# Variable: Salario mensual (cuantitativa continua)
# Parámetro: Razón de varianzas poblacionales (σ₁²/σ₂²)
# Dividir los datos por nivel educativo
salario_baja_educ <- wagebase$salario[wagebase$educ_cat == "12 años o menos"]
salario_alta_educ <- wagebase$salario[wagebase$educ_cat == "Más de 12 años"]
# Prueba F para igualdad de varianzas
var_test <- var.test(salario_baja_educ, salario_alta_educ)
var_test
##
## F test to compare two variances
##
## data: salario_baja_educ and salario_alta_educ
## F = 0.42632, num df = 313, denom df = 211, p-value = 7.044e-12
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.3318577 0.5443808
## sample estimates:
## ratio of variances
## 0.4263227
# Intervalo de confianza para la razón de varianzas
ic_varianzas <- var_test$conf.int
ic_varianzas
## [1] 0.3318577 0.5443808
## attr(,"conf.level")
## [1] 0.95
# Comentario: El intervalo de confianza al 95% para la razón de varianzas es [0.332, 0.544].
# Dado que 1 está fuera del intervalo, hay evidencia suficiente
# para afirmar que las varianzas no son iguales.
# 5. Comparación de medias de salario por nivel educativo
# Población: Trabajadores agrupados por nivel educativo
# Variable: Salario mensual (cuantitativa continua)
# Parámetro: Diferencia de medias poblacionales (μ₁ - μ₂)
# Prueba t para dos muestras independientes
t_test_educ <- t.test(salario ~ educ_cat, data = wagebase, alternative = "less")
t_test_educ
##
## Welch Two Sample t-test
##
## data: salario by educ_cat
## t = -7.4823, df = 331.44, p-value = 3.312e-13
## alternative hypothesis: true difference in means between group 12 años o menos and group Más de 12 años is less than 0
## 95 percent confidence interval:
## -Inf -1782314
## sample estimates:
## mean in group 12 años o menos mean in group Más de 12 años
## 4455759 6742089
# Intervalo de confianza para la diferencia de medias
ic_diff_medias <- t.test(salario ~ educ_cat, data = wagebase)$conf.int
ic_diff_medias
## [1] -2887419 -1685241
## attr(,"conf.level")
## [1] 0.95
# Comentario: El intervalo de confianza al 95% para la diferencia de medias es [-2.887.419, -1.685.241].
# Dado que 0 está fuera del intervalo, hay evidencia suficiente
# para afirmar que el salario medio del grupo con menor educación es menor.
# 6. Comparación de proporciones de casados por nivel educativo
# Población: Trabajadores agrupados por nivel educativo
# Variable: Estado civil (categórica binomial)
# Parámetro: Diferencia de proporciones poblacionales (p₁ - p₂)
# Crear tablas de contingencia
tabla_casados <- table(wagebase$educ_cat, wagebase$married)
tabla_casados
##
## 0 1
## 12 años o menos 131 183
## Más de 12 años 75 137
# Prueba de proporciones para dos muestras
casados_alta_educ <- sum(wagebase$married[wagebase$educ_cat == "Más de 12 años"])
casados_baja_educ <- sum(wagebase$married[wagebase$educ_cat == "12 años o menos"])
total_alta_educ <- sum(wagebase$educ_cat == "Más de 12 años")
total_baja_educ <- sum(wagebase$educ_cat == "12 años o menos")
prop_test_educ <- prop.test(c(casados_alta_educ, casados_baja_educ),
c(total_alta_educ, total_baja_educ),
alternative = "greater")
prop_test_educ
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(casados_alta_educ, casados_baja_educ) out of c(total_alta_educ, total_baja_educ)
## X-squared = 1.8788, df = 1, p-value = 0.08524
## alternative hypothesis: greater
## 95 percent confidence interval:
## -0.01132697 1.00000000
## sample estimates:
## prop 1 prop 2
## 0.6462264 0.5828025
# Intervalo de confianza para la diferencia de proporciones
ic_diff_prop <- prop.test(c(casados_alta_educ, casados_baja_educ),
c(total_alta_educ, total_baja_educ))$conf.int
ic_diff_prop
## [1] -0.02489038 0.15173811
## attr(,"conf.level")
## [1] 0.95
# Comentario: El intervalo de confianza al 95% para la diferencia de proporciones es [-0.025, 0.152].
# Dado que 0 está dentro del intervalo, no hay evidencia suficiente
# para afirmar que la proporción de casados es mayor en el grupo con más educación.
# Función para formatear números en pesos colombianos
formatear_pesos <- function(x) {
paste0("$", format(round(x), big.mark = ".", decimal.mark = ","))
}
# Mostrar resultados formateados
cat("Resultados principales:\n")
## Resultados principales:
cat("1. Media del salario:", formatear_pesos(mean(wagebase$salario)), "\n")
## 1. Media del salario: $5.377.246
cat("2. Proporción de casados:", round(mean(wagebase$married), 3), "\n")
## 2. Proporción de casados: 0.608
cat("3. Varianza grupo baja educación:", formatear_pesos(var(salario_baja_educ)), "\n")
## 3. Varianza grupo baja educación: $6,552656e+12
cat("4. Varianza grupo alta educación:", formatear_pesos(var(salario_alta_educ)), "\n")
## 4. Varianza grupo alta educación: $1,537018e+13
cat("5. Media grupo baja educación:", formatear_pesos(mean(salario_baja_educ)), "\n")
## 5. Media grupo baja educación: $4.455.759
cat("6. Media grupo alta educación:", formatear_pesos(mean(salario_alta_educ)), "\n")
## 6. Media grupo alta educación: $6.742.089
cat("7. Proporción casados baja educación:", round(casados_baja_educ/total_baja_educ, 3), "\n")
## 7. Proporción casados baja educación: 0.583
cat("8. Proporción casados alta educación:", round(casados_alta_educ/total_alta_educ, 3), "\n")
## 8. Proporción casados alta educación: 0.646