Abril 2025

Impacto de factores Socioeconómicos y de transporte en el Bienestar Personal

Caso de estudio

Contexto

Una entidad gubernamental de transporte y bienestar social ha recopilado datos de ciudadanos para analizar cómo factores como el ingreso, el acceso al transporte, el estado civil y la educación impactan en su calidad de vida. Además, se estudia el efecto de una intervención en la salud de las personas a través de un programa de control de peso.

Objetivo de estudio

Evaluar la relación entre variables socioeconómicas, el uso del transporte público y el bienestar personal, medido en términos de peso, ingresos y nivel educativo

Descripción de variables

Datos demográficos

  • GENERO: Sexo del individuo (Hombre/Mujer).
  • EDAD: Edad en años.
  • ESTADO_CIVIL: Estado civil (Soltero, Casado, Otro).
  • HIJOS: Número de hijos.
  • NIVEL_EDUCATIVO: Último nivel educativo alcanzado.
  • PERSONAS_HOGAR: Número total de personas que viven en el hogar del individuo.
  • PERSONAS_EDAD_TRABAJAR: Número de personas en edad de trabajar en el hogar.
  • NUMERO_PERSONAS_EDAD_TRABAJAR: Número total de personas en edad laboral en el hogar.

Descripción de variables

Datos económicos

  • INGRESO: Ingreso mensual en miles de pesos.
  • GASTOS: Gastos mensuales totales en miles de pesos.
  • VIVIENDA: Si posee vivienda propia o no.

Datos sobre trasnporte

  • CALIFICACION_SERVICIO_TRANSPORTE: Evaluación del servicio de transporte público.
  • TIEMPO_RECORRIDO: Minutos de viaje diario en transporte público.
  • GASTO_DIARIO_TRANSPORTE: Gasto en transporte por día.

Datos sobre Salud

  • PESO_DESPUES_DIETA: Peso después de un programa de control de peso.

Preliminares

Librerias

library(tidyverse)
library(readxl)
library(modeest)
library(gridExtra)

Importar el set de datos

Datos3 <- read_xlsx("DATOS.xlsx")
rmarkdown::paged_table(Datos3)

Parte 1: Estadística descriptiva

Punto 1: Con base a las edades en la muestra, determine: media, mediana, moda, rango, percentiles 25, 50 y 75.

Datos3$EDAD %>% {c(summary(.), Mod = mlv(.))}
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.      Mod 
## 19.00000 30.00000 39.00000 38.14773 48.00000 60.00000 37.56818

La edad de los ciudadanos encuestados oscila entre los 19 y 60 años; tanto la edad promedio como la más frecuente de los ciudadanos es de 38 años.

El 25% de los ciudadanos tienen 30 años o menos, el 50% tienen 39 años o menos y el 75% tiene a lo sumo 48 años.

Parte 1: Estadística descriptiva

Punto 2: Para los ingresos de los participantes, determine la media, desviación estandar, histograma y box-plot.

Datos3$INGRESO %>% {c(summary(.), Std = sd(.))}
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.      Std 
##  500.000  720.000 1250.000 1796.364 2800.000 6000.000 1289.912

En promedio, un ciudadano tiene ingresos mensuales $1796.4 miles. La variabilidad media de los ingresos mensuales de los ciudadanos es de $1289.9 miles, la cual representa un 71.80% del ingreso medio (datos heterogéneos en esta variable).

El histogrma y boxplot de la variable muestran una distribución con sesgo positivo o hacia la derecha, además de que hay un ciudadano con ingresos de $6000 miles al mes, lo que estadísticamente se considera atípico.

Parte 1: Estadística descriptiva

Punto 2: Para los ingresos de los participantes, determine la media, desviación estandar, histograma y box-plot.

G1 <- Datos3 %>% ggplot(aes(INGRESO)) +
  geom_histogram(bins = 7, color = "blue", fill = NA) +
  xlab("Ingresos ($miles/mes)") +
  ylab("Cantidad de personas") +
  ggtitle("Histograma de los ingresos mensuales de los ciudadanos") +
  theme_bw() + theme(plot.title = element_text(size = 8),
                     axis.title = element_text(size = 7),
                     axis.text = element_text(size = 7))

