Pregunta Problema

¿En qué medida los niveles de estrés, la calidad del sueño, la actividad física, el uso de redes sociales y el acceso a terapia y apoyo emocional predicen la satisfacción con la vida y la presencia de ansiedad en adultos colombianos?

Objetivo General

Determinar la relación entre los niveles de estrés, calidad del sueño, actividad física, uso de redes sociales, red de apoyo emocional y terapia psicológica con la satisfacción con la vida y la presencia de ansiedad en una muestra de adultos colombianos.

Objetivos Específicos

  1. Evaluar la asociación entre la calidad del sueño y los niveles de estrés percibido en la muestra, controlando por edad, sexo y nivel educativo.
  2. Identificar el efecto combinado de la actividad física y la terapia psicológica sobre la reducción de la ansiedad reportada y el aumento de la satisfacción con la vida.

Análisis basado en una base de datos anónima con 100 registros (N=100), recolectados en contexto colombiano.

# Install if not already
install.packages("gt")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
install.packages("readxl")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
# Load libraries
library(readxl)
library(gt)

# Read your Excel file
data <- read_excel("Base_Psicologia_Bienestar.xlsx")

# Create a clean GT table
gt_table <- data %>%
  gt() %>%
  tab_header(
    title = "Base de Psicología y Bienestar",
    subtitle = "Vista general de los datos"
  ) %>%
  fmt_number(
    decimals = 2
  ) %>%
  opt_table_font(
    font = list(google_font("Roboto"))
  )

