1. Contexto

El presente dataset recopila información sobre variables psicológicas y sociodemográficas de una muestra de individuos, con el objetivo de analizar su relación con el bienestar emocional y la calidad de vida.

Variables incluidas:

  • Nivel de estrés

  • Satisfacción con la vida

  • Calidad del sueño

  • Estado emocional

  • Edad

  • Género

  • Nivel educativo

  • Ingreso mensual

Este conjunto de datos permite explorar patrones en la salud mental y evaluar el impacto de distintas condiciones económicas y sociales.

Para garantizar la calidad de los datos y obtener conclusiones válidas, es necesario realizar un Análisis Exploratorio de Datos (EDA) antes de proceder con cualquier modelado estadístico o inferencia.2. Revisión de datos

2.1 ¿Cuál es la población objetivo?

La población objetivo de este estudio son individuos que han participado en la encuesta sobre variables psicológicas y sociodemográficas. Estos individuos pueden estar representados por trabajadores de diferentes sectores económicos o personas en distintas situaciones sociales que afectan su bienestar emocional.

2.2 ¿Existe una muestra? ¿Cuál es?

Sí, el conjunto de datos utilizado representa una muestra de la población objetivo. La muestra está compuesta por los individuos cuyos datos se han recopilado en el dataset. El número exacto de observaciones y variables se detalla en la sección de exploración de datos.

2.3 Mencione un parámetro y un estadístico en este estudio

  • Parámetro: Un parámetro podría ser la media del nivel de estrés laboral en toda la población, lo cual es un valor desconocido y difícil de medir directamente.
  • Estadístico: Un estadístico sería la media del nivel de estrés laboral calculada con los datos de la muestra, la cual es una estimación del parámetro desconocido.

3. Carga de datos

library(readr)

datos <- read_csv("dataset_psicologia_trabajo_taller1(in).csv")
## Rows: 300 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): genero, estado_civil, nivel_escolaridad, nivel_estres_laboral, sati...
## dbl (4): edad, horas_trabajo_semanal, horas_sueno, salario_mensual
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
str(datos)
## spc_tbl_ [300 × 9] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ genero               : chr [1:300] "masculino" "otro" "femenino" "femenino" ...
##  $ estado_civil         : chr [1:300] "soltero" "casado" "casado" "casado" ...
##  $ nivel_escolaridad    : chr [1:300] "secundaria" "secundaria" "secundaria" "primaria" ...
##  $ nivel_estres_laboral : chr [1:300] "bajo" "bajo" "bajo" "moderado" ...
##  $ satisfaccion_laboral : chr [1:300] "alta" "baja" "baja" "media" ...
##  $ edad                 : num [1:300] 10 57 21 18 45 59 48 40 40 43 ...
##  $ horas_trabajo_semanal: num [1:300] 38.6 NA 37.9 31.5 34.2 ...
##  $ horas_sueno          : num [1:300] 9.46 8.11 7.11 4.6 6.63 ...
##  $ salario_mensual      : num [1:300] 3181 2390 2812 1148 1333 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   genero = col_character(),
##   ..   estado_civil = col_character(),
##   ..   nivel_escolaridad = col_character(),
##   ..   nivel_estres_laboral = col_character(),
##   ..   satisfaccion_laboral = col_character(),
##   ..   edad = col_double(),
##   ..   horas_trabajo_semanal = col_double(),
##   ..   horas_sueno = col_double(),
##   ..   salario_mensual = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
head(datos)
## # A tibble: 6 × 9
##   genero    estado_civil nivel_escolaridad nivel_estres_laboral
##   <chr>     <chr>        <chr>             <chr>               
## 1 masculino soltero      secundaria        bajo                
## 2 otro      casado       secundaria        bajo                
## 3 femenino  casado       secundaria        bajo                
## 4 femenino  casado       primaria          moderado            
## 5 masculino casado       primaria          moderado            
## 6 masculino viudo        pregrado          alto                
## # ℹ 5 more variables: satisfaccion_laboral <chr>, edad <dbl>,
## #   horas_trabajo_semanal <dbl>, horas_sueno <dbl>, salario_mensual <dbl>
dim(datos) # Número de observaciones (filas) y variables (columnas)
## [1] 300   9

4. Exploración de datos

4.1 Dimensiones y nombres de variables

dim(datos) # Número de filas y columnas
## [1] 300   9
names(datos) # Nombres de las variables
## [1] "genero"                "estado_civil"          "nivel_escolaridad"    
## [4] "nivel_estres_laboral"  "satisfaccion_laboral"  "edad"                 
## [7] "horas_trabajo_semanal" "horas_sueno"           "salario_mensual"

4.2 Tipos de datos