G2 <- Datos3 %>% ggplot(aes(y = INGRESO)) +
  geom_boxplot(color = "blue", fill = NA) +
  ylab("Ingresos ($miles/mes)") +
  ggtitle("Box-plot de los ingresos mensuales de los ciudadanos") +
  theme_bw() + theme(plot.title = element_text(size = 8),
                     axis.title = element_text(size = 7),
                     axis.text = element_text(size = 7),
                     axis.text.x = element_blank(),
                     axis.ticks.x = element_blank()) 

Parte 1: Estadística descriptiva

Punto 2: Para los ingresos de los participantes, determine la media, desviación estandar, histograma y box-plot.

grid.arrange(G1, G2, ncol = 2, nrow = 1)

Parte 1: Estadística descriptiva

Punto 3: Para los gastos mensuales entre los participantes, determine la media, desviasión estandar, histograma y box-plot (diagrama de caja)

Datos3$GASTOS %>% {c(summary(.), Std = sd(.))}
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.      Std 
##  400.000  687.500 1100.000 1522.159 2000.000 5500.000 1123.696

En promedio, un ciudadano gasta $1522.2 miles al mes. La variabilidad media de los gastos mensuales de los ciudadanos es de $1123.7 miles, la cual representa un 73.82% del ingreso medio (datos heterogéneos en esta variable).

El histograma y boxplot de la variable muestran una distribución con sesgo positivo o hacia la derecha, además de que hay un ciudadano con gastos de $5500 miles al mes, lo que estadísticamente se considera atípico.

Parte 1: Estadística descriptiva

Punto 3: Para los gastos mensuales entre los participantes, determine la media, desviasión estandar, histograma y box-plot (diagrama de caja)

G3 <- Datos3 %>% ggplot(aes(GASTOS)) +
  geom_histogram(bins = 7, color = "blue", fill = NA) +
  xlab("Gastos ($miles/mes)") +
  ylab("Cantidad de personas") +
  ggtitle("Histograma de los gastos mensuales de los ciudadanos") +
  theme_bw() + theme(plot.title = element_text(size = 8),
                     axis.title = element_text(size = 7),
                     axis.text = element_text(size = 7))

G4 <- Datos3 %>% ggplot(aes(y = GASTOS)) +
  geom_boxplot(color = "blue", fill = NA) +
  ylab("Gastos ($miles/mes)") +
  ggtitle("Box-plot de los gastos mensuales de los ciudadanos") +
  theme_bw() + theme(plot.title = element_text(size = 8),
                     axis.title = element_text(size = 7),
                     axis.text = element_text(size = 7),
                     axis.text.x = element_blank(),
                     axis.ticks.x = element_blank()) 

Parte 1: Estadística descriptiva

Punto 3: Para los gastos mensuales entre los participantes, determine la media, desviasión estandar, histograma y box-plot (diagrama de caja)

grid.arrange(G3, G4, ncol = 2, nrow = 1)

Parte 1: Estadística descriptiva

Punto 4: ¿Cuál es la proporción de hombres y mujeres en la muestra? Realice el diagrama de barras y de sectores.

df_prop <- Datos3 %>% count(GENERO) %>%
  mutate(prop = n / sum(n),
         lbl = scales::percent(prop, accuracy = 0.1)) %>% arrange(-prop)
df_prop %>% data.frame()
##   GENERO  n prop   lbl
## 1 HOMBRE 44  0.5 50.0%
## 2  MUJER 44  0.5 50.0%

La muestra de ciudadanos está balanceada en cuanto a proporción de hombres y mujeres, ya que estas dos son iguales (50 y 50)

Parte 1: Estadística descriptiva

Punto 4: ¿Cuál es la proporción de hombres y mujeres en la muestra? Realice el diagrama de barras y de sectores.

G5 <- ggplot(df_prop, aes(x = GENERO, y = n)) +
  geom_bar(stat = "identity", color = c("blue", "green"), fill = NA) +
  geom_label(aes(label = scales::percent(prop, accuracy = 0.1), y = n / 2),
             fill = NA, color = c("blue", "green"), size = rel(4), fontface = "bold") +
  xlab("Género") + ylab("Cantidad de personas") +
  ggtitle("Distribución por Género") + theme_bw() +
  theme(plot.title = element_text(size = 8),
        axis.title = element_text(size = 7),
        axis.text = element_text(size = 7))