gt_table
Base de Psicología y Bienestar
Vista general de los datos
edad sexo nivel_educativo nivel_estres calidad_sueno realiza_actividad_fisica acude_terapia uso_redes_sociales_diario satisfaccion_vida red_apoyo_emocional ha_sufrido_ansiedad
32.00 Masculino Técnico 3.00 6.00 No 2.00 4.00 Media No
48.00 Femenino Postgrado 4.00 6.00 No 0.00 7.00 Alta
36.00 Femenino Técnico 2.00 8.00 No 5.00 7.00 Media
19.00 Otro Técnico 1.00 9.00 No 5.00 3.00 Baja
30.00 Femenino Postgrado 9.00 2.00 No 5.00 6.00 Alta
44.00 Femenino Postgrado 4.00 5.00 No 5.00 6.00 Baja
53.00 Masculino Técnico 10.00 5.00 No No 4.00 1.00 Alta
38.00 Femenino Postgrado 4.00 9.00 No No 5.00 10.00 Media
45.00 Masculino Bachillerato 4.00 6.00 No No 3.00 3.00 Alta No
35.00 Otro Bachillerato 10.00 1.00 No 0.00 3.00 Alta No
26.00 Masculino Bachillerato 10.00 8.00 No 2.00 7.00 Alta
34.00 Femenino Postgrado 10.00 8.00 No 3.00 5.00 Media No
51.00 Femenino Postgrado 1.00 7.00 No 1.00 8.00 Alta
19.00 Femenino Universitario 4.00 5.00 No 1.00 3.00 Alta
42.00 Masculino Bachillerato 6.00 10.00 No 3.00 3.00 Alta No
33.00 Femenino Bachillerato 5.00 10.00 No 0.00 4.00 Alta No
22.00 Masculino Técnico 2.00 5.00 No 2.00 2.00 Alta
51.00 Femenino Bachillerato 6.00 5.00 No 3.00 2.00 Baja
22.00 Masculino Técnico 9.00 8.00 No No 4.00 4.00 Alta
35.00 Masculino Universitario 9.00 10.00 4.00 5.00 Media No
21.00 Masculino Técnico 7.00 6.00 No 3.00 10.00 Media
19.00 Femenino Postgrado 6.00 8.00 No 3.00 2.00 Alta
43.00 Otro Bachillerato 3.00 10.00 3.00 5.00 Media
56.00 Femenino Bachillerato 2.00 5.00 No 2.00 7.00 Media No
47.00 Femenino Universitario 1.00 1.00 No 0.00 8.00 Baja No
23.00 Masculino Universitario 4.00 10.00 No 3.00 1.00 Baja
49.00 Otro Postgrado 10.00 1.00 No 5.00 5.00 Alta
22.00 Femenino Postgrado 3.00 6.00 No No 4.00 9.00 Media No
33.00 Masculino Técnico 7.00 2.00 No 5.00 10.00 Alta No
43.00 Femenino Universitario 1.00 10.00 No 5.00 3.00 Baja
60.00 Masculino Técnico 9.00 2.00 No No 3.00 3.00 Media No
45.00 Masculino Bachillerato 3.00 5.00 1.00 6.00 Alta
40.00 Femenino Bachillerato 6.00 4.00 4.00 10.00 Media No
58.00 Otro Postgrado 8.00 1.00 No No 1.00 9.00 Media
55.00 Masculino Postgrado 5.00 7.00 No 3.00 10.00 Media No
38.00 Femenino Universitario 4.00 5.00 No No 5.00 3.00 Baja
26.00 Femenino Postgrado 4.00 5.00 No No 4.00 10.00 Baja
51.00 Femenino Técnico 7.00 6.00 4.00 7.00 Baja
49.00 Masculino Postgrado 3.00 2.00 4.00 7.00 Media
22.00 Femenino Técnico 9.00 10.00 No No 1.00 2.00 Baja No
20.00 Femenino Universitario 5.00 7.00 4.00 8.00 Media No
56.00 Femenino Bachillerato 10.00 5.00 No 2.00 2.00 Alta
59.00 Masculino Bachillerato 8.00 7.00 No 4.00 8.00 Baja
60.00 Masculino Técnico 6.00 4.00 No 2.00 10.00 Alta No
56.00 Masculino Técnico 6.00 9.00 No No 1.00 3.00 Baja No
20.00 Femenino Bachillerato 9.00 1.00 No 2.00 8.00 Baja No
28.00 Masculino Universitario 7.00 9.00 No No 1.00 6.00 Media
43.00 Femenino Técnico 10.00 9.00 3.00 9.00 Media
51.00 Masculino Postgrado 4.00 5.00 No No 5.00 9.00 Baja No
45.00 Femenino Universitario 9.00 7.00 No 2.00 9.00 Alta No
36.00 Masculino Universitario 1.00 8.00 2.00 4.00 Baja No
51.00 Femenino Técnico 6.00 2.00 No 1.00 5.00 Alta No
23.00 Masculino Universitario 8.00 9.00 No 3.00 2.00 Baja No
39.00 Femenino Universitario 8.00 10.00 No 4.00 9.00 Baja No
59.00 Otro Técnico 3.00 3.00 No 1.00 8.00 Baja No
50.00 Masculino Técnico 8.00 5.00 No No 0.00 1.00 Alta
27.00 Masculino Universitario 5.00 1.00 No No 1.00 6.00 Alta
58.00 Masculino Postgrado 5.00 2.00 No 4.00 8.00 Baja No
18.00 Femenino Postgrado 4.00 7.00 No 4.00 5.00 Baja No
26.00 Masculino Bachillerato 9.00 5.00 No 0.00 2.00 Baja
22.00 Femenino Bachillerato 4.00 9.00 No 5.00 4.00 Alta No
29.00 Femenino Postgrado 6.00 3.00 No 2.00 10.00 Alta No
20.00 Masculino Bachillerato 3.00 1.00 No No 4.00 3.00 Baja
24.00 Masculino Universitario 3.00 5.00 No 0.00 2.00 Baja
37.00 Femenino Técnico 5.00 10.00 No 1.00 6.00 Baja
50.00 Femenino Técnico 8.00 9.00 No 2.00 5.00 Media No
52.00 Femenino Técnico 8.00 9.00 No 4.00 2.00 Baja
43.00 Masculino Postgrado 1.00 6.00 No 5.00 7.00 Alta No
60.00 Femenino Universitario 8.00 6.00 No 1.00 4.00 Alta
59.00 Masculino Bachillerato 10.00 10.00 0.00 9.00 Media
19.00 Femenino Postgrado 7.00 4.00 No 3.00 3.00 Media No
22.00 Otro Universitario 10.00 7.00 No 0.00 5.00 Baja No
52.00 Masculino Universitario 3.00 2.00 5.00 6.00 Baja
45.00 Masculino Técnico 3.00 1.00 1.00 8.00 Media
21.00 Masculino Universitario 5.00 1.00 No 1.00 5.00 Alta No
58.00 Femenino Técnico 9.00 7.00 No 4.00 6.00 Media No
56.00 Masculino Universitario 3.00 1.00 No 0.00 9.00 Baja
60.00 Masculino Bachillerato 2.00 4.00 No No 3.00 1.00 Baja
43.00 Femenino Bachillerato 1.00 1.00 No 2.00 3.00 Alta No
52.00 Masculino Postgrado 6.00 7.00 No No 0.00 8.00 Baja No
49.00 Masculino Bachillerato 10.00 8.00 No No 5.00 9.00 Alta No
27.00 Femenino Postgrado 1.00 9.00 No 3.00 5.00 Baja No
52.00 Femenino Técnico 1.00 1.00 No 1.00 6.00 Media No
55.00 Masculino Bachillerato 5.00 9.00 No 2.00 7.00 Alta
26.00 Femenino Técnico 10.00 10.00 No 2.00 6.00 Media
33.00 Masculino Postgrado 8.00 5.00 No 3.00 1.00 Baja No
43.00 Femenino Bachillerato 2.00 6.00 No No 3.00 8.00 Baja
57.00 Femenino Postgrado 7.00 4.00 1.00 7.00 Media No
23.00 Femenino Técnico 8.00 2.00 4.00 5.00 Media
46.00 Femenino Universitario 1.00 8.00 No No 1.00 4.00 Media
52.00 Masculino Técnico 7.00 1.00 No 1.00 2.00 Baja
29.00 Masculino Bachillerato 9.00 4.00 No 2.00 8.00 Baja
49.00 Femenino Bachillerato 5.00 4.00 No No 5.00 8.00 Media
30.00 Femenino Técnico 4.00 5.00 No 0.00 10.00 Baja No
52.00 Masculino Bachillerato 6.00 7.00 No 0.00 2.00 Baja
45.00 Masculino Universitario 6.00 9.00 No 0.00 6.00 Alta
57.00 Masculino Postgrado 3.00 5.00 No No 5.00 7.00 Alta
55.00 Masculino Bachillerato 3.00 4.00 No 1.00 9.00 Baja No
29.00 Femenino Universitario 4.00 5.00 No 5.00 8.00 Alta
52.00 Masculino Universitario 8.00 10.00 3.00 6.00 Baja
library(readxl)
library(ggplot2)

