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
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.
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.
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
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"
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>
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
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
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()
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()
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()`).
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()`).
-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.
-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.
-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.
-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.
-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.