G6 <- ggplot(df_prop, aes(x = "", y = prop, fill = GENERO)) +
  geom_bar(stat = "identity", width = 1, color = "white") + 
  coord_polar("y", start = 0) +
  geom_label(aes(label = lbl, y = cumsum(prop) - prop / 2),
             fill = NA, color = "white", size = rel(3), fontface = "bold") +  
  theme_void() +
  ggtitle("Distribución por Género") +
  theme(plot.title = element_text(hjust = 0.5))

Parte 1: Estadística descriptiva

Punto 4: ¿Cuál es la proporción de hombres y mujeres en la muestra? Realice el diagrama de barras y de sectores.

grid.arrange(G5, G6, ncol = 2, nrow = 1)

Parte 1: Estadística descriptiva

Punto 5: ¿Cuáles son las categorías más comunes en el nivel educativo de la población? Compruébelo a partir de una gráfica de barras.

df_prop2 <- Datos3 %>% count(NIVEL_EDUCATIVO) %>%
  mutate(prop = n / sum(n),
         lbl = scales::percent(prop, accuracy = 0.1)) %>% arrange(-prop)
df_prop2 %>% data.frame()
##   NIVEL_EDUCATIVO  n      prop   lbl
## 1        PRIMARIA 20 0.2272727 22.7%
## 2         TECNICO 20 0.2272727 22.7%
## 3   UNIVERSITARIO 20 0.2272727 22.7%
## 4       POSTGRADO 18 0.2045455 20.5%
## 5       BACHILLER 10 0.1136364 11.4%

Los ciudadanos con primaria, técnico y universitario en su nivel educativo son los más comúnes. Estas tres categorías tienen la misma proporción en la muestra (22,7%) y en conjunto acumulan el 68,18%

Parte 1: Estadística descriptiva

Punto 5: ¿Cuáles son las categorías más comunes en el nivel educativo de la población? Compruébelo a partir de una gráfica de barras.

G7 <- ggplot(df_prop2, aes(x = NIVEL_EDUCATIVO, y = n, color = factor(NIVEL_EDUCATIVO))) +
  geom_bar(stat = "identity", fill = NA) +
  geom_label(aes(label = scales::percent(prop, accuracy = 0.1), y = n / 2),
             fill = NA, color = "#566573", size = rel(3), fontface = "bold") +
  xlab("Nivel educativo") + ylab("Cantidad de personas") +
  ggtitle("Distribución por nivel educativo") + theme_bw() +
  theme(plot.title = element_text(size = 10),
        axis.title = element_text(size = 7),
        axis.text = element_text(size = 7),
        legend.position = "none")

Parte 1: Estadística descriptiva

Punto 5: ¿Cuáles son las categorías más comunes en el nivel educativo de la población? Compruébelo a partir de una gráfica de barras.

G7

Parte 1: Estadística descriptiva

Punto 6: ¿Qué porcentaje de la población tiene vivienda propia? Realice un gráfico de pastel

df_prop3 <- Datos3 %>% count(VIVIENDA) %>%
  mutate(prop = n / sum(n),
         lbl = scales::percent(prop, accuracy = 0.1)) %>% arrange(-prop)
df_prop3 %>% data.frame()
##   VIVIENDA  n      prop   lbl
## 1       SI 48 0.5454545 54.5%
## 2       NO 40 0.4545455 45.5%

El 54.5% de los ciudadanos posee vivienda propia.

Parte 1: Estadística descriptiva

Punto 6: ¿Qué porcentaje de la población tiene vivienda propia? Realice un gráfico de pastel

G8 <- ggplot(df_prop3, aes(x = "", y = prop, fill = VIVIENDA)) +
  geom_bar(stat = "identity", width = 1, color = "white") + 
  coord_polar("y", start = 0) +
  geom_label(aes(label = lbl, y = cumsum(prop) - prop / 2),
             fill = NA, color = "white", size = rel(3), fontface = "bold") +  
  theme_void() + ggtitle("Población que tiene vivienda propia") +
  theme(plot.title = element_text(hjust = 0.5))

Parte 1: Estadística descriptiva

Punto 6: ¿Qué porcentaje de la población tiene vivienda propia? Realice un gráfico de pastel

G8

Parte 1: Estadística descriptiva

Punto 7: ¿Cuál es la variabilidad en el tiempo de recorrido en transporte público? Determine el Coeficiente de variación