# Cargar tu base 
datos <- read_excel("Base_Psicologia_Bienestar.xlsx")
ggplot(datos, aes(x = sexo, fill = sexo)) +
  geom_bar() +
  labs(title = "Distribución por Sexo", x = "Sexo", y = "Frecuencia") +
  theme(legend.position = "none")

ggplot(datos, aes(x = edad)) +
  geom_histogram(binwidth = 5, fill = "skyblue", color = "black") +
  labs(title = "Distribución de la Edad", x = "Edad", y = "Frecuencia")

ggplot(datos, aes(x = uso_redes_sociales_diario)) +
  geom_histogram(binwidth = 1, fill = "coral", color = "black") +
  labs(title = "Uso diario de redes sociales", x = "Horas al día", y = "Frecuencia")

ggplot(datos, aes(x = nivel_educativo, fill = nivel_educativo)) +
  geom_bar() +
  labs(title = "Nivel educativo de los participantes", x = "Nivel educativo", y = "Frecuencia") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.position = "none")

ggplot(datos, aes(x = sexo, y = nivel_estres, fill = sexo)) +
  geom_boxplot() +
  labs(title = "Nivel de estrés según el sexo", x = "Sexo", y = "Nivel de estrés") +
  theme(legend.position = "none")

📊 Análisis del Nivel de Estrés por Sexo Este gráfico compara la distribución del nivel de estrés para tres categorías de sexo: Femenino, Masculino y Otro.

  1. 🧍‍♀️ Categoría “Femenino” (Caja Roja) Mediana (Línea central): El nivel de estrés promedio para esta categoría es de aproximadamente 5.0.

Rango Intercuartílico (Altura de la caja): La mayoría de las personas (el 50% central) tiene un nivel de estrés que va desde aproximadamente 4.0 (Q1) hasta 8.0 (Q3). El rango es relativamente amplio.

Rango Total (Bigotes): El nivel mínimo observado está alrededor de 1.0 y el nivel máximo es de 10.0.

  1. 🧍 Categoría “Masculino” (Caja Verde) Mediana (Línea central): El nivel de estrés promedio es más alto que en la categoría Femenino, ubicándose cerca de 6.0.

Rango Intercuartílico (Altura de la caja): El 50% central de los hombres tiene un nivel de estrés que va desde aproximadamente 3.0 (Q1) hasta 8.0 (Q3). Esto sugiere una mayor dispersión en los niveles más bajos de estrés en comparación con la categoría Femenino.

Rango Total (Bigotes): El nivel mínimo observado está alrededor de 1.0 y el nivel máximo es de 10.0.

  1. 👤 Categoría “Otro” (Caja Azul) Mediana (Línea central): Esta categoría presenta la mediana más alta, situada alrededor de 8.0.

Rango Intercuartílico (Altura de la caja): El 50% central de las personas en esta categoría tiene un nivel de estrés que va desde aproximadamente 3.0 (Q1) hasta 10.0 (Q3). La caja es la más ancha, indicando la mayor dispersión en los datos entre las tres categorías.

Rango Total (Bigotes): El nivel mínimo observado está alrededor de 3.0 y el nivel máximo es de 10.0. El valor mínimo es notablemente más alto que en las otras dos categorías.

💡 Conclusiones Clave Mediana del Estrés: La categoría “Otro” tiene el nivel de estrés mediano más alto (8.0), seguida por “Masculino” (6.0) y, finalmente, “Femenino” (5.0).

Dispersión: La categoría “Otro” muestra la mayor variabilidad en el nivel de estrés dentro del 50% central (el rango intercuartílico de 3.0 a 10.0).

Extremos Superiores: Las tres categorías tienen un nivel máximo de estrés de 10.0.

Extremos Inferiores: La categoría “Otro” tiene el nivel de estrés mínimo más alto (3.0), mientras que “Femenino” y “Masculino” tienen niveles mínimos de alrededor de 1.0.

Pruebas de hipótesis

A continuación se presentan cinco pruebas de hipótesis orientadas a analizar factores asociados al bienestar psicológico.


1 Asociación entre el sexo y haber sufrido ansiedad (Prueba Chi-cuadrado)

Hipótesis nula (H₀): No existe relación entre el sexo y haber sufrido ansiedad.
Hipótesis alternativa (H₁): Existe una relación significativa entre el sexo y haber sufrido ansiedad.

Técnica: Prueba Chi-cuadrado de independencia.
Justificación: Ambas variables (sexo y ha_sufrido_ansiedad) son categóricas, por lo que la prueba Chi-cuadrado permite determinar si existe una asociación estadísticamente significativa entre ellas.


# Verificar los valores únicos para evitar errores
table(datos$sexo)
## 
##  Femenino Masculino      Otro 
##        47        46         7
table(datos$ha_sufrido_ansiedad)
## 
## No Sí 
## 45 55
# Crear tabla de contingencia
tabla_ansiedad_sexo <- table(datos$sexo, datos$ha_sufrido_ansiedad)
tabla_ansiedad_sexo
##            
##             No Sí
##   Femenino  23 24
##   Masculino 19 27
##   Otro       3  4
# Aplicar prueba Chi-cuadrado
chisq_ansiedad_sexo <- chisq.test(tabla_ansiedad_sexo)
## Warning in chisq.test(tabla_ansiedad_sexo): Chi-squared approximation may be
## incorrect
chisq_ansiedad_sexo
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_ansiedad_sexo
## X-squared = 0.56105, df = 2, p-value = 0.7554

Resultado estadístico: El valor del estadístico Chi-cuadrado (X²) y su valor p (p-value) aparecen en el resultado anterior.

Interpretación:

Si p < 0.05, se rechaza la hipótesis nula, indicando que existe una relación significativa entre el sexo y haber sufrido ansiedad.

Si p > 0.05, no se rechaza la hipótesis nula, lo que sugiere que el sexo no influye significativamente en la probabilidad de haber sufrido ansiedad.

En otras palabras, esta prueba permite evaluar si las diferencias observadas en las proporciones de ansiedad entre hombres y mujeres son estadísticamente relevantes o solo producto del azar.

El test arrojó X^2 = 0.56 y p = 0.755, por lo que no existe una asociación significativa entre el sexo y haber sufrido ansiedad. Las diferencias entre grupos parecen explicarse por el azar, y el grupo “Otro” es muy pequeño para detectar efectos claros.

2. T-test: Satisfacción con la vida según acudir a terapia

# Preparación

datos$acude_terapia <- as.factor(datos$acude_terapia) # sí/no o 1/0
datos$satisfaccion_vida <- as.numeric(datos$satisfaccion_vida)

# Revisar conteos por grupo

table(datos$acude_terapia)
## 
## No Sí 
## 69 31
# Comprobar normalidad rápida por grupo (Shapiro) - opcional

by(datos$satisfaccion_vida, datos$acude_terapia, function(x) if(sum(!is.na(x))>=3) shapiro.test(x)$p.value else NA)
## datos$acude_terapia: No
## [1] 0.0003763074
## ------------------------------------------------------------ 
## datos$acude_terapia: Sí
## [1] 0.2508497
# T-test (Welch)

t_res_terapia <- t.test(satisfaccion_vida ~ acude_terapia, data = datos)
t_res_terapia
## 
##  Welch Two Sample t-test
## 
## data:  satisfaccion_vida by acude_terapia
## t = -1.7446, df = 75.055, p-value = 0.08515
## alternative hypothesis: true difference in means between group No and group Sí is not equal to 0
## 95 percent confidence interval:
##  -1.9706419  0.1305297
## sample estimates:
## mean in group No mean in group Sí 
##         5.434783         6.354839
# Extraer estadístico y p-value para reportar

t_stat <- t_res_terapia$statistic
p_val <- t_res_terapia$p.value
cat("t =", round(t_stat,3), ", p =", signif(p_val,4), "\n")
## t = -1.745 , p = 0.08515

Interpretación:

Si p < 0.05 → rechazamos H₀: la satisfacción media difiere entre quienes acuden a terapia y quienes no.

Si p ≥ 0.05 → no hay evidencia de diferencia en medias. Mira también la dirección de la diferencia en las medias (t_res_terapia$estimate).

La satisfacción media fue mayor en quienes van a terapia (6.35 vs 5.43), pero la prueba t (p = 0.085) mostró que la diferencia no es estadísticamente significativa. Hay una tendencia, pero no suficiente evidencia al 5%.

3. ANOVA: Nivel de estrés según nivel educativo (con Tukey)

H₀: Las medias de nivel_estres son iguales en todos los niveles educativos. H₁: Al menos un grupo difiere.

Técnica: ANOVA de una vía + Tukey HSD si es significativo. Justificación: Comparar medias de una variable numérica entre 3+ grupos (nivel educativo).

# Preparación

datos$nivel_educativo <- as.factor(datos$nivel_educativo)
datos$nivel_estres <- as.numeric(datos$nivel_estres)

# Revisar tamaños por grupo

table(datos$nivel_educativo)
## 
##  Bachillerato     Postgrado       Técnico Universitario 
##            26            24            27            23
# ANOVA clásico

anova_educ <- aov(nivel_estres ~ nivel_educativo, data = datos)
summary(anova_educ)
##                 Df Sum Sq Mean Sq F value Pr(>F)
## nivel_educativo  3   23.0   7.678   0.939  0.425
## Residuals       96  785.2   8.179
# Si p < 0.05, Tukey HSD

if(summary(anova_educ)[[1]]$`Pr(>F)`[1] < 0.05){
tukey_educ <- TukeyHSD(anova_educ)
print(tukey_educ)
} else {
cat("ANOVA no significativo: no se ejecuta Tukey.\n")
}
## ANOVA no significativo: no se ejecuta Tukey.
# Visualización

library(ggplot2)
ggplot(datos, aes(x = nivel_educativo, y = nivel_estres, fill = nivel_educativo)) +
geom_boxplot() +
labs(title = "Nivel de estrés por nivel educativo", x = "Nivel educativo", y = "Nivel de estrés") +
theme(axis.text.x = element_text(angle = 35, hjust = 1), legend.position = "none")

Interpretación:

ANOVA → mira el F y p. Si p < 0.05, hay diferencias; el test Tukey te dirá qué pares difieren (p adj < 0.05).

Si los supuestos no se cumplen (normalidad/homocedasticidad muy rotos), considerar Kruskal-Wallis (no paramétrica).

El ANOVA obtuvo p = 0.425, indicando que no hay diferencias significativas en el nivel de estrés entre los cuatro niveles educativos. Las variaciones observadas entre grupos no son estadísticamente confiables.

4. Correlación de Pearson: Nivel de estrés y uso diario de redes sociales

H₀: La correlación entre nivel_estres y uso_redes_sociales_diario es 0. H₁: La correlación es distinta de 0.

Técnica: Correlación de Pearson (si ambas variables son aproximadamente continuas y lineales). Justificación: Medir la fuerza y dirección de la relación lineal entre dos variables numéricas.

# Preparación

datos$uso_redes_sociales_diario <- as.numeric(datos$uso_redes_sociales_diario)
datos$nivel_estres <- as.numeric(datos$nivel_estres)

# Eliminamos pares NA

ok <- complete.cases(datos$nivel_estres, datos$uso_redes_sociales_diario)
summary(ok)
##    Mode    TRUE 
## logical     100
cor_test <- cor.test(datos$nivel_estres[ok], datos$uso_redes_sociales_diario[ok], method = "pearson")
cor_test
## 
##  Pearson's product-moment correlation
## 
## data:  datos$nivel_estres[ok] and datos$uso_redes_sociales_diario[ok]
## t = -0.47778, df = 98, p-value = 0.6339
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.2423304  0.1496280
## sample estimates:
##         cor 
## -0.04820687
# Extraer r y p

r_val <- cor_test$estimate
p_cor <- cor_test$p.value
cat("r =", round(r_val,3), ", p =", signif(p_cor,4), "\n")
## r = -0.048 , p = 0.6339
# Gráfico de dispersión con línea de regresión

ggplot(datos[ok,], aes(x = uso_redes_sociales_diario, y = nivel_estres)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = TRUE) +
labs(title = "Correlación: estrés vs horas en redes sociales", x = "Horas diarias en redes sociales", y = "Nivel de estrés")
## `geom_smooth()` using formula = 'y ~ x'

Interpretación:

r indica fuerza y dirección (positivo → más uso = más estrés; negativo → más uso = menos estrés).

p < 0.05 → correlación significativa.

La correlación fue muy baja (r = −0.048) y no significativa (p = 0.633). Por lo tanto, no existe relación lineal entre horas de uso de redes y el nivel de estrés en esta muestra.

5. Regresión logística: Factores asociados a acudir a terapia

H₀: Ninguno de los predictores afecta la probabilidad de acudir a terapia H₁: Al menos uno de ellos sí influye significativamente

# --- Preparación de variables ---

if(!is.numeric(datos$acude_terapia)){
  datos$acude_terapia <- as.factor(datos$acude_terapia)
  if(all(levels(datos$acude_terapia) %in% c("no","si","No","Si","NO","SI","Sí","sí"))){
    datos$acude_terapia_num <- ifelse(tolower(as.character(datos$acude_terapia)) %in% c("si","sí"), 1, 0)
  } else {
    datos$acude_terapia_num <- as.numeric(as.character(datos$acude_terapia))
  }
} else {
  datos$acude_terapia_num <- datos$acude_terapia
}

# Convertir predictores
datos$nivel_estres <- as.numeric(datos$nivel_estres)
datos$uso_redes_sociales_diario <- as.numeric(datos$uso_redes_sociales_diario)
datos$realiza_actividad_fisica <- as.factor(datos$realiza_actividad_fisica)

# Verificar niveles
print(unique(datos$realiza_actividad_fisica))
## [1] Sí No
## Levels: No Sí
# Ajustar modelo logístico
mod_terapia <- glm(acude_terapia_num ~ nivel_estres + uso_redes_sociales_diario + realiza_actividad_fisica,
                   data = datos, family = binomial(link = "logit"))

summary(mod_terapia)
## 
## Call:
## glm(formula = acude_terapia_num ~ nivel_estres + uso_redes_sociales_diario + 
##     realiza_actividad_fisica, family = binomial(link = "logit"), 
##     data = datos)
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)  
## (Intercept)                -0.35728    0.65007  -0.550   0.5826  
## nivel_estres                0.03153    0.07798   0.404   0.6859  
## uso_redes_sociales_diario  -0.07210    0.13094  -0.551   0.5819  
## realiza_actividad_fisicaSí -0.76061    0.44213  -1.720   0.0854 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 123.82  on 99  degrees of freedom
## Residual deviance: 120.36  on 96  degrees of freedom
## AIC: 128.36
## 
## Number of Fisher Scoring iterations: 4
# Calcular odds ratios (OR) y intervalos de confianza
coef_est <- coef(mod_terapia)
or <- exp(coef_est)
ci <- tryCatch(exp(confint(mod_terapia)), error = function(e) NA)
## Waiting for profiling to be done...
if(!is.na(ci)[1]){
  result_table <- data.frame(
    Predictor = names(coef_est),
    Estimate = round(coef_est, 3),
    OR = round(or, 3),
    CI_lower = round(ci[,1], 3),
    CI_upper = round(ci[,2], 3),
    p_value = round(summary(mod_terapia)$coefficients[,4], 4)
  )
} else {
  result_table <- data.frame(
    Predictor = names(coef_est),
    Estimate = round(coef_est, 3),
    OR = round(or, 3),
    p_value = round(summary(mod_terapia)$coefficients[,4], 4)
  )
}

print(result_table)
##                                             Predictor Estimate    OR CI_lower
## (Intercept)                               (Intercept)   -0.357 0.700    0.190
## nivel_estres                             nivel_estres    0.032 1.032    0.885
## uso_redes_sociales_diario   uso_redes_sociales_diario   -0.072 0.930    0.717
## realiza_actividad_fisicaSí realiza_actividad_fisicaSí   -0.761 0.467    0.194
##                            CI_upper p_value
## (Intercept)                   2.490  0.5826
## nivel_estres                  1.205  0.6859
## uso_redes_sociales_diario     1.203  0.5819
## realiza_actividad_fisicaSí    1.110  0.0854
# --- Interpretación automática ---
cat("\n### Interpretación automática\n")
## 
## ### Interpretación automática
for(i in 2:nrow(result_table)){
  pval <- result_table$p_value[i]
  or_val <- result_table$OR[i]
  varname <- result_table$Predictor[i]
  
  if(pval < 0.05){
    cat(varname, "→ efecto significativo (p =", pval, "), OR =", or_val,
        ifelse(or_val > 1, "(mayor probabilidad de acudir a terapia)\n", "(menor probabilidad de acudir a terapia)\n"))
  } else {
    cat(varname, "→ no significativo (p =", pval, ")\n")
  }
}
## nivel_estres → no significativo (p = 0.6859 )
## uso_redes_sociales_diario → no significativo (p = 0.5819 )
## realiza_actividad_fisicaSí → no significativo (p = 0.0854 )

Interpretación: Si nivel_estres tiene un OR > 1 y p < 0.05, significa que el estrés alto aumenta la probabilidad de acudir a terapia.

Si realiza_actividad_fisica (sí) tiene un OR < 1, podría interpretarse como un factor protector.

Si uso_redes_sociales_diario muestra significancia, indicaría una relación directa o inversa según su dirección.

Ninguno de los predictores (estrés, uso de redes, actividad física) fue significativo al 5%. La actividad física mostró una leve tendencia (p = 0.085), pero en general el modelo no identifica factores que predigan acudir a terapia.

Conclusión

El grupo muestra un patrón de agotamiento emocional generalizado. Los factores que más favorecen el bienestar son la práctica de actividad física, el descanso adecuado y contar con una red de apoyo emocional. La gestión preventiva del estrés y un uso más equilibrado de las redes sociales son aspectos clave para mejorar la salud mental y la calidad de vida.