1 Introducción y contexto

El síndrome de desgaste profesional (burnout) es un problema crítico de salud laboral. Tradicionalmente se estudió en salud y educación, pero hoy abarca contextos de alta exigencia cognitiva y administrativa (ingeniería, comercio, administración). Este trabajo analiza una muestra de 1.300 trabajadores de cinco áreas, con variables sociodemográficas, hábitos de vida (sueño, ejercicio, café, alcohol) e indicadores fisiológicos y psicológicos (colesterol, estrés, ansiedad, depresión y puntaje de burnout).

1.1 Objetivo general

Analizar los factores sociodemográficos, laborales y de hábitos de vida asociados al nivel de Burnout en trabajadores de distintas áreas, mediante estadística descriptiva, inferencia paramétrica/no paramétrica y regresión lineal múltiple.

1.2 Objetivos específicos

  1. Describir el perfil sociodemográfico, laboral y de salud de los trabajadores según su área de desempeño, con tablas de frecuencias y gráficos.
  2. Comparar los niveles de Burnout y horas de sueño entre grupos independientes (sexo, ejercicio, área) con pruebas paramétricas y no paramétricas.
  3. Evaluar la asociación y capacidad predictiva de horas de trabajo, horas de sueño, estrés y ansiedad sobre el puntaje de Burnout con regresión lineal múltiple.

1.3 Alcance y advertencia metodológica

Los datos son observacionales y de corte transversal (una medición por persona). Todos los resultados se interpretan como asociaciones, no como efectos causales. Además, se asume que las 1.300 observaciones son independientes entre sí y que los puntajes (Estrés, Burnout, Ansiedad, Depresión) pueden tratarse como cuantitativos; ambos son supuestos del diseño que los datos no permiten verificar.

2 Paso 0. Paquetes, carga y revisión de la base

library(readxl)     # lectura de Excel
library(dplyr)      # manipulación de datos
library(tidyr)      # formato largo para gráficos
library(ggplot2)    # gráficos
library(car)        # Levene, VIF
library(lmtest)     # Breusch-Pagan, Durbin-Watson
library(gridExtra)  # paneles de gráficos
library(knitr)      # tablas
d <- as.data.frame(read_excel("modelamiento_estadistico_bournout.xlsx"))

# Nombres sin tildes ni eñes, para evitar problemas de codificación
stopifnot(ncol(d) == 15)
names(d) <- c("AREA", "Edad", "Sexo", "Horas_trabajo", "Horas_sueno",
              "Ejercicio", "Estres", "Burnout", "Ansiedad", "Depresion",
              "Cafe", "Alcohol", "N_hijos", "Prevision_salud", "Colesterol")

# Variables categóricas como factor
d <- d %>%
  mutate(across(c(AREA, Sexo, Ejercicio, Alcohol, Prevision_salud), factor))

dim(d)
## [1] 1300   15
str(d)
## 'data.frame':    1300 obs. of  15 variables:
##  $ AREA           : Factor w/ 5 levels "Administración",..: 3 1 2 4 5 5 5 1 2 2 ...
##  $ Edad           : num  29 32 29 32 30 54 55 32 41 35 ...
##  $ Sexo           : Factor w/ 2 levels "Femenino","Masculino": 1 1 2 2 2 2 2 1 2 2 ...
##  $ Horas_trabajo  : num  41 48 42 49 42 45 42 51 53 46 ...
##  $ Horas_sueno    : num  5.98 5.75 6.3 6.15 6.04 ...
##  $ Ejercicio      : Factor w/ 2 levels "No","Sí": 2 1 1 2 1 1 2 2 1 1 ...
##  $ Estres         : num  4 2 2 4 1 3 1 2 3 3 ...
##  $ Burnout        : num  43 47 31 50 40 60 38 48 58 47 ...
##  $ Ansiedad       : num  8 5 6 8 4 7 5 13 3 7 ...
##  $ Depresion      : num  2 5 6 6 3 3 4 8 9 9 ...
##  $ Cafe           : num  1 3 3 0 2 2 3 2 3 3 ...
##  $ Alcohol        : Factor w/ 2 levels "No","Sí": 1 2 1 2 1 2 1 1 2 2 ...
##  $ N_hijos        : num  2 2 0 2 2 2 0 1 0 1 ...
##  $ Prevision_salud: Factor w/ 3 levels "Fonasa","Isapre",..: 1 2 1 2 1 1 1 2 3 1 ...
##  $ Colesterol     : num  192 215 224 188 231 ...
# Calidad de datos
cat("Valores perdidos por variable:\n"); print(colSums(is.na(d)))
## Valores perdidos por variable:
##            AREA            Edad            Sexo   Horas_trabajo     Horas_sueno 
##               0               0               0               0               0 
##       Ejercicio          Estres         Burnout        Ansiedad       Depresion 
##               0               0               0               0               0 
##            Cafe         Alcohol         N_hijos Prevision_salud      Colesterol 
##               0               0               0               0               0
cat("\nFilas duplicadas:", sum(duplicated(d)), "\n")
## 
## Filas duplicadas: 0

Lectura. La base tiene 1.300 filas y 15 variables, sin valores perdidos ni filas duplicadas. No se imputó ni se eliminó ningún dato. Los máximos de Estrés (9), Ansiedad (17) y Colesterol (270) son valores extremos pero plausibles dentro de cada escala; se conservan.

3 Objetivo 1. Estadística descriptiva y gestión de la base

3.1 Clasificación de variables

Variable Tipo Justificación
AREA Cualitativa nominal 5 categorías sin orden
Sexo Cualitativa nominal (dicotómica) Femenino / Masculino
Ejercicio Cualitativa nominal (dicotómica) Sí / No
Alcohol Cualitativa nominal (dicotómica) Sí / No
Previsión_salud Cualitativa nominal Fonasa / Isapre / Particular
Edad Cuantitativa continua (medida en años enteros) Se agrupa en intervalos
Horas_trabajo Cuantitativa discreta (horas enteras semanales) Muchos valores distintos: se agrupa en intervalos
Horas_sueno Cuantitativa continua Medida con decimales
Colesterol Cuantitativa continua mg/dL con decimales
Estrés Cuantitativa discreta Escala entera 1-9
Burnout Cuantitativa discreta (puntaje) Puntaje entero 20-85; se analiza como cuantitativa
Ansiedad Cuantitativa discreta (puntaje) Puntaje entero 3-17
Depresión Cuantitativa discreta (puntaje) Puntaje entero 2-13
Café Cuantitativa discreta (conteo) Tazas diarias 0-7
N_hijos Cuantitativa discreta (conteo) 0-4

3.2 Funciones auxiliares para tablas de frecuencias

Notación: \(n_i\) frecuencia absoluta, \(N_i\) absoluta acumulada, \(f_i\) relativa (%), \(F_i\) relativa acumulada (%).

# Variables cualitativas o cuantitativas discretas (una fila por valor)
tabla_frec <- function(x, nombre = "Valor") {
  t  <- table(x)
  ni <- as.vector(t)
  out <- data.frame(Valor = names(t), ni = ni, Ni = cumsum(ni),
                    fi = round(100 * ni / sum(ni), 2),
                    Fi = round(100 * cumsum(ni) / sum(ni), 2))
  names(out)[1] <- nombre
  out
}