Datos3 %>% summarise(Media = round(mean(TIEMPO_RECORRIDO),2),
                     Desv_est = round(sd(TIEMPO_RECORRIDO),2),
                     Coef_var = round(sd(TIEMPO_RECORRIDO)/mean(TIEMPO_RECORRIDO),4)) %>%
  data.frame()
##   Media Desv_est Coef_var
## 1 30.25    11.27   0.3725

Los ciudadanos encuestados tardan en promedio 30.25 minutos viajando en transporte público. La variabilidad de estos tiempos es de 11.27 minutos la cual representa un 37,25% del promedio (Variable poco homogénea)

Parte 2: Estadística inferencial

Punto 1: ¿El promedio de edad de la muestra es significativamente menor de 35 años? (asuma normalidad)

X: edad del ciudadano (años)

Se asume que X~Normal

\(H_0: \mu \geq 35\)

\(H_1: \mu < 35\)

Datos3$EDAD %>% t.test(x = ., alternative = "less", mu = 35)
## 
##  One Sample t-test
## 
## data:  .
## t = 2.5412, df = 87, p-value = 0.9936
## alternative hypothesis: true mean is less than 35
## 95 percent confidence interval:
##      -Inf 40.20713
## sample estimates:
## mean of x 
##  38.14773

Parte 2: Estadística inferencial

Punto 1: ¿El promedio de edad de la muestra es significativamente menor de 35 años? (asuma normalidad)

Como el valor-p del test es mayor al 5%, no se rechaza \(H_0\).

A un nivel de significancia del 5%, no hay suficiente evidencia estadística para poder afirmar que la edad media de los ciudadanos es significativamente menor a los 35 años.

Parte 2: Estadística inferencial

Punto 2: ¿El ingreso medio de los participantes es significativamente mayor a 1000? (asuma normalidad)

X: ingreso del ciudadano (miles de $ / mes)

Se asume que X~Normal

\(H_0: \mu \leq 1000\)

\(H_1: \mu > 1000\)

Datos3$INGRESO %>% t.test(x = ., alternative = "greater", mu = 1000)
## 
##  One Sample t-test
## 
## data:  .
## t = 5.7915, df = 87, p-value = 5.438e-08
## alternative hypothesis: true mean is greater than 1000
## 95 percent confidence interval:
##  1567.754      Inf
## sample estimates:
## mean of x 
##  1796.364

Parte 2: Estadística inferencial

Punto 2: ¿El ingreso medio de los participantes es significativamente mayor a 1000? (asuma normalidad)

Como el valor-p del test es menor al 1%, se rechaza \(H_0\)

A un nivel de significancia del 1%, la evidencia estadística indica que el ingreso medio mensual de los ciudadanos es significativamente mayor a los $1000 miles

Parte 2: Estadística inferencial

Punto 3: ¿El gasto medio de los participantes es significativamente distinto a 1500? (asuma normalidad)

X: gasto del ciudadano (miles de $ / mes)

Se asume que X~Normal

\(H_0: \mu = 1500\)

\(H_1: \mu \neq 1500\)

Datos3$GASTOS %>% t.test(x = ., alternative = "two.sided", mu = 1500)
## 
##  One Sample t-test
## 
## data:  .
## t = 0.18499, df = 87, p-value = 0.8537
## alternative hypothesis: true mean is not equal to 1500
## 95 percent confidence interval:
##  1284.071 1760.248
## sample estimates:
## mean of x 
##  1522.159

Parte 2: Estadística inferencial

Punto 3: ¿El gasto medio de los participantes es significativamente distinto a 1500? (asuma normalidad)

Como el valor-p del test es mayor al 5%, no se rechaza \(H_0\)

A un nivel de significancia del 5%, no hay suficiente evidencia estadística para poder afirmar que el gasto medio mensual de los ciudadanos difiera significativamente de los $1500 miles.

Parte 2: Estadística inferencial

Punto 4: ¿La calificación del servicio de transporte sigue una distribución normal? (Prueba de normalidad: Shapiro-Wilk)

No es posible realizar un test de normalidad sobre una variable categórica nominal

Parte 2: Estadística inferencial

Punto 5: ¿El tiempo recorrido de transporte sigue una distribución normal? (Prueba de normalidad: Shapiro-Wilk)

X: tiempo de recorrido de transporte (minutos)

\(H_0: X \sim Normal\)

\(H_1: X \nsim Normal\)

Datos3$TIEMPO_RECORRIDO %>% shapiro.test()
## 
##  Shapiro-Wilk normality test
## 
## data:  .
## W = 0.95669, p-value = 0.005043

Parte 2: Estadística inferencial

Punto 5: ¿El tiempo recorrido de transporte sigue una distribución normal? (Prueba de normalidad: Shapiro-Wilk)

Como el valor-p de la prueba es menor al 1%, se rechaza \(H_0\)

A un nivel de significancia del 1%, la evidencia estadística indica que la variable Tiempo de recorrido de transporte no sigue una distribución normal.

Parte 2: Estadística inferencial

Punto 6: ¿Existe evidencia estadística de que el género influye en el tiempo de recorrido? (Prueba t para dos muestras independientes)

Xm: tiempo de recorrido de transporte de una mujer (minutos)

Xh: tiempo de recorrido de transporte de un hombre (minutos)

Se asume que Xm y Xh se distribuyen de forma normal y sus varianzas poblacionales son iguales (\(\sigma_m^2 = \sigma_h^2\))

\(H_0: \mu_m = \mu_h\)

\(H_1: \mu_m \neq \mu_h\)

X_m <- Datos3 %>% filter(GENERO == "MUJER") %>% pull(TIEMPO_RECORRIDO)
X_h <- Datos3 %>% filter(GENERO == "HOMBRE") %>% pull(TIEMPO_RECORRIDO)
t.test(x = X_m, y = X_h, alternative = "two.sided", mu = 0, var.equal = TRUE)

Parte 2: Estadística inferencial

Punto 6: ¿Existe evidencia estadística de que el género influye en el tiempo de recorrido? (Prueba t para dos muestras independientes)

## 
##  Two Sample t-test
## 
## data:  X_m and X_h
## t = 0.60319, df = 86, p-value = 0.548
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -3.339215  6.248306
## sample estimates:
## mean of x mean of y 
##  30.97727  29.52273

Como el valor-p de la prueba es mayor al 5%, no se rechaza \(H_0\)

A un nivel de significancia del 5%, no hay suficiente evidencia estadística que indique que el género influya significativamente en el tiempo de recorrido en transporte público.

Parte 2: Estadística inferencial

Punto 7: ¿El porcentaje de personas con vivienda propia es significativamente mayor al 50%? (Prueba de proporciones)

P: proporción de ciudadanos con vivienda propia

\(H_0: P \leq 50\%\)

\(H_1: P > 50\%\)

x <- Datos3 %>% filter(VIVIENDA == "SI") %>% nrow()
n <- nrow(Datos3)
prop.test(x = x, n = n, alternative = "greater")
## 
##  1-sample proportions test with continuity correction
## 
## data:  x out of n, null probability 0.5
## X-squared = 0.55682, df = 1, p-value = 0.2278
## alternative hypothesis: true p is greater than 0.5
## 95 percent confidence interval:
##  0.4524983 1.0000000
## sample estimates:
##         p 
## 0.5454545

Parte 2: Estadística inferencial

Punto 7: ¿El porcentaje de personas con vivienda propia es significativamente mayor al 50%? (Prueba de proporciones)

Como el valor-p del test es mayor al 5%, no se rechaza \(H_0\)

A un nivel de significancia del 5%, no hay sufueciente evidencia estadística para poder afirmar que la proporción de ciudadanos con vivienda propia sea significativamente mayor al 50%

Parte 2: Estadística inferencial

Punto 8: ¿La distribución de los gastos es significativamente diferente de una distribución normal? (Prueba de Kolmogorov-Smirnov)

X: gasto del ciudadano (miles de $ / mes)

\(H_0: X \sim Normal\)

\(H_1: X \nsim Normal\)

ks.test(x = Datos3$GASTOS, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Datos3$GASTOS
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided

Parte 2: Estadística inferencial

Punto 8: ¿La distribución de los gastos es significativamente diferente de una distribución normal? (Prueba de Kolmogorov-Smirnov)

Como el valor-p de la prueba es menor al 1%, se rechaza \(H_0\)

A un nivel de significancia del 1%, la evidencia estadística indica que la variable gastos mensuales difiere significativamente de una distribución normal.