# 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"))
  1. El salario medio de las personas es mayor a $4.750.000 Población: Todos los trabajadores Variable: Salario mensual (cuantitativa continua) Parámetro: Media poblacional del salario (μ)
# 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.

  1. Más de la mitad de los trabajadores están casados Población: Todos los trabajadores Variable: Estado civil (categórica binomial) Parámetro: Proporción poblacional de casados (p)
# 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