# Variables cuantitativas continuas: intervalos por regla de Sturges
tabla_frec_int <- function(x, nombre = "Intervalo") {
  br  <- hist(x, breaks = "Sturges", plot = FALSE)$breaks
  cl  <- cut(x, breaks = br, include.lowest = TRUE, right = TRUE)
  ni  <- as.vector(table(cl))
  out <- data.frame(Intervalo = levels(cl),
                    Marca = (br[-length(br)] + br[-1]) / 2,
                    ni = ni, Ni = cumsum(ni),
                    fi = round(100 * ni / sum(ni), 2),
                    Fi = round(100 * cumsum(ni) / sum(ni), 2))
  names(out)[1] <- nombre
  out
}

# Resumen numérico
resumen_num <- function(x) {
  m <- mean(x); s <- sd(x)
  c(n = length(x), Media = m, DE = s, CV_pct = 100 * s / m,
    Min = min(x), Q1 = unname(quantile(x, .25)), Mediana = median(x),
    Q3 = unname(quantile(x, .75)), Max = max(x),
    Asimetria = mean((x - m)^3) / s^3)
}

3.3 Variables cualitativas

kable(tabla_frec(d$AREA, "Área"), caption = "Tabla 1. Distribución por área")
Tabla 1. Distribución por área
Área ni Ni fi Fi
Administración 266 266 20.46 20.46
Comercio 258 524 19.85 40.31
Educación 257 781 19.77 60.08
Ingeniería 217 998 16.69 76.77
Salud 302 1300 23.23 100.00
kable(tabla_frec(d$Sexo, "Sexo"), caption = "Tabla 2. Distribución por sexo")
Tabla 2. Distribución por sexo
Sexo ni Ni fi Fi
Femenino 724 724 55.69 55.69
Masculino 576 1300 44.31 100.00
kable(tabla_frec(d$Ejercicio, "Ejercicio"), caption = "Tabla 3. Práctica de ejercicio")
Tabla 3. Práctica de ejercicio
Ejercicio ni Ni fi Fi
No 592 592 45.54 45.54
Sí 708 1300 54.46 100.00
kable(tabla_frec(d$Alcohol, "Alcohol"), caption = "Tabla 4. Consumo de alcohol")
Tabla 4. Consumo de alcohol
Alcohol ni Ni fi Fi
No 755 755 58.08 58.08
Sí 545 1300 41.92 100.00
kable(tabla_frec(d$Prevision_salud, "Previsión"), caption = "Tabla 5. Previsión de salud")
Tabla 5. Previsión de salud
Previsión ni Ni fi Fi
Fonasa 769 769 59.15 59.15
Isapre 386 1155 29.69 88.85
Particular 145 1300 11.15 100.00

3.4 Variables cuantitativas continuas (intervalos de clase)

kable(tabla_frec_int(d$Edad, "Edad (años)"), caption = "Tabla 6. Edad")
Tabla 6. Edad
Edad (años) Marca ni Ni fi Fi
[24,26] 25 123 123 9.46 9.46
(26,28] 27 93 216 7.15 16.62
(28,30] 29 74 290 5.69 22.31
(30,32] 31 86 376 6.62 28.92
(32,34] 33 75 451 5.77 34.69
(34,36] 35 87 538 6.69 41.38
(36,38] 37 85 623 6.54 47.92
(38,40] 39 70 693 5.38 53.31
(40,42] 41 83 776 6.38 59.69
(42,44] 43 91 867 7.00 66.69
(44,46] 45 93 960 7.15 73.85
(46,48] 47 73 1033 5.62 79.46
(48,50] 49 62 1095 4.77 84.23
(50,52] 51 86 1181 6.62 90.85
(52,54] 53 77 1258 5.92 96.77
(54,56] 55 42 1300 3.23 100.00
kable(tabla_frec_int(d$Horas_trabajo, "Horas de trabajo"), caption = "Tabla 7. Horas de trabajo semanales")
Tabla 7. Horas de trabajo semanales
Horas de trabajo Marca ni Ni fi Fi
[34,36] 35 50 50 3.85 3.85
(36,38] 37 41 91 3.15 7.00
(38,40] 39 71 162 5.46 12.46
(40,42] 41 117 279 9.00 21.46
(42,44] 43 137 416 10.54 32.00
(44,46] 45 154 570 11.85 43.85
(46,48] 47 155 725 11.92 55.77
(48,50] 49 187 912 14.38 70.15
(50,52] 51 118 1030 9.08 79.23
(52,54] 53 97 1127 7.46 86.69
(54,56] 55 83 1210 6.38 93.08
(56,58] 57 47 1257 3.62 96.69
(58,60] 59 27 1284 2.08 98.77
(60,62] 61 10 1294 0.77 99.54
(62,64] 63 3 1297 0.23 99.77
(64,66] 65 3 1300 0.23 100.00
kable(tabla_frec_int(d$Horas_sueno, "Horas de sueño"), caption = "Tabla 8. Horas de sueño")
Tabla 8. Horas de sueño
Horas de sueño Marca ni Ni fi Fi
[4.5,5] 4.75 53 53 4.08 4.08
(5,5.5] 5.25 114 167 8.77 12.85
(5.5,6] 5.75 272 439 20.92 33.77
(6,6.5] 6.25 360 799 27.69 61.46
(6.5,7] 6.75 318 1117 24.46 85.92
(7,7.5] 7.25 142 1259 10.92 96.85
(7.5,8] 7.75 33 1292 2.54 99.38
(8,8.5] 8.25 8 1300 0.62 100.00
kable(tabla_frec_int(d$Colesterol, "Colesterol (mg/dL)"), caption = "Tabla 9. Colesterol")
Tabla 9. Colesterol
Colesterol (mg/dL) Marca ni Ni fi Fi
[160,170] 165 4 4 0.31 0.31
(170,180] 175 18 22 1.38 1.69
(180,190] 185 99 121 7.62 9.31
(190,200] 195 224 345 17.23 26.54
(200,210] 205 312 657 24.00 50.54
(210,220] 215 299 956 23.00 73.54
(220,230] 225 202 1158 15.54 89.08
(230,240] 235 102 1260 7.85 96.92
(240,250] 245 32 1292 2.46 99.38
(250,260] 255 7 1299 0.54 99.92
(260,270] 265 1 1300 0.08 100.00
kable(tabla_frec_int(d$Burnout, "Burnout (puntaje)"), caption = "Tabla 10. Puntaje de Burnout")
Tabla 10. Puntaje de Burnout
Burnout (puntaje) Marca ni Ni fi Fi
[20,25] 22.5 10 10 0.77 0.77
(25,30] 27.5 27 37 2.08 2.85
(30,35] 32.5 84 121 6.46 9.31
(35,40] 37.5 140 261 10.77 20.08
(40,45] 42.5 161 422 12.38 32.46
(45,50] 47.5 201 623 15.46 47.92
(50,55] 52.5 229 852 17.62 65.54
(55,60] 57.5 167 1019 12.85 78.38
(60,65] 62.5 157 1176 12.08 90.46
(65,70] 67.5 73 1249 5.62 96.08
(70,75] 72.5 31 1280 2.38 98.46
(75,80] 77.5 15 1295 1.15 99.62
(80,85] 82.5 5 1300 0.38 100.00