str(datos)
## spc_tbl_ [300 × 9] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ genero               : chr [1:300] "masculino" "otro" "femenino" "femenino" ...
##  $ estado_civil         : chr [1:300] "soltero" "casado" "casado" "casado" ...
##  $ nivel_escolaridad    : chr [1:300] "secundaria" "secundaria" "secundaria" "primaria" ...
##  $ nivel_estres_laboral : chr [1:300] "bajo" "bajo" "bajo" "moderado" ...
##  $ satisfaccion_laboral : chr [1:300] "alta" "baja" "baja" "media" ...
##  $ edad                 : num [1:300] 10 57 21 18 45 59 48 40 40 43 ...
##  $ horas_trabajo_semanal: num [1:300] 38.6 NA 37.9 31.5 34.2 ...
##  $ horas_sueno          : num [1:300] 9.46 8.11 7.11 4.6 6.63 ...
##  $ salario_mensual      : num [1:300] 3181 2390 2812 1148 1333 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   genero = col_character(),
##   ..   estado_civil = col_character(),
##   ..   nivel_escolaridad = col_character(),
##   ..   nivel_estres_laboral = col_character(),
##   ..   satisfaccion_laboral = col_character(),
##   ..   edad = col_double(),
##   ..   horas_trabajo_semanal = col_double(),
##   ..   horas_sueno = col_double(),
##   ..   salario_mensual = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>

5. Revisión de valores faltantes

colSums(is.na(datos)) # Contar valores faltantes por variable
##                genero          estado_civil     nivel_escolaridad 
##                     0                     0                     0 
##  nivel_estres_laboral  satisfaccion_laboral                  edad 
##                     0                     0                     0 
## horas_trabajo_semanal           horas_sueno       salario_mensual 
##                    20                     0                    25

6. tablas de frecuencia

6.1 Resumen estadístico general

summary(datos)
##     genero          estado_civil       nivel_escolaridad  nivel_estres_laboral
##  Length:300         Length:300         Length:300         Length:300          
##  Class :character   Class :character   Class :character   Class :character    
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character    
##                                                                               
##                                                                               
##                                                                               
##                                                                               
##  satisfaccion_laboral      edad       horas_trabajo_semanal  horas_sueno    
##  Length:300           Min.   : 9.00   Min.   :10.79         Min.   : 2.471  
##  Class :character     1st Qu.:28.00   1st Qu.:34.60         1st Qu.: 6.008  
##  Mode  :character     Median :35.00   Median :40.64         Median : 6.958  
##                       Mean   :35.11   Mean   :40.84         Mean   : 6.945  
##                       3rd Qu.:41.00   3rd Qu.:47.46         3rd Qu.: 7.901  
##                       Max.   :61.00   Max.   :71.93         Max.   :11.707  
##                                       NA's   :20                            
##  salario_mensual 
##  Min.   : -9724  
##  1st Qu.:  2030  
##  Median :  3301  
##  Mean   :  7805  
##  3rd Qu.:  4735  
##  Max.   :605894  
##  NA's   :25
# Cargar la librería necesaria
library(dplyr)

# 3.1 Tablas de frecuencia no agrupadas para variables categóricas
# Tabla de frecuencia para género
tabla_genero <- datos %>%
  count(genero) %>%
  mutate(Prop_Porc = (n / sum(n)) * 100)

tabla_genero
## # A tibble: 3 × 3
##   genero        n Prop_Porc
##   <chr>     <int>     <dbl>
## 1 femenino    135     45   
## 2 masculino   136     45.3 
## 3 otro         29      9.67
# Tabla de frecuencia para nivel escolaridad
tabla_nivel_escolaridad <- datos %>%
  count(nivel_escolaridad) %>%
  mutate(Prop_Porc = (n / sum(n)) * 100)

tabla_nivel_escolaridad
## # A tibble: 4 × 3
##   nivel_escolaridad     n Prop_Porc
##   <chr>             <int>     <dbl>
## 1 posgrado             39      13  
## 2 pregrado            114      38  
## 3 primaria             46      15.3
## 4 secundaria          101      33.7
# 3.2 Tabla de frecuencia agrupada para la variable Edad
# Definir los intervalos de edad
datos <- datos %>%
  mutate(edad_grupo = cut(edad, breaks = seq(min(edad, na.rm = TRUE), max(edad, na.rm = TRUE), by = 5), include.lowest = TRUE))

tabla_edad_agrupada <- datos %>%
  count(edad_grupo) %>%
  mutate(Prop_Porc = (n / sum(n)) * 100)

tabla_edad_agrupada
## # A tibble: 11 × 3
##    edad_grupo     n Prop_Porc
##    <fct>      <int>     <dbl>
##  1 [9,14]         4     1.33 
##  2 (14,19]       12     4    
##  3 (19,24]       28     9.33 
##  4 (24,29]       47    15.7  
##  5 (29,34]       48    16    
##  6 (34,39]       61    20.3  
##  7 (39,44]       50    16.7  
##  8 (44,49]       25     8.33 
##  9 (49,54]       13     4.33 
## 10 (54,59]       10     3.33 
## 11 <NA>           2     0.667
# 3.3 Tabla de contingencia combinando dos variables categóricas (por ejemplo, género y estado civil)
tabla_contingencia <- table(datos$genero, datos$estado_civil)

tabla_contingencia
##            
##             casado divorciado soltero viudo
##   femenino      54         22      50     9
##   masculino     50         24      51    11
##   otro          12          0      14     3

7.Distribución de variables y valores atípicos

7.1 Diagramas de violín para visualizar distribución y edad

ggplot(datos, aes(x = "Edad", y = edad)) +
  geom_violin(fill = "steelblue", alpha = 0.5) +
  labs(title = "Distribución de Edad",
       y = "Edad",
       x = "")

ggplot(datos, aes(x = edad)) +  
  geom_histogram(bins = 10, fill = "steelblue", color = "black", alpha = 0.7) +  
  labs(title = "Distribución de Edades", x = "Edad", y = "Frecuencia") +  
  theme_minimal()

# Gráfico de diagrama Circular para la variable género
ggplot(datos, aes(x = "", fill = genero)) +
  geom_bar(width = 1) +
  coord_polar("y", start = 0) +
  labs(title = "Distribución de Género") +
  theme_void()

ggplot(datos, aes(x = nivel_escolaridad, fill = nivel_escolaridad)) +  
  geom_bar() +  
  labs(title = "Distribución de rendimiento académcio", x = "Rendimiento académcio", y = "Frecuencia") +  
  theme_minimal()

8. Detección de valores atípicos

ggplot(datos, aes(x = "Salario Mensual", y = salario_mensual)) +
  geom_violin(fill = "cadetblue4", alpha = 0.5) +
  labs(title = "Distribución de Salario Mensual",
       y = "Salario Mensual",
       x = "")
## Warning: Removed 25 rows containing non-finite outside the scale range
## (`stat_ydensity()`).

ggplot(datos, aes(y = horas_trabajo_semanal)) +
  geom_boxplot(fill = "steelblue", alpha = 0.5) +
  labs(title = "Detección de valores atípicos en Horas de Trabajo Semanal",
       y = "Horas de Trabajo Semanal")
## Warning: Removed 20 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

ggplot(datos, aes(y = horas_sueno)) +
  geom_boxplot(fill = "tomato", alpha = 0.5) +
  labs(title = "Detección de valores atípicos en Horas de Sueño",
       y = "Horas de Sueño")

ggplot(datos, aes(y = salario_mensual)) +
  geom_boxplot(fill = "purple", alpha = 0.5) +
  labs(title = "Detección de valores atípicos en Salario",
       y = "Salario Mensual")
## Warning: Removed 25 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

# Diagrama de cajas y bigotes con la variable Edad
ggplot(datos, aes(y = edad)) +
  geom_boxplot(fill = "steelblue", alpha = 0.5) +
  labs(title = "Diagrama de Cajas y Bigotes para Edad",
       y = "Edad")

# Diagrama de barras para la variable estado civil
ggplot(datos, aes(x = estado_civil, fill = estado_civil)) +  
  geom_bar() +  
  labs(title = "Distribución de Estado Civil", x = "Estado Civil", y = "Frecuencia") +  
  theme_minimal()

8.1 Distribucion ingreso mensual

ggplot(datos, aes(x = salario_mensual)) +  
  geom_histogram(bins = 10, fill = "cyan4", color = "black", alpha = 0.7) +  
  labs(title = "Distribución del Ingreso Mensual", x = "Ingreso Mensual", y = "Frecuencia") +  
  theme_minimal()
## Warning: Removed 25 rows containing non-finite outside the scale range
## (`stat_bin()`).

8.2 Relacion entre edad e ingreso

ggplot(datos, aes(x = edad, y = salario_mensual)) +
  geom_point(alpha = 0.5, color = "blue") +
  geom_smooth(method = "lm", color = "red") +
  theme_minimal() +
  ggtitle("Relación entre Edad e Ingreso")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 25 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 25 rows containing missing values or values outside the scale range
## (`geom_point()`).

9.Conclusiones del Analisis Exploratorio de datos

Calidad de los datos:

-Se revisaron las variables y en general están bien organizadas, aunque se encontraron algunos valores atípicos en salario mensual, horas de sueño y horas de trabajo semanal.

-Hay algunos datos faltantes que podrían afectar los resultados si no se manejan bien.

Distribución de variables:

-La mayoría de las personas en la muestra tienen edades similares, pero hay algunos casos extremos.

-Los salarios varían bastante, con algunos valores muy altos que podrían ser errores o casos poco representativos. -En las horas de sueño también hay valores inusuales que deben revisarse.

Relaciones entre variables:

-En general, las personas mayores tienden a tener mayores ingresos, aunque esto no siempre se cumple.

-Hay diferencias en los niveles de estrés según el estado civil y el nivel educativo, lo que podría indicar que algunos grupos tienen más presión laboral que otros.

Resultados de las tablas de frecuencia:

-La mayoría de la muestra tiene un nivel educativo medio o alto.

-Hay una distribución relativamente equilibrada entre géneros.

-En la tabla de contingencia se ven diferencias entre estado civil y género en algunos aspectos.

Recomendaciones:

-Sería bueno limpiar los datos eliminando o corrigiendo los valores atípicos.

-Se podrían hacer análisis más profundos para entender mejor el impacto de los factores económicos y laborales en el bienestar emocional.

-Para llegar a conclusiones más precisas, sería útil aplicar pruebas estadísticas o modelos más avanzados.