3.5 Variables cuantitativas discretas

kable(tabla_frec(d$Estres, "Estrés"), caption = "Tabla 11. Estrés")
Tabla 11. Estrés
Estrés ni Ni fi Fi
1 263 263 20.23 20.23
2 269 532 20.69 40.92
3 313 845 24.08 65.00
4 224 1069 17.23 82.23
5 165 1234 12.69 94.92
6 53 1287 4.08 99.00
7 12 1299 0.92 99.92
9 1 1300 0.08 100.00
kable(tabla_frec(d$Ansiedad, "Ansiedad"), caption = "Tabla 12. Ansiedad")
Tabla 12. Ansiedad
Ansiedad ni Ni fi Fi
3 69 69 5.31 5.31
4 76 145 5.85 11.15
5 98 243 7.54 18.69
6 152 395 11.69 30.38
7 200 595 15.38 45.77
8 196 791 15.08 60.85
9 159 950 12.23 73.08
10 127 1077 9.77 82.85
11 95 1172 7.31 90.15
12 73 1245 5.62 95.77
13 27 1272 2.08 97.85
14 15 1287 1.15 99.00
15 9 1296 0.69 99.69
16 3 1299 0.23 99.92
17 1 1300 0.08 100.00
kable(tabla_frec(d$Depresion, "Depresión"), caption = "Tabla 13. Depresión")
Tabla 13. Depresión
Depresión ni Ni fi Fi
2 47 47 3.62 3.62
3 86 133 6.62 10.23
4 109 242 8.38 18.62
5 183 425 14.08 32.69
6 225 650 17.31 50.00
7 227 877 17.46 67.46
8 191 1068 14.69 82.15
9 132 1200 10.15 92.31
10 56 1256 4.31 96.62
11 35 1291 2.69 99.31
12 7 1298 0.54 99.85
13 2 1300 0.15 100.00
kable(tabla_frec(d$Cafe, "Tazas de café"), caption = "Tabla 14. Consumo de café")
Tabla 14. Consumo de café
Tazas de café ni Ni fi Fi
0 38 38 2.92 2.92
1 140 178 10.77 13.69
2 339 517 26.08 39.77
3 429 946 33.00 72.77
4 250 1196 19.23 92.00
5 86 1282 6.62 98.62
6 17 1299 1.31 99.92
7 1 1300 0.08 100.00
kable(tabla_frec(d$N_hijos, "N° de hijos"), caption = "Tabla 15. Número de hijos")
Tabla 15. Número de hijos
N° de hijos ni Ni fi Fi
0 420 420 32.31 32.31
1 408 828 31.38 63.69
2 302 1130 23.23 86.92
3 132 1262 10.15 97.08
4 38 1300 2.92 100.00

3.6 Medidas resumen globales

vars_num <- c("Edad", "Horas_trabajo", "Horas_sueno", "Estres", "Burnout",
              "Ansiedad", "Depresion", "Cafe", "N_hijos", "Colesterol")
res_global <- t(sapply(d[vars_num], resumen_num))
kable(round(res_global, 2), caption = "Tabla 16. Medidas resumen de las variables cuantitativas")
Tabla 16. Medidas resumen de las variables cuantitativas
n Media DE CV_pct Min Q1 Mediana Q3 Max Asimetria
Edad 1300 39.30 9.22 23.45 24.0 31.00 39.0 47.00 55.0 0.02
Horas_trabajo 1300 47.48 5.97 12.57 35.0 43.00 47.0 51.00 65.0 0.07
Horas_sueno 1300 6.28 0.69 11.02 4.5 5.82 6.3 6.75 8.5 -0.05
Estres 1300 2.98 1.50 50.25 1.0 2.00 3.0 4.00 9.0 0.41
Burnout 1300 50.83 11.33 22.30 20.0 43.00 51.0 59.00 85.0 0.06
Ansiedad 1300 7.90 2.67 33.77 3.0 6.00 8.0 10.00 17.0 0.23
Depresion 1300 6.47 2.18 33.64 2.0 5.00 6.5 8.00 13.0 0.02
Cafe 1300 2.80 1.23 43.75 0.0 2.00 3.0 4.00 7.0 0.06
N_hijos 1300 1.20 1.09 90.73 0.0 0.00 1.0 2.00 4.0 0.61
Colesterol 1300 210.17 15.58 7.41 160.7 199.38 209.8 220.83 270.0 0.16

3.7 Perfil según área de desempeño

# Porcentaje por fila: dentro de cada área, qué proporción tiene cada categoría
pct_fila <- function(v) round(100 * prop.table(table(d$AREA, d[[v]]), 1), 1)

kable(pct_fila("Sexo"),            caption = "Tabla 17. Sexo por área (% de cada área)")
Tabla 17. Sexo por área (% de cada área)
Femenino Masculino
Administración 55.3 44.7
Comercio 54.3 45.7
Educación 58.0 42.0
Ingeniería 54.8 45.2
Salud 56.0 44.0
kable(pct_fila("Ejercicio"),       caption = "Tabla 18. Ejercicio por área (% de cada área)")
Tabla 18. Ejercicio por área (% de cada área)
No Sí
Administración 47.7 52.3
Comercio 42.6 57.4
Educación 44.7 55.3
Ingeniería 42.9 57.1
Salud 48.7 51.3
kable(pct_fila("Alcohol"),         caption = "Tabla 19. Alcohol por área (% de cada área)")
Tabla 19. Alcohol por área (% de cada área)
No Sí
Administración 54.9 45.1
Comercio 57.0 43.0
Educación 58.0 42.0
Ingeniería 59.0 41.0
Salud 61.3 38.7
kable(pct_fila("Prevision_salud"), caption = "Tabla 20. Previsión de salud por área (% de cada área)")
Tabla 20. Previsión de salud por área (% de cada área)
Fonasa Isapre Particular
Administración 60.5 25.9 13.5
Comercio 65.9 25.6 8.5
Educación 54.9 33.1 12.1
Ingeniería 60.4 28.6 11.1
Salud 55.0 34.4 10.6
perfil_num <- d %>%
  group_by(AREA) %>%
  summarise(n = n(),
            Edad = mean(Edad), Hrs_trabajo = mean(Horas_trabajo),
            Hrs_sueno = mean(Horas_sueno), Estres = mean(Estres),
            Burnout_media = mean(Burnout), Burnout_DE = sd(Burnout),
            Burnout_mediana = median(Burnout),
            Ansiedad = mean(Ansiedad), Depresion = mean(Depresion),
            Cafe = mean(Cafe), Colesterol = mean(Colesterol))
kable(perfil_num, digits = 2, caption = "Tabla 21. Perfil numérico por área (medias)")
Tabla 21. Perfil numérico por área (medias)
AREA n Edad Hrs_trabajo Hrs_sueno Estres Burnout_media Burnout_DE Burnout_mediana Ansiedad Depresion Cafe Colesterol
Administración 266 39.29 47.08 6.31 2.87 50.02 11.43 50 7.77 6.23 2.78 210.7
Comercio 258 38.95 47.84 6.26 2.95 50.74 11.23 51 7.80 6.79 2.88 209.8
Educación 257 39.58 47.58 6.31 2.99 50.49 11.50 51 8.19 6.28 2.67 211.6
Ingeniería 217 39.88 47.35 6.25 3.00 50.81 11.02 52 7.70 6.52 2.87 209.6
Salud 302 38.97 47.52 6.27 3.08 51.91 11.41 52 7.97 6.54 2.82 209.2

3.7.1 Gráficos descriptivos

ggplot(d, aes(x = reorder(AREA, AREA, function(x) -length(x)))) +
  geom_bar(fill = "#2C6E91") +
  geom_text(stat = "count", aes(label = after_stat(count)), vjust = -0.4) +
  labs(title = "Trabajadores por área de desempeño",
       x = "Área", y = "Frecuencia absoluta") +
  theme_minimal(base_size = 12)
Figura 1. Número de trabajadores por área

Figura 1. Número de trabajadores por área

d_largo <- d %>%
  select(AREA, Sexo, Ejercicio, Alcohol, Prevision_salud) %>%
  pivot_longer(-AREA, names_to = "Variable", values_to = "Categoria")

ggplot(d_largo, aes(x = AREA, fill = Categoria)) +
  geom_bar(position = "fill") +
  facet_wrap(~ Variable, ncol = 2) +
  scale_y_continuous(labels = scales::percent) +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Composición porcentual de cada área",
       x = "Área", y = "Porcentaje", fill = "Categoría") +
  theme_minimal(base_size = 11) +
  theme(axis.text.x = element_text(angle = 30, hjust = 1))
Figura 2. Composición de cada área según variables categóricas

Figura 2. Composición de cada área según variables categóricas

d %>%
  select(Edad, Horas_trabajo, Horas_sueno, Colesterol, Burnout) %>%
  pivot_longer(everything(), names_to = "Variable", values_to = "Valor") %>%
  ggplot(aes(x = Valor)) +
  geom_histogram(bins = 12, fill = "#2C6E91", color = "white") +
  facet_wrap(~ Variable, scales = "free", ncol = 3) +
  labs(title = "Distribución de variables cuantitativas",
       x = "Valor", y = "Frecuencia") +
  theme_minimal(base_size = 11)
Figura 3. Histogramas de variables continuas

Figura 3. Histogramas de variables continuas

d %>%
  select(Estres, Ansiedad, Depresion, Cafe, N_hijos) %>%
  pivot_longer(everything(), names_to = "Variable", values_to = "Valor") %>%
  ggplot(aes(x = factor(Valor))) +
  geom_bar(fill = "#E07A5F") +
  facet_wrap(~ Variable, scales = "free", ncol = 3) +
  labs(title = "Distribución de variables discretas",
       x = "Valor", y = "Frecuencia") +
  theme_minimal(base_size = 11)
Figura 4. Distribución de variables discretas

Figura 4. Distribución de variables discretas

p1 <- ggplot(d, aes(x = AREA, y = Burnout, fill = AREA)) +
  geom_boxplot(show.legend = FALSE) +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Burnout por área", x = "Área", y = "Puntaje de Burnout") +
  theme_minimal(base_size = 11) + theme(axis.text.x = element_text(angle = 30, hjust = 1))
p2 <- ggplot(d, aes(x = AREA, y = Horas_sueno, fill = AREA)) +
  geom_boxplot(show.legend = FALSE) +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Horas de sueño por área", x = "Área", y = "Horas de sueño") +
  theme_minimal(base_size = 11) + theme(axis.text.x = element_text(angle = 30, hjust = 1))
grid.arrange(p1, p2, ncol = 2)
Figura 5. Burnout y horas de sueño por área

Figura 5. Burnout y horas de sueño por área

3.7.2 Interpretación del Objetivo 1

  • Composición. La muestra tiene 1300 trabajadores; Salud es el área más numerosa (302; 23,2%) e Ingeniería la menos numerosa (217; 16,7%). Hay más mujeres (724; 55,7%) que hombres, más personas que hacen ejercicio (708; 54,5%) que las que no, y la mayoría no consume alcohol (755; 58,1%). Fonasa cubre al 59,2% (769), Isapre al 29,7% y Particular al 11,2%.
  • Burnout. Promedio de 50,8 puntos (DE 11,3; mediana 51; rango 20-85). La distribución es unimodal y aproximadamente simétrica (asimetría 0,06; Tabla 16). Estrés (0,41) y N_hijos (0,61) tienen asimetría positiva moderada; el resto es casi simétrico.
  • Sueño y trabajo. Se duerme en promedio 6,28 h (DE 0,69) y se trabaja 47,5 h semanales (DE 6,0; rango 35-65).
  • Entre áreas. Los perfiles son muy parecidos (Tablas 17-21 y Figura 5). Salud tiene el Burnout medio más alto (51,9) y Administración el más bajo (50,0), una diferencia de unos 2 puntos frente a una DE de 11. Esto se contrasta formalmente en el Objetivo 2.
  • Limitación. La descripción por área no permite inferir causas; solo muestra que la composición es similar entre áreas.

4 Objetivo 2. Comparación entre grupos

4.1 Estrategia

Para cada comparación se sigue el mismo protocolo:

  1. Normalidad de la variable dentro de cada grupo (Shapiro-Wilk, más gráficos Q-Q).
  2. Homocedasticidad (prueba de Levene, centrada en la mediana).
  3. Prueba paramétrica: t de Student si Levene no rechaza (p > 0,05) y Welch si rechaza; ANOVA para más de 2 grupos.
  4. Prueba no paramétrica equivalente: U de Mann-Whitney (2 grupos) o Kruskal-Wallis (más de 2).
  5. Tamaño del efecto (d de Cohen o eta cuadrado), porque con n = 1.300 casi cualquier diferencia mínima puede resultar significativa.

Nivel de significancia: \(\alpha = 0{,}05\).

Nota sobre normalidad. Con n grande, Shapiro-Wilk rechaza por desviaciones mínimas sin importancia práctica. Por eso se complementa con los gráficos Q-Q, y se reportan ambas familias de pruebas; si concuerdan, la conclusión es robusta.

4.2 Verificación de supuestos

qq_plot <- function(y, g, titulo) {
  ggplot(d, aes(sample = .data[[y]])) +
    stat_qq(size = 0.7, alpha = 0.5, color = "#2C6E91") + stat_qq_line(color = "#E07A5F") +
    facet_wrap(as.formula(paste("~", g))) +
    labs(title = titulo, x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
    theme_minimal(base_size = 10)
}
grid.arrange(
  qq_plot("Burnout",     "Sexo",      "Burnout por sexo"),
  qq_plot("Burnout",     "Ejercicio", "Burnout por ejercicio"),
  qq_plot("Horas_sueno", "Sexo",      "Sueño por sexo"),
  qq_plot("Horas_sueno", "Ejercicio", "Sueño por ejercicio"),
  ncol = 2)
Figura 6. Gráficos Q-Q de Burnout y horas de sueño por sexo y ejercicio

Figura 6. Gráficos Q-Q de Burnout y horas de sueño por sexo y ejercicio

# Compara una variable numérica (y) entre 2 grupos (g, factor)
comparar_2g <- function(dat, y, g) {
  f      <- as.formula(paste(y, "~", g))
  grupos <- split(dat[[y]], dat[[g]])
  niv    <- names(grupos)
  sw     <- sapply(grupos, function(x) shapiro.test(x)$p.value)
  lev_p  <- leveneTest(f, data = dat)[1, "Pr(>F)"]
  tt     <- t.test(f, data = dat, var.equal = lev_p > 0.05)
  mw     <- wilcox.test(f, data = dat, exact = FALSE)
  n1 <- length(grupos[[1]]); n2 <- length(grupos[[2]])
  sp <- sqrt(((n1 - 1) * var(grupos[[1]]) + (n2 - 1) * var(grupos[[2]])) / (n1 + n2 - 2))
  data.frame(
    Variable = y, Factor = g,
    Grupo1 = niv[1], Media1 = mean(grupos[[1]]),
    Grupo2 = niv[2], Media2 = mean(grupos[[2]]),
    p_Shapiro_1 = sw[1], p_Shapiro_2 = sw[2], p_Levene = lev_p,
    Prueba_t = ifelse(lev_p > 0.05, "Student", "Welch"),
    p_t = tt$p.value, p_MannWhitney = mw$p.value,
    d_Cohen = (mean(grupos[[1]]) - mean(grupos[[2]])) / sp,
    row.names = NULL)
}

# Formato de p-valores: evita mostrar "0.0000"
fp <- function(p) ifelse(p < 0.0001, "< 0.0001", sprintf("%.4f", p))

comp2 <- bind_rows(
  comparar_2g(d, "Burnout",     "Sexo"),
  comparar_2g(d, "Burnout",     "Ejercicio"),
  comparar_2g(d, "Horas_sueno", "Sexo"),
  comparar_2g(d, "Horas_sueno", "Ejercicio"))

kable(comp2[, c("Variable", "Factor", "Grupo1", "Media1", "Grupo2", "Media2", "d_Cohen")],
      digits = 3, caption = "Tabla 22. Medias por grupo y tamaño del efecto")
Tabla 22. Medias por grupo y tamaño del efecto
Variable Factor Grupo1 Media1 Grupo2 Media2 d_Cohen
Burnout Sexo Femenino 50.994 Masculino 50.615 0.034
Burnout Ejercicio No 55.066 Sí 47.281 0.731
Horas_sueno Sexo Femenino 6.303 Masculino 6.253 0.072
Horas_sueno Ejercicio No 6.265 Sí 6.293 -0.041
kable(comp2[, c("Variable", "Factor", "p_Shapiro_1", "p_Shapiro_2", "p_Levene")],
      digits = 4, caption = "Tabla 23. Supuestos: normalidad (Shapiro-Wilk por grupo) y homocedasticidad (Levene)")
Tabla 23. Supuestos: normalidad (Shapiro-Wilk por grupo) y homocedasticidad (Levene)
Variable Factor p_Shapiro_1 p_Shapiro_2 p_Levene
Burnout Sexo 0.0132 0.0838 0.8964
Burnout Ejercicio 0.1730 0.0032 0.8474
Horas_sueno Sexo 0.0254 0.6561 0.1948
Horas_sueno Ejercicio 0.2987 0.1562 0.0555
tab24 <- comp2[, c("Variable", "Factor", "Prueba_t", "p_t", "p_MannWhitney")]
tab24$p_t <- fp(tab24$p_t); tab24$p_MannWhitney <- fp(tab24$p_MannWhitney)
kable(tab24, caption = "Tabla 24. Pruebas de hipótesis (2 grupos)")
Tabla 24. Pruebas de hipótesis (2 grupos)
Variable Factor Prueba_t p_t p_MannWhitney
Burnout Sexo Student 0.5485 0.5727
Burnout Ejercicio Student < 0.0001 < 0.0001
Horas_sueno Sexo Student 0.2002 0.1049
Horas_sueno Ejercicio Student 0.4659 0.5307
bx <- function(y, g, tit, ylab) {
  ggplot(d, aes(x = .data[[g]], y = .data[[y]], fill = .data[[g]])) +
    geom_boxplot(show.legend = FALSE, width = 0.55) +
    stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "black") +
    scale_fill_brewer(palette = "Set2") +
    labs(title = tit, x = g, y = ylab) + theme_minimal(base_size = 11)
}
grid.arrange(
  bx("Burnout",     "Sexo",      "Burnout según sexo",      "Puntaje de Burnout"),
  bx("Burnout",     "Ejercicio", "Burnout según ejercicio", "Puntaje de Burnout"),
  bx("Horas_sueno", "Sexo",      "Sueño según sexo",        "Horas de sueño"),
  bx("Horas_sueno", "Ejercicio", "Sueño según ejercicio",   "Horas de sueño"),
  ncol = 2)
Figura 7. Burnout y horas de sueño según sexo y ejercicio

Figura 7. Burnout y horas de sueño según sexo y ejercicio

4.2.1 Hipótesis planteadas (2 grupos)

Para cada variable \(Y\) (Burnout, Horas de sueño) y cada factor (sexo, ejercicio): \(H_0: \mu_1 = \mu_2\) frente a \(H_1: \mu_1 \neq \mu_2\) (para Mann-Whitney, \(H_0\): misma distribución).

4.2.2 Interpretación (2 grupos)

  • Supuestos. Levene no rechaza homocedasticidad en ningún caso (todos los p > 0,05; el más cercano es sueño según ejercicio, p = 0,055). Shapiro-Wilk rechaza normalidad en algunos grupos (Burnout en mujeres, p = 0,013, y en quienes hacen ejercicio, p = 0,003; sueño en mujeres, p = 0,025), pero los Q-Q muestran desviaciones menores en las colas y con n de 592 a 724 por grupo el teorema central del límite respalda la prueba t. La no paramétrica se reporta como confirmación.
  • Burnout según sexo: no hay diferencia (50,99 vs 50,61; p = 0,55 en t de Student y 0,57 en Mann-Whitney; d de Cohen = 0,03).
  • Burnout según ejercicio: sí hay diferencia fuerte. Quienes no hacen ejercicio promedian 55,1 puntos y quienes sí, 47,3 (diferencia de 7,8 puntos; IC 95% de 6,6 a 8,9; p < 0,0001 en ambas pruebas; d de Cohen = 0,73, efecto mediano a grande). Ambas familias de pruebas concuerdan.
  • Horas de sueño según sexo y según ejercicio: sin diferencias (p entre 0,10 y 0,53 en todas las pruebas; diferencias de medias menores a 0,06 horas; |d| ≤ 0,07).
  • Cautela causal. La asociación entre ejercicio y Burnout no distingue entre “el ejercicio reduce el burnout” y “las personas con menos burnout hacen más ejercicio” (causalidad inversa), ni descarta confusión por variables no medidas.

4.3 Comparación entre más de dos grupos: áreas de desempeño

4.3.1 Hipótesis

\(H_0: \mu_{Admin} = \mu_{Comercio} = \mu_{Educación} = \mu_{Ingeniería} = \mu_{Salud}\) frente a \(H_1\): al menos una media difiere. Se aplica a Burnout y a Horas de sueño.

comparar_kg <- function(dat, y, g) {
  f   <- as.formula(paste(y, "~", g))
  sw  <- tapply(dat[[y]], dat[[g]], function(x) shapiro.test(x)$p.value)
  lev <- leveneTest(f, data = dat)[1, "Pr(>F)"]
  av  <- aov(f, data = dat)
  tab <- summary(av)[[1]]
  kw  <- kruskal.test(f, data = dat)
  list(shapiro = sw, levene = lev, anova = av, F = tab[1, "F value"],
       p_anova = tab[1, "Pr(>F)"],
       eta2 = tab[1, "Sum Sq"] / sum(tab[, "Sum Sq"]),
       kw = kw)
}

res_b <- comparar_kg(d, "Burnout", "AREA")
res_s <- comparar_kg(d, "Horas_sueno", "AREA")

kable(data.frame(
  Variable   = c("Burnout", "Horas_sueno"),
  p_Levene   = c(res_b$levene, res_s$levene),
  F_ANOVA    = c(res_b$F, res_s$F),
  p_ANOVA    = c(res_b$p_anova, res_s$p_anova),
  eta2       = c(res_b$eta2, res_s$eta2),
  chi2_KW    = c(res_b$kw$statistic, res_s$kw$statistic),
  p_KW       = c(res_b$kw$p.value, res_s$kw$p.value)),
  digits = 4, caption = "Tabla 25. Levene, ANOVA y Kruskal-Wallis por área")
Tabla 25. Levene, ANOVA y Kruskal-Wallis por área
Variable p_Levene F_ANOVA p_ANOVA eta2 chi2_KW p_KW
Burnout 0.9151 1.0810 0.3644 0.0033 3.0495 0.5496
Horas_sueno 0.2583 0.3997 0.8090 0.0012 0.9277 0.9206
kable(data.frame(Area = names(res_b$shapiro),
                 p_Shapiro_Burnout = as.numeric(res_b$shapiro),
                 p_Shapiro_Sueno   = as.numeric(res_s$shapiro)),
      digits = 4, caption = "Tabla 26. Normalidad (Shapiro-Wilk) por área")
Tabla 26. Normalidad (Shapiro-Wilk) por área
Area p_Shapiro_Burnout p_Shapiro_Sueno
Administración 0.2592 0.1813
Comercio 0.2109 0.0434
Educación 0.2861 0.3796
Ingeniería 0.3619 0.0940
Salud 0.0152 0.3312
# Comparaciones múltiples (confirmatorias: el omnibus no fue significativo)
TukeyHSD(res_b$anova)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = f, data = dat)
## 
## $AREA
##                               diff     lwr   upr  p adj
## Comercio-Administración    0.71388 -1.9909 3.419 0.9517
## Educación-Administración   0.47161 -2.2359 3.179 0.9895
## Ingeniería-Administración  0.78390 -2.0477 3.615 0.9429
## Salud-Administración       1.88473 -0.7181 4.488 0.2773
## Educación-Comercio        -0.24227 -2.9703 2.486 0.9992
## Ingeniería-Comercio        0.07002 -2.7812 2.921 1.0000
## Salud-Comercio             1.17085 -1.4534 3.795 0.7405
## Ingeniería-Educación       0.31229 -2.5415 3.166 0.9983
## Salud-Educación            1.41312 -1.2139 4.040 0.5826
## Salud-Ingeniería           1.10083 -1.6539 3.856 0.8109
pairwise.wilcox.test(d$Burnout, d$AREA, p.adjust.method = "bonferroni", exact = FALSE)
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  d$Burnout and d$AREA 
## 
##            Administración Comercio Educación Ingeniería
## Comercio   1.0            -        -         -         
## Educación  1.0            1.0      -         -         
## Ingeniería 1.0            1.0      1.0       -         
## Salud      0.9            1.0      1.0       1.0       
## 
## P value adjustment method: bonferroni

4.3.2 Interpretación (más de 2 grupos)

  • Supuestos. Levene no rechaza homocedasticidad entre áreas (Burnout p = 0,92; sueño p = 0,26).
  • Burnout por área: ANOVA F = 1,08, p = 0,364; Kruskal-Wallis p = 0,550; eta cuadrado = 0,003 (0,3% de la varianza). No hay evidencia de diferencias entre áreas.
  • Horas de sueño por área: ANOVA p = 0,809; Kruskal-Wallis p = 0,921. Sin diferencias.
  • Post hoc. Como el test global no fue significativo, Tukey y Wilcoxon con Bonferroni no se usan para decidir; se muestran para confirmar que ningún par supera el umbral (el menor p ajustado de Tukey es 0,28, Salud vs Administración).
  • Matiz. “No rechazar \(H_0\)” no prueba igualdad; indica que, con esta muestra, la diferencia entre áreas (a lo más unos 2 puntos, Salud vs Administración) no se distingue del azar.

5 Objetivo 3. Regresión lineal múltiple

5.1 Modelo

\[\text{Burnout}_i = \beta_0 + \beta_1\,\text{Horas\_trabajo}_i + \beta_2\,\text{Horas\_sueño}_i + \beta_3\,\text{Estrés}_i + \beta_4\,\text{Ansiedad}_i + \varepsilon_i,\qquad \varepsilon_i \sim N(0,\sigma^2)\]

5.2 Exploración previa

vars_reg <- c("Burnout", "Horas_trabajo", "Horas_sueno", "Estres", "Ansiedad")
kable(round(cor(d[vars_reg]), 3), caption = "Tabla 27. Matriz de correlaciones de Pearson")
Tabla 27. Matriz de correlaciones de Pearson
Burnout Horas_trabajo Horas_sueno Estres Ansiedad
Burnout 1.000 0.709 -0.162 0.604 0.196
Horas_trabajo 0.709 1.000 -0.035 0.159 0.066
Horas_sueno -0.162 -0.035 1.000 0.026 -0.003
Estres 0.604 0.159 0.026 1.000 0.336
Ansiedad 0.196 0.066 -0.003 0.336 1.000
d %>%
  select(all_of(vars_reg)) %>%
  pivot_longer(-Burnout, names_to = "Predictor", values_to = "Valor") %>%
  ggplot(aes(x = Valor, y = Burnout)) +
  geom_point(alpha = 0.25, color = "#2C6E91") +
  geom_smooth(method = "lm", color = "#E07A5F", se = TRUE) +
  facet_wrap(~ Predictor, scales = "free_x") +
  labs(title = "Relación entre Burnout y cada predictor",
       x = "Valor del predictor", y = "Puntaje de Burnout") +
  theme_minimal(base_size = 11)
Figura 8. Burnout frente a cada predictor

Figura 8. Burnout frente a cada predictor

5.3 Estimación

m <- lm(Burnout ~ Horas_trabajo + Horas_sueno + Estres + Ansiedad, data = d)
summary(m)
## 
## Call:
## lm(formula = Burnout ~ Horas_trabajo + Horas_sueno + Estres + 
##     Ansiedad, data = d)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -18.510  -3.831  -0.115   3.588  16.065 
## 
## Coefficients:
##               Estimate Std. Error t value            Pr(>|t|)    
## (Intercept)    -0.5553     1.8811   -0.30                0.77    
## Horas_trabajo   1.1833     0.0254   46.53 <0.0000000000000002 ***
## Horas_sueno    -2.5136     0.2164  -11.61 <0.0000000000000002 ***
## Estres          3.9067     0.1074   36.39 <0.0000000000000002 ***
## Ansiedad       -0.0819     0.0596   -1.37                0.17    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.39 on 1295 degrees of freedom
## Multiple R-squared:  0.774,  Adjusted R-squared:  0.773 
## F-statistic: 1.11e+03 on 4 and 1295 DF,  p-value: <0.0000000000000002
ic  <- confint(m)
# Coeficientes estandarizados (comparar la importancia relativa de los predictores)
m_z <- lm(scale(Burnout) ~ scale(Horas_trabajo) + scale(Horas_sueno) +
            scale(Estres) + scale(Ansiedad), data = d)
tab_coef <- data.frame(
  Coeficiente = names(coef(m)),
  Estimado = coef(m), EE = summary(m)$coefficients[, 2],
  IC_inf = ic[, 1], IC_sup = ic[, 2],
  p_valor = summary(m)$coefficients[, 4],
  Beta_estandarizado = c(NA, coef(m_z)[-1]), row.names = NULL)
tab_coef$p_valor <- fp(tab_coef$p_valor)
kable(tab_coef, digits = 4, caption = "Tabla 28. Coeficientes del modelo, IC 95% y betas estandarizados")
Tabla 28. Coeficientes del modelo, IC 95% y betas estandarizados
Coeficiente Estimado EE IC_inf IC_sup p_valor Beta_estandarizado
(Intercept) -0.5553 1.8811 -4.2458 3.135 0.7679 NA
Horas_trabajo 1.1833 0.0254 1.1334 1.233 < 0.0001 0.6229
Horas_sueno -2.5136 0.2164 -2.9382 -2.089 < 0.0001 -0.1535
Estres 3.9067 0.1074 3.6961 4.117 < 0.0001 0.5159
Ansiedad -0.0819 0.0596 -0.1988 0.035 0.1696 -0.0193
# Aporte de Ansiedad una vez controlado el resto (modelos anidados)
m_sin_ans <- update(m, . ~ . - Ansiedad)
anova(m_sin_ans, m)
cat("R2 ajustado con Ansiedad:", round(summary(m)$adj.r.squared, 4),
    "| sin Ansiedad:", round(summary(m_sin_ans)$adj.r.squared, 4), "\n")
## R2 ajustado con Ansiedad: 0.7735 | sin Ansiedad: 0.7733

5.4 Diagnóstico de supuestos

d_diag <- data.frame(ajustado = fitted(m), residuo = resid(m),
                     est = rstandard(m), cook = cooks.distance(m))
g1 <- ggplot(d_diag, aes(ajustado, residuo)) +
  geom_point(alpha = 0.3, color = "#2C6E91") + geom_hline(yintercept = 0, color = "#E07A5F") +
  geom_smooth(se = FALSE, color = "black", linewidth = 0.6) +
  labs(title = "Residuos vs ajustados", x = "Valores ajustados", y = "Residuos") + theme_minimal(base_size = 10)
g2 <- ggplot(d_diag, aes(sample = est)) + stat_qq(alpha = 0.4, color = "#2C6E91") +
  stat_qq_line(color = "#E07A5F") +
  labs(title = "Q-Q de residuos estandarizados", x = "Cuantiles teóricos", y = "Cuantiles muestrales") + theme_minimal(base_size = 10)
g3 <- ggplot(d_diag, aes(ajustado, sqrt(abs(est)))) +
  geom_point(alpha = 0.3, color = "#2C6E91") + geom_smooth(se = FALSE, color = "black", linewidth = 0.6) +
  labs(title = "Escala-ubicación", x = "Valores ajustados", y = "raíz |residuo estandarizado|") + theme_minimal(base_size = 10)
g4 <- ggplot(d_diag, aes(seq_along(cook), cook)) + geom_col(fill = "#2C6E91") +
  geom_hline(yintercept = 4 / nrow(d), linetype = 2, color = "#E07A5F") +
  labs(title = "Distancia de Cook (línea: 4/n)", x = "Observación", y = "Cook") + theme_minimal(base_size = 10)
grid.arrange(g1, g2, g3, g4, ncol = 2)
Figura 9. Diagnóstico gráfico de residuos

Figura 9. Diagnóstico gráfico de residuos

cat("--- Normalidad de residuos (Shapiro-Wilk) ---\n");  print(shapiro.test(resid(m)))
## --- Normalidad de residuos (Shapiro-Wilk) ---
## 
##  Shapiro-Wilk normality test
## 
## data:  resid(m)
## W = 1, p-value = 0.7
cat("--- Homocedasticidad (Breusch-Pagan) ---\n");       print(bptest(m))
## --- Homocedasticidad (Breusch-Pagan) ---
## 
##  studentized Breusch-Pagan test
## 
## data:  m
## BP = 2, df = 4, p-value = 0.7
cat("--- Autocorrelación (Durbin-Watson) ---\n");        print(dwtest(m))
## --- Autocorrelación (Durbin-Watson) ---
## 
##  Durbin-Watson test
## 
## data:  m
## DW = 2, p-value = 0.5
## alternative hypothesis: true autocorrelation is greater than 0
cat("--- Multicolinealidad (VIF) ---\n");                print(vif(m))
## --- Multicolinealidad (VIF) ---
## Horas_trabajo   Horas_sueno        Estres      Ansiedad 
##         1.028         1.002         1.153         1.128
cat("--- Observaciones con Cook > 4/n:", sum(d_diag$cook > 4 / nrow(d)),
    "| Cook máximo:", round(max(d_diag$cook), 4), "---\n")
## --- Observaciones con Cook > 4/n: 55 | Cook máximo: 0.0089 ---

5.5 Capacidad predictiva (validación fuera de muestra)

# 80% entrenamiento / 20% prueba; semilla fija para reproducibilidad
set.seed(2026)
idx   <- sample(nrow(d), size = round(0.8 * nrow(d)))
m_tr  <- lm(formula(m), data = d[idx, ])
pred  <- predict(m_tr, newdata = d[-idx, ])
obs   <- d$Burnout[-idx]
rmse  <- sqrt(mean((obs - pred)^2))
mae   <- mean(abs(obs - pred))
r2_te <- 1 - sum((obs - pred)^2) / sum((obs - mean(obs))^2)
kable(data.frame(RMSE = rmse, MAE = mae, R2_prueba = r2_te,
                 DE_Burnout = sd(d$Burnout)), digits = 3,
      caption = "Tabla 29. Desempeño en el 20% de prueba")
Tabla 29. Desempeño en el 20% de prueba
RMSE MAE R2_prueba DE_Burnout
5.613 4.511 0.76 11.33

5.5.1 Interpretación (regresión)

  • Ajuste global. \(R^2 = 0{,}774\) (ajustado 0,774); F(4; 1.295) = 1.110; p < 0,0001. El modelo explica cerca del 77% de la variabilidad de Burnout. El error estándar residual es 5,39 puntos, frente a una DE marginal de 11,3.
  • Horas de trabajo (\(\hat\beta_1 = 1{,}18\); p < 0,0001): cada hora semanal adicional se asocia a 1,18 puntos más de Burnout, manteniendo constantes sueño, estrés y ansiedad (IC 95%: 1,13 a 1,23). Es el predictor más fuerte (beta estandarizado 0,62).
  • Horas de sueño (\(\hat\beta_2 = -2{,}51\); p < 0,0001): cada hora adicional de sueño se asocia a 2,5 puntos menos de Burnout (IC 95%: -2,94 a -2,09); beta estandarizado -0,15.
  • Estrés (\(\hat\beta_3 = 3{,}91\); p < 0,0001): cada punto de estrés se asocia a 3,9 puntos más de Burnout; beta estandarizado 0,52 (segundo en importancia).
  • Ansiedad (\(\hat\beta_4 = -0{,}08\); p = 0,170): no significativa una vez controlado el resto; el IC 95% (-0,20 a 0,04) incluye el cero. Su correlación simple con Burnout (r = 0,20) desaparece al controlar por estrés, con el que está correlacionada (r = 0,34). Es una inferencia sobre estos datos: la ansiedad no aporta información adicional sobre Burnout más allá del estrés; no debe leerse como que la ansiedad sea “protectora” (el signo negativo no es distinguible de cero). El test de modelos anidados lo confirma (p = 0,170) y el R² ajustado no cambia al quitarla.
  • Intercepto (-0,56; p = 0,77): no tiene interpretación práctica (extrapola a horas de trabajo, sueño y estrés iguales a cero, fuera del rango observado).
  • Supuestos. Los residuos cumplen los supuestos: normalidad (Shapiro p = 0,683), varianza constante (Breusch-Pagan p = 0,732), sin autocorrelación (Durbin-Watson = 2,00; p = 0,515; la prueba solo es informativa si el orden de las filas fuese relevante) y sin multicolinealidad (VIF entre 1,00 y 1,15). 55 observaciones superan el umbral 4/n de Cook, pero es el umbral habitual de revisión, y ninguna es influyente en sentido práctico (Cook máximo muy inferior a 1).
  • Capacidad predictiva. En el 20% de prueba (n = 260) el modelo alcanza R² = 0,76 y RMSE = 5,6 puntos, frente a R² = 0,77 y error estándar residual de 5,4 en el ajuste completo (Tabla 29). La pérdida es mínima, por lo que el R² no es un artefacto de sobreajuste. Un error típico de ±5,6 puntos equivale a la mitad de la DE marginal de Burnout (11,3).
  • Alcance. Los coeficientes son asociaciones condicionales. Interpretarlos como efectos requeriría supuestos causales (sin confusión ni causalidad inversa) que este diseño no sustenta.

5.5.2 Verificación (extensión) de aporte de la variable “Ejercicio” al modelo

La comparación del Objetivo 2 mostró que el ejercicio se asocia fuertemente a Burnout. Se verifica si agrega información al modelo.

m_ext <- update(m, . ~ . + Ejercicio)
anova(m, m_ext)
cat("R2 ajustado base:", round(summary(m)$adj.r.squared, 4),
    "| con Ejercicio:", round(summary(m_ext)$adj.r.squared, 4), "\n")
## R2 ajustado base: 0.7735 | con Ejercicio: 0.8156
round(summary(m_ext)$coefficients, 4)
##               Estimate Std. Error t value Pr(>|t|)
## (Intercept)     2.4582     1.7064   1.441   0.1499
## Horas_trabajo   1.1870     0.0229  51.730   0.0000
## Horas_sueno    -2.4207     0.1954 -12.390   0.0000
## Estres          3.5228     0.0994  35.435   0.0000
## Ansiedad       -0.0833     0.0538  -1.549   0.1215
## EjercicioSí    -4.8081     0.2792 -17.221   0.0000

Lectura. Al incluir Ejercicio, su coeficiente es -4,81 puntos (p < 0,0001) y el R² ajustado sube de 0,774 a 0,816. Los demás coeficientes casi no cambian y Ansiedad sigue sin ser significativa (p = 0,12). Es decir, el ejercicio se asocia a menos Burnout incluso comparando personas con igual carga horaria, sueño y estrés. Esta extensión no forma parte de los objetivos; se incluye como hallazgo exploratorio.

6 Conclusiones

  1. Perfil. La muestra es balanceada entre cinco áreas (n entre 217 y 302) y los perfiles sociodemográficos, laborales y de salud son similares entre ellas. El Burnout promedia 50,8 puntos con variabilidad moderada.
  2. Comparaciones. El Burnout no difiere por sexo ni por área, y las horas de sueño no difieren por sexo, ejercicio ni área. La excepción es el ejercicio: quienes no lo practican tienen en promedio 7,8 puntos más de Burnout (d ≈ 0,73), resultado concordante entre prueba paramétrica y no paramétrica.
  3. Regresión. Horas de trabajo, horas de sueño y estrés son predictores significativos y explican el 77% de la variabilidad del Burnout; la ansiedad no aporta una vez controlado el estrés. Más horas de trabajo y más estrés se asocian a más Burnout; más sueño, a menos.
  4. Limitaciones. Diseño transversal y observacional (sin causalidad); independencia entre trabajadores asumida; escalas de puntaje tratadas como cuantitativas; no se conoce el instrumento de medición ni el muestreo, por lo que la generalización a otras poblaciones no está respaldada.
  5. Implicancia práctica. En esta muestra, la carga horaria y el estrés son los factores más fuertemente asociados al Burnout, y la práctica de ejercicio marca una diferencia visible; esto orienta dónde buscar intervenciones, que debieran evaluarse con un diseño que permita inferir causalidad.

7 Información de la sesión

sessionInfo()
## R version 4.6.1 (2026-06-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Spanish_Chile.utf8  LC_CTYPE=Spanish_Chile.utf8   
## [3] LC_MONETARY=Spanish_Chile.utf8 LC_NUMERIC=C                  
## [5] LC_TIME=Spanish_Chile.utf8    
## 
## time zone: America/Santiago
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] knitr_1.51      gridExtra_2.3.1 lmtest_0.9-40   zoo_1.9-1      
##  [5] car_3.1-5       carData_3.0-6   ggplot2_4.0.3   tidyr_1.3.2    
##  [9] dplyr_1.2.1     readxl_1.5.0   
## 
## loaded via a namespace (and not attached):
##  [1] Matrix_1.7-5       gtable_0.3.6       jsonlite_2.0.0     compiler_4.6.1    
##  [5] tidyselect_1.2.1   jquerylib_0.1.4    splines_4.6.1      scales_1.4.0      
##  [9] yaml_2.3.12        fastmap_1.2.0      lattice_0.22-9     R6_2.6.1          
## [13] labeling_0.4.3     generics_0.1.4     Formula_1.2-6      tibble_3.3.1      
## [17] bslib_0.12.0       pillar_1.11.1      RColorBrewer_1.1-3 rlang_1.3.0       
## [21] cachem_1.1.0       xfun_0.60          sass_0.4.10        S7_0.2.2          
## [25] otel_0.2.0         cli_3.6.6          mgcv_1.9-4         withr_3.0.3       
## [29] magrittr_2.0.5     digest_0.6.39      grid_4.6.1         rstudioapi_0.19.0 
## [33] nlme_3.1-169       lifecycle_1.0.5    vctrs_0.7.3        evaluate_1.0.5    
## [37] glue_1.8.1         farver_2.1.2       cellranger_1.1.0   abind_1.4-8       
## [41] rmarkdown_2.31     purrr_1.2.2        tools_4.6.1        pkgconfig_2.0.3   
## [45] htmltools_0.5.9