Psicólogo, Esp. medición y evaluación psicológica y mg. bioestadística
2 Exploración base de datos
Ver código
library(readxl)BASE <-read_excel("ACTITUDES HACIA LOS GRUPOS BALINT Y SU INFLUENCIA EN EL BIENESTAR PSICOSOCIAL(1-177).xlsx") # 5-08-2026library(dplyr) library(dlookr)library(DT)library(janitor)BASE <- BASE %>%clean_names() # Convierte todo a snake_case automáticamentelibrary(labelled)diagnose(BASE) %>%mutate(across(where(is.numeric), ~round(., 1))) %>%#redondear a 1datatable(options =list(pageLength =25))
library(gtsummary)tabla0 <- BASE %>%select(ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado, durante_cuanto_tiempo_ha_participado_en_grupos_balint, a_durante_mis_estudios_de_pregrado, b_durante_la_residencia_medica,c_como_especialista_subespecialista, d_durante_mis_estudios_para_subespecialista, e_como_auxiliar_de_enfermeria_enfermer, f_como_administrativo, genero, grupo_profesional, profesion_unificada, especialidad_unificada, anos_de_ejercicio_profesional, esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo, participa_en_actividades_docentes, edad2) %>%tbl_summary(type =list(all_categorical() ~"categorical", edad2 ~"continuous" ),label =list( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado ~"Participación actual o pasada en grupo balint", durante_cuanto_tiempo_ha_participado_en_grupos_balint ~"Tiempo participación grpo balint", a_durante_mis_estudios_de_pregrado ~"Durante pregrado", b_durante_la_residencia_medica ~"Durante Residencia médica", c_como_especialista_subespecialista ~"Como Especialista - subespecialista", d_durante_mis_estudios_para_subespecialista ~"Durante estudios subespecialidad", e_como_auxiliar_de_enfermeria_enfermer ~"Como auxiliar de enfermería", f_como_administrativo ~"Como administrativo", genero ~"Género", grupo_profesional ~"Grupo profesional", profesion_unificada ~"Profesion", especialidad_unificada ~"Especialidad", anos_de_ejercicio_profesional ~"Años ejercicio profesional", esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo ~"Desempeño trabajo en que el tenga personal a cargo", participa_en_actividades_docentes ~"Partiipación act. docente", edad2 ~"Edad" ),statistic =list(all_categorical() ~"{n} ({p}%)", edad2 ~"{mean} ({sd})" ),digits =list(all_categorical() ~1, edad2 ~1 ),missing ="ifany",missing_text ="Sin dato" ) %>%modify_header(label ~"**Variable**") %>%bold_labels() %>%modify_caption("**Tabla 1**")tabla0
Tabla 1
Variable
N = 1771
Participación actual o pasada en grupo balint
Actualmente participo en un grupo Balint.
80.0 (45.2%)
He participado en un grupo Balint en el pasado.
84.0 (47.5%)
Nunca he participado en un grupo Balint.
13.0 (7.3%)
Tiempo participación grpo balint
De 1 a 2 años.
49.0 (27.7%)
De 2 a 3 años
10.0 (5.6%)
Más de 3 años.
34.0 (19.2%)
Menos de un año.
84.0 (47.5%)
Durante pregrado
NO
168.0 (94.9%)
SI
9.0 (5.1%)
Durante Residencia médica
NO
118.0 (66.7%)
SI
59.0 (33.3%)
Como Especialista - subespecialista
NO
140.0 (79.1%)
SI
37.0 (20.9%)
Durante estudios subespecialidad
NO
173.0 (97.7%)
SI
4.0 (2.3%)
Como auxiliar de enfermería
NO
139.0 (78.5%)
SI
38.0 (21.5%)
Como administrativo
NO
132.0 (74.6%)
SI
45.0 (25.4%)
Género
Femenino
133.0 (75.1%)
Masculino
44.0 (24.9%)
Grupo profesional
Profesionales médicos
93.0 (52.5%)
Enfermería
52.0 (29.4%)
Otros
32.0 (18.1%)
Profesion
Administrativo
23.0 (13.0%)
Asistencial
1.0 (0.6%)
Auxiliar de enfermería
8.0 (4.5%)
Bióloga
1.0 (0.6%)
Citohistotecnóloga
1.0 (0.6%)
Desconocido
1.0 (0.6%)
Enfermero(a)
44.0 (24.9%)
Fisioterapeuta
1.0 (0.6%)
Ingeniero de sistemas
1.0 (0.6%)
Instrumentadora quirúrgica
1.0 (0.6%)
Médica General
1.0 (0.6%)
Médico especialista
37.0 (20.9%)
Médico general
6.0 (3.4%)
Químico farmacéutico
2.0 (1.1%)
Residente de medicina
49.0 (27.7%)
Especialidad
Anestesiología
5.0 (6.5%)
Cirugía general
1.0 (1.3%)
Cirugía pediátrica
1.0 (1.3%)
Cuidados paliativos
7.0 (9.1%)
Desconocido
1.0 (1.3%)
Geriatría
2.0 (2.6%)
Hematología
2.0 (2.6%)
Medicina de urgencias/emergencias
9.0 (11.7%)
Medicina familiar
9.0 (11.7%)
Medicina general
7.0 (9.1%)
Medicina interna
6.0 (7.8%)
Neonatología
2.0 (2.6%)
Neumología pediátrica
1.0 (1.3%)
Patología
2.0 (2.6%)
Pediatría
7.0 (9.1%)
Psiquiatría
3.0 (3.9%)
Radiología
5.0 (6.5%)
Radioterapia
1.0 (1.3%)
Urología
6.0 (7.8%)
Sin dato
100
Años ejercicio profesional
11-19 años
47.0 (26.6%)
6-10 años
31.0 (17.5%)
Hasta 5 años
57.0 (32.2%)
Más de 20 años.
42.0 (23.7%)
Desempeño trabajo en que el tenga personal a cargo
No
100.0 (56.5%)
Sí
77.0 (43.5%)
Partiipación act. docente
No
110.0 (62.1%)
Sí
67.0 (37.9%)
Edad
37.4 (8.7)
Sin dato
11
1 n (%); Mean (SD)
4 Análisis descriptivo items como variables cuantitativas
Ver código
tabla_i4 <- BASE %>%select( i4_1, i4_2, i4_3, i4_4, i4_5, i4_6, i4_7, i4_8, i4_9, i4_10, i4_11, i4_12, i4_13, i4_14, i4_15, i5_1 ) %>%tbl_summary(type =list(everything() ~"continuous2" ),label =list( i4_1 ~"4.1 El GB mejoró mis relaciones con los pacientes", i4_2 ~"4.2 El GB me ayudó a establecer una relación de apoyo con mis colegas", i4_3 ~"4.3 El GB mejoró mis relaciones con otros miembros del equipo multidisciplinario.", i4_4 ~"4.4 El GB me proporcionó habilidades para la resolución de problemas en el entorno profesional.", i4_5 ~"4.5 El GB me ayudó a aliviar el agotamiento profesional (burnout).", i4_6 ~"4.6 El GB facilitó un mejor manejo de los pacientes (o usuarios) en mi consulta o atención.", i4_7 ~"4.7 El GB mejoró mis habilidades de empatía hacia los pacientes (o usuarios).", i4_8 ~"4.8 El GB me hizo sentir satisfecho(a).", i4_9 ~"4.9 Mi preocupación por el autocuidado fue abordada en el GB.", i4_10 ~"4.10 El GB se convirtió en una valiosa red de apoyo profesional para mí.", i4_11 ~"4.11 El GB contribuyó al desarrollo de mi identidad profesional.", i4_12 ~"4.12 Las discusiones en el GB me resultaron aburridas.", i4_13 ~"4.13 Las discusiones en el GB son superficiales.", i4_14 ~"4.14 Me sentí incómodo(a) al compartir mis casos en el GB.", i4_15 ~"4.15 La orientación brindada en el GB no fue profesional.", i5_1 ~"5.1 ¿Qué tan importante considera que es la participación en el Grupo Balint para su bienestar profesional?" ),statistic =everything() ~c("{mean} ({sd})","{median} ({p25}, {p75})" ),digits =everything() ~1,missing ="ifany",missing_text ="Sin dato" ) %>%modify_header(label ~"**Ítem**") %>%bold_labels() %>%modify_caption("**Tabla 2. Descripción de ítems**")tabla_i4
Tabla 2. Descripción de ítems
Ítem
N = 177
4.1 El GB mejoró mis relaciones con los pacientes
Mean (SD)
3.6 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.2 El GB me ayudó a establecer una relación de apoyo con mis colegas
Mean (SD)
3.8 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.3 El GB mejoró mis relaciones con otros miembros del equipo multidisciplinario.
Mean (SD)
3.7 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.4 El GB me proporcionó habilidades para la resolución de problemas en el entorno profesional.
Mean (SD)
3.8 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.5 El GB me ayudó a aliviar el agotamiento profesional (burnout).
Mean (SD)
3.7 (1.4)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.6 El GB facilitó un mejor manejo de los pacientes (o usuarios) en mi consulta o atención.
Mean (SD)
3.6 (1.2)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.7 El GB mejoró mis habilidades de empatía hacia los pacientes (o usuarios).
Mean (SD)
3.8 (1.2)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.8 El GB me hizo sentir satisfecho(a).
Mean (SD)
3.8 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.9 Mi preocupación por el autocuidado fue abordada en el GB.
Mean (SD)
3.6 (1.4)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.10 El GB se convirtió en una valiosa red de apoyo profesional para mí.
Mean (SD)
3.6 (1.4)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.11 El GB contribuyó al desarrollo de mi identidad profesional.
Mean (SD)
3.5 (1.3)
Median (Q1, Q3)
4.0 (3.0, 5.0)
4.12 Las discusiones en el GB me resultaron aburridas.
Mean (SD)
2.1 (1.4)
Median (Q1, Q3)
1.0 (1.0, 3.0)
4.13 Las discusiones en el GB son superficiales.
Mean (SD)
2.1 (1.4)
Median (Q1, Q3)
1.0 (1.0, 3.0)
4.14 Me sentí incómodo(a) al compartir mis casos en el GB.
Mean (SD)
2.2 (1.5)
Median (Q1, Q3)
2.0 (1.0, 3.0)
4.15 La orientación brindada en el GB no fue profesional.
Mean (SD)
1.9 (1.4)
Median (Q1, Q3)
1.0 (1.0, 3.0)
5.1 ¿Qué tan importante considera que es la participación en el Grupo Balint para su bienestar profesional?
Mean (SD)
2.5 (1.5)
Median (Q1, Q3)
2.0 (1.0, 4.0)
5 Gráfico Likert de respuesta
Ver código
library(likert)library(ggplot2)datos_likert <- BASE %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")library(ggstats)gglikert_stacked(datos_likert, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )
5.1 Gráfico para profesionales de medicina
Ver código
BASE_MED <- BASE %>%filter(grupo_profesional =="Profesionales médicos")datos_likert_MED <- BASE_MED %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert_MED) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")gglikert_stacked(datos_likert_MED, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint profesionales medicina (n = 93)") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )
5.2 Gráfico profesionales de enfermería
Ver código
BASE_ENF <- BASE %>%filter(grupo_profesional =="Enfermería")datos_likert_ENF <- BASE_ENF %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert_ENF) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")gglikert_stacked(datos_likert_ENF, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint profesionales Enfermería (n = 52)") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )
Recodificando los valores de los items aparentemente invertidos
Ver código
BASE <- BASE %>%mutate(across(c(i4_12, i4_13, i4_14, i4_15), ~6- .) )
Bartlett test of homogeneity of variances
data: BASE[, 15:30]
Bartlett's K-squared = 18.759, df = 15, p-value = 0.2249
Ver código
library(corrplot)library(Hmisc)# Correlación de Spearmanres <-rcorr(as.matrix(BASE[,15:30]), type ="spearman")cor_matrix <- res$r# Paleta de colores suave (rojo-blanco-azul)mis_colores <-colorRampPalette(c("salmon", "white", "skyblue"))(200)corrplot(cor_matrix,method ="color", # celdas coloreadas (más "clásico" que círculos)type ="lower", # solo mitad inferioraddCoef.col ="black", # muestra el número en negro dentro de cada celdanumber.cex =1.2, # tamaño del númerocol = mis_colores, # paleta suavetl.col ="black", # texto de las etiquetas en negrotl.srt =50, # rota las etiquetas 45°tl.cex =1.5, # tamaño de las etiquetasdiag =FALSE, # oculta la diagonal (correlación de cada ítem consigo mismo = 1)title ="Matriz de correlación de Spearman",mar =c(0,0,2,0)) # margen para que se vea bien el título
Cumple el supuesto de adecuación muestral, de relación entre variables pero no se cumple el supuesto de identidad (resultado no significativo en la prueba de esfericidad de bartlett)
6.1 Perfilación de sujetos a partir del resultado de actitud
Posiblemente se peuda descubrir una actitud alta y baja
Ver código
library(mclust)DATA_PROFILES <- BASE[, 15:30]set.seed(2025)mc1 <-mclustBIC(BASE[,15:30]) summary(mc1) # 3 grupos
Se encontraron 3 potenciales perfiles, de manera general da la impesión que existe un perfil de sujetos que tienen una actitud más positiva acerca del grupo Balint, sin emabrgo no encuentran gran aporte (items 5.1). Los otros se diferencian especialmente en los ítems que parecen invertidos.
6.2 Caracterización perfiles de actitud
Ver código
# Extraer las clasificaciones del modeloclases <- model1$classification# Agregar las clases al data frameBASE <- BASE %>%mutate(Perfil = clases)BASE$Perfil <-factor(BASE$Perfil, levels =c(1, 3, 2), labels =c ("Alto", "Medio", "Bajo"))
Ver código
tabla1 <- BASE %>%select( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado, durante_cuanto_tiempo_ha_participado_en_grupos_balint, genero, grupo_profesional, anos_de_ejercicio_profesional,esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo, participa_en_actividades_docentes, edad2, Perfil ) %>%tbl_summary(by = Perfil,type =list(all_categorical() ~"categorical", edad2 ~"continuous" ),label =list( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado ~"Participación actual o pasada en grupo Balint", durante_cuanto_tiempo_ha_participado_en_grupos_balint ~"Tiempo participación grupo Balint", genero ~"Género", grupo_profesional ~"Grupo profesional", anos_de_ejercicio_profesional ~"Años ejercicio profesional", esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo ~"Desempeña cargo con personal a cargo", participa_en_actividades_docentes ~"Participación act. docente", edad2 ~"Edad" ),statistic =list(all_categorical() ~"{n} ({p}%)", edad2 ~"{mean} ({sd})" ),digits =list(all_categorical() ~1, edad2 ~1 ),missing ="ifany",missing_text ="Sin dato" ) %>%add_overall(last =TRUE, col_label ="**Total**, N = {N}") %>%modify_header(label ~"**Variable**") %>%modify_spanning_header(all_stat_cols() ~"**Perfil**") %>%bold_labels() %>%modify_caption("**Tabla 1**")tabla1
Tabla 1
Variable
Perfil
Alto
N = 1231
Medio
N = 461
Bajo
N = 81
Total, N = 1771
Participación actual o pasada en grupo Balint
Actualmente participo en un grupo Balint.
64.0 (52.0%)
14.0 (30.4%)
2.0 (25.0%)
80.0 (45.2%)
He participado en un grupo Balint en el pasado.
53.0 (43.1%)
25.0 (54.3%)
6.0 (75.0%)
84.0 (47.5%)
Nunca he participado en un grupo Balint.
6.0 (4.9%)
7.0 (15.2%)
0.0 (0.0%)
13.0 (7.3%)
Tiempo participación grupo Balint
De 1 a 2 años.
36.0 (29.3%)
11.0 (23.9%)
2.0 (25.0%)
49.0 (27.7%)
De 2 a 3 años
7.0 (5.7%)
2.0 (4.3%)
1.0 (12.5%)
10.0 (5.6%)
Más de 3 años.
26.0 (21.1%)
8.0 (17.4%)
0.0 (0.0%)
34.0 (19.2%)
Menos de un año.
54.0 (43.9%)
25.0 (54.3%)
5.0 (62.5%)
84.0 (47.5%)
Género
Femenino
93.0 (75.6%)
33.0 (71.7%)
7.0 (87.5%)
133.0 (75.1%)
Masculino
30.0 (24.4%)
13.0 (28.3%)
1.0 (12.5%)
44.0 (24.9%)
Grupo profesional
Profesionales médicos
69.0 (56.1%)
19.0 (41.3%)
5.0 (62.5%)
93.0 (52.5%)
Enfermería
33.0 (26.8%)
17.0 (37.0%)
2.0 (25.0%)
52.0 (29.4%)
Otros
21.0 (17.1%)
10.0 (21.7%)
1.0 (12.5%)
32.0 (18.1%)
Años ejercicio profesional
11-19 años
35.0 (28.5%)
10.0 (21.7%)
2.0 (25.0%)
47.0 (26.6%)
6-10 años
17.0 (13.8%)
12.0 (26.1%)
2.0 (25.0%)
31.0 (17.5%)
Hasta 5 años
44.0 (35.8%)
11.0 (23.9%)
2.0 (25.0%)
57.0 (32.2%)
Más de 20 años.
27.0 (22.0%)
13.0 (28.3%)
2.0 (25.0%)
42.0 (23.7%)
Desempeña cargo con personal a cargo
No
67.0 (54.5%)
27.0 (58.7%)
6.0 (75.0%)
100.0 (56.5%)
Sí
56.0 (45.5%)
19.0 (41.3%)
2.0 (25.0%)
77.0 (43.5%)
Participación act. docente
No
75.0 (61.0%)
31.0 (67.4%)
4.0 (50.0%)
110.0 (62.1%)
Sí
48.0 (39.0%)
15.0 (32.6%)
4.0 (50.0%)
67.0 (37.9%)
Edad
37.1 (9.1)
38.2 (7.9)
38.0 (8.5)
37.4 (8.7)
Sin dato
7
4
0
11
1 n (%); Mean (SD)
Source Code
---title: "Actitud balint"format: html: theme: journal highlight-style: github # estilo del resaltado de código toc: true toc-depth: 3 toc-location: left toc-title: "Contenido" # título del TOC en español number-sections: true # numera las secciones automáticamente code-fold: true code-summary: "Ver código" code-tools: true # botón para mostrar/ocultar todo el código fig-cap-location: bottom # pie de figura abajo embed-resources: true smooth-scroll: true page-layout: article # centra el contenido con márgeneseditor: visualexecute: warning: false message: false---## Elaborado por:| *Nicolás Martínez Ramos* ||------------------------------------------------------------------------|| ***Bioestadístico Oficina de Investigaciones*** || ***Psicólogo, Esp. medición y evaluación psicológica y mg. bioestadística*** |```{r}```## Exploración base de datos```{r}library(readxl)BASE <-read_excel("ACTITUDES HACIA LOS GRUPOS BALINT Y SU INFLUENCIA EN EL BIENESTAR PSICOSOCIAL(1-177).xlsx") # 5-08-2026library(dplyr) library(dlookr)library(DT)library(janitor)BASE <- BASE %>%clean_names() # Convierte todo a snake_case automáticamentelibrary(labelled)diagnose(BASE) %>%mutate(across(where(is.numeric), ~round(., 1))) %>%#redondear a 1datatable(options =list(pageLength =25))```### Limpieza base```{r}#Items names(BASE)[15:29] <-paste0("i4_", 1:15)names(BASE)[30] <-"i5_1"#recodificando los niveles de los items BASE[15:30] <-lapply(BASE[15:30], function(x) as.numeric(gsub("=.*", "", x)))#creando copia de factor de los itemsnuevas_vars <-lapply(BASE[15:30], as.factor)names(nuevas_vars) <-paste0(names(BASE)[15:30], "_f")BASE <-cbind(BASE, nuevas_vars)#Variables sociodemográficas##edadBASE$edad[BASE$edad =="juan fernando camargo arenas"] <-NA#ID 130BASE$edad2 <-as.numeric(gsub("=.*", "", BASE$edad))##sexoBASE$genero <-as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$genero))##profesionBASE$profesion_unificada <-case_when(grepl("resident", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Residente de medicina",grepl("especialista", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Médico especialista",grepl("medic[ao] general|^medic[ao]$", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Médico general",grepl("enfermer[ií]a$|auxiliar de enfermer", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Auxiliar de enfermería",grepl("coordinadora de enfermer", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Coordinadora de enfermería",grepl("enfermero", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Enfermero(a)",grepl("tecnico en auxiliar", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Técnico auxiliar de enfermería",grepl("administrativo", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Administrativo",grepl("biolog", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Bióloga",grepl("citohistotecnolog", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Citohistotecnóloga",grepl("fisioterapeuta", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Fisioterapeuta",grepl("ingeniero de sistemas", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Ingeniero de sistemas",grepl("instrumentadora", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Instrumentadora quirúrgica",grepl("qu[ií]mic[ao] far", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Químico farmacéutico",grepl("^asistencial$", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Asistencial",grepl("^X$", BASE$cual_es_su_profesion, ignore.case =TRUE) ~"Desconocido",TRUE~as.character(BASE$cual_es_su_profesion))BASE$profesion_unificada <-as.factor(BASE$profesion_unificada)## especialidadBASE$especialidad_unificada <-case_when(grepl("anestesiolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Anestesiología",grepl("^an[oó]nimo$", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Desconocido",grepl("cirugia pediatrica|cirug[ií]a pedi[aá]trica", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Cirugía pediátrica",grepl("^cirujano$", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Cirugía general",grepl("paliativ", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Cuidados paliativos",grepl("urgencia|emergencia", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Medicina de urgencias/emergencias",grepl("neonatolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Neonatología",grepl("neumolog.*pediatr|pediatr.*neumolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Neumología pediátrica",grepl("medicina.*familiar|residente de medicina familiar", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Medicina familiar",grepl("medicina interna", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Medicina interna",grepl("medicina\\s*general|medico general|médico general", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Medicina general",grepl("^general$", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Medicina general",grepl("geriatria|geriatría", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Geriatría",grepl("hematolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Hematología",grepl("pediatr", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Pediatría",grepl("patologia|patología|sst.*patolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Patología",grepl("psiquiatr", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Psiquiatría",grepl("radioterapia", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Radioterapia",grepl("radiolog", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Radiología",grepl("urologia|urología", BASE$cual_es_su_especialidad, ignore.case =TRUE) ~"Urología",TRUE~as.character(BASE$cual_es_su_especialidad))BASE$especialidad_unificada <-as.factor(BASE$especialidad_unificada)## años ejercicio profesionalBASE$anos_de_ejercicio_profesional <-as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$anos_de_ejercicio_profesional))#cargo desempeñadoBASE$esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo <-as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo))#participacio nen actividades docentesBASE$participa_en_actividades_docentes <-as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$participa_en_actividades_docentes))library(stringr)library(stringi)# 1. Normalizar texto: minúsculas, sin tildes, sin espacios extraesp <- BASE$cual_es_su_profesion %>%str_to_lower() %>%stri_trans_general("Latin-ASCII") %>%str_squish()# 2. Patronespat_enfermeria <-"enfermer|auxiliar"pat_medico <-paste("anestes", "cirug", "paliativ", "dolor", "emergenc", "urgenc","fellow", "neonat", "general", "geriatr", "hemat", "medicina","medico", "pediatr", "patolog", "psiquiat", "radiol", "radioter","residente", "urolog", "neumol",sep ="|")# 3. Nueva variable (residentes y fellows quedan en médicos)BASE$grupo_profesional <-case_when(str_detect(esp, pat_enfermeria) ~"Enfermería",str_detect(esp, pat_medico) ~"Profesionales médicos",TRUE~"Otros") %>%factor(levels =c("Profesionales médicos", "Enfermería", "Otros"))# 4. Verificartable(BASE$grupo_profesional, useNA ="ifany")```## Análisis descriptivo (sin ítems)edad se reportó como variable continua.```{r}library(gtsummary)tabla0 <- BASE %>%select(ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado, durante_cuanto_tiempo_ha_participado_en_grupos_balint, a_durante_mis_estudios_de_pregrado, b_durante_la_residencia_medica,c_como_especialista_subespecialista, d_durante_mis_estudios_para_subespecialista, e_como_auxiliar_de_enfermeria_enfermer, f_como_administrativo, genero, grupo_profesional, profesion_unificada, especialidad_unificada, anos_de_ejercicio_profesional, esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo, participa_en_actividades_docentes, edad2) %>%tbl_summary(type =list(all_categorical() ~"categorical", edad2 ~"continuous" ),label =list( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado ~"Participación actual o pasada en grupo balint", durante_cuanto_tiempo_ha_participado_en_grupos_balint ~"Tiempo participación grpo balint", a_durante_mis_estudios_de_pregrado ~"Durante pregrado", b_durante_la_residencia_medica ~"Durante Residencia médica", c_como_especialista_subespecialista ~"Como Especialista - subespecialista", d_durante_mis_estudios_para_subespecialista ~"Durante estudios subespecialidad", e_como_auxiliar_de_enfermeria_enfermer ~"Como auxiliar de enfermería", f_como_administrativo ~"Como administrativo", genero ~"Género", grupo_profesional ~"Grupo profesional", profesion_unificada ~"Profesion", especialidad_unificada ~"Especialidad", anos_de_ejercicio_profesional ~"Años ejercicio profesional", esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo ~"Desempeño trabajo en que el tenga personal a cargo", participa_en_actividades_docentes ~"Partiipación act. docente", edad2 ~"Edad" ),statistic =list(all_categorical() ~"{n} ({p}%)", edad2 ~"{mean} ({sd})" ),digits =list(all_categorical() ~1, edad2 ~1 ),missing ="ifany",missing_text ="Sin dato" ) %>%modify_header(label ~"**Variable**") %>%bold_labels() %>%modify_caption("**Tabla 1**")tabla0```## Análisis descriptivo items como variables cuantitativas```{r}tabla_i4 <- BASE %>%select( i4_1, i4_2, i4_3, i4_4, i4_5, i4_6, i4_7, i4_8, i4_9, i4_10, i4_11, i4_12, i4_13, i4_14, i4_15, i5_1 ) %>%tbl_summary(type =list(everything() ~"continuous2" ),label =list( i4_1 ~"4.1 El GB mejoró mis relaciones con los pacientes", i4_2 ~"4.2 El GB me ayudó a establecer una relación de apoyo con mis colegas", i4_3 ~"4.3 El GB mejoró mis relaciones con otros miembros del equipo multidisciplinario.", i4_4 ~"4.4 El GB me proporcionó habilidades para la resolución de problemas en el entorno profesional.", i4_5 ~"4.5 El GB me ayudó a aliviar el agotamiento profesional (burnout).", i4_6 ~"4.6 El GB facilitó un mejor manejo de los pacientes (o usuarios) en mi consulta o atención.", i4_7 ~"4.7 El GB mejoró mis habilidades de empatía hacia los pacientes (o usuarios).", i4_8 ~"4.8 El GB me hizo sentir satisfecho(a).", i4_9 ~"4.9 Mi preocupación por el autocuidado fue abordada en el GB.", i4_10 ~"4.10 El GB se convirtió en una valiosa red de apoyo profesional para mí.", i4_11 ~"4.11 El GB contribuyó al desarrollo de mi identidad profesional.", i4_12 ~"4.12 Las discusiones en el GB me resultaron aburridas.", i4_13 ~"4.13 Las discusiones en el GB son superficiales.", i4_14 ~"4.14 Me sentí incómodo(a) al compartir mis casos en el GB.", i4_15 ~"4.15 La orientación brindada en el GB no fue profesional.", i5_1 ~"5.1 ¿Qué tan importante considera que es la participación en el Grupo Balint para su bienestar profesional?" ),statistic =everything() ~c("{mean} ({sd})","{median} ({p25}, {p75})" ),digits =everything() ~1,missing ="ifany",missing_text ="Sin dato" ) %>%modify_header(label ~"**Ítem**") %>%bold_labels() %>%modify_caption("**Tabla 2. Descripción de ítems**")tabla_i4```## Gráfico Likert de respuesta```{r}library(likert)library(ggplot2)datos_likert <- BASE %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")library(ggstats)gglikert_stacked(datos_likert, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )```### Gráfico para profesionales de medicina```{r}BASE_MED <- BASE %>%filter(grupo_profesional =="Profesionales médicos")datos_likert_MED <- BASE_MED %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert_MED) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")gglikert_stacked(datos_likert_MED, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint profesionales medicina (n = 93)") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )```### Gráfico profesionales de enfermería ```{r}BASE_ENF <- BASE %>%filter(grupo_profesional =="Enfermería")datos_likert_ENF <- BASE_ENF %>%select( i4_1_f, i4_2_f, i4_3_f, i4_4_f, i4_5_f, i4_6_f, i4_7_f, i4_8_f, i4_9_f, i4_10_f, i4_11_f, i4_12_f, i4_13_f, i4_14_f, i4_15_f, i5_1_f )names(datos_likert_ENF) <-c("4.1 Relaciones con pacientes","4.2 Relación apoyo colegas","4.3 Mejoró relaciones equipo","4.4 Resolución de problemas","4.5 Disminuyó burnout","4.6 Manejo de pacientes","4.7 Empatía","4.8 Satisfacción","4.9 Autocuidado","4.10 Red de apoyo","4.11 Identidad profesional","4.12 Discusiones aburridas","4.13 Discusiones superficiales","4.14 Incomodidad al compartir","4.15 Orientación no profesional","5.1 Importancia del Grupo Balint")gglikert_stacked(datos_likert_ENF, labels_size =6) +scale_fill_manual(values =c("indianred3", "pink", "#F5EEC8", "#A9D3D9", "steelblue"),name ="Respuesta" ) +ggtitle("Escala Likert",subtitle ="Actitudes Grupo Balint profesionales Enfermería (n = 52)") +theme_minimal(base_size =13) +theme(plot.title =element_text(face ="bold", size =25, color ="black"),plot.subtitle =element_text(size =20, color ="black"),axis.text =element_text(color ="black", size =20),axis.title =element_text(color ="black"),legend.text =element_text(color ="black", size =20),legend.title =element_text(color ="black", size =20, face ="bold"),legend.position ="bottom",panel.grid.major.y =element_blank(),plot.background =element_rect(fill ="white", color =NA) )```*Recodificando los valores de los items aparentemente invertidos*```{r}BASE <- BASE %>%mutate(across(c(i4_12, i4_13, i4_14, i4_15), ~6- .) )```## Realización análisis factorial exploratorio- Se evalua el supuesto de la adecuacion muestral- Se evalua el supuesto de identidad- Se evalua el supuesto de relacion entre variables```{r}library(psych)KMO(BASE[,15:30])bartlett.test(BASE[,15:30])library(corrplot)library(Hmisc)# Correlación de Spearmanres <-rcorr(as.matrix(BASE[,15:30]), type ="spearman")cor_matrix <- res$r# Paleta de colores suave (rojo-blanco-azul)mis_colores <-colorRampPalette(c("salmon", "white", "skyblue"))(200)corrplot(cor_matrix,method ="color", # celdas coloreadas (más "clásico" que círculos)type ="lower", # solo mitad inferioraddCoef.col ="black", # muestra el número en negro dentro de cada celdanumber.cex =1.2, # tamaño del númerocol = mis_colores, # paleta suavetl.col ="black", # texto de las etiquetas en negrotl.srt =50, # rota las etiquetas 45°tl.cex =1.5, # tamaño de las etiquetasdiag =FALSE, # oculta la diagonal (correlación de cada ítem consigo mismo = 1)title ="Matriz de correlación de Spearman",mar =c(0,0,2,0)) # margen para que se vea bien el título```Cumple el supuesto de adecuación muestral, de relación entre variables pero no se cumple el supuesto de identidad (resultado no significativo en la prueba de esfericidad de bartlett)### Perfilación de sujetos a partir del resultado de actitud- Posiblemente se peuda descubrir una actitud alta y baja```{r}library(mclust)DATA_PROFILES <- BASE[, 15:30]set.seed(2025)mc1 <-mclustBIC(BASE[,15:30]) summary(mc1) # 3 grupos``````{r}set.seed(2025)model1 <-Mclust(BASE[,15:30], modelNames ="EEE", G =3)summary(model1)```**Se revisan los intervalos de confianza**```{r}library(tibble)library(tidyr)means <-data.frame(model1$parameters$mean) %>%rownames_to_column() %>%rename(DATA_PROFILES = rowname) %>%pivot_longer(cols =c(X1, X2, X3), names_to ="Profile", values_to ="Mean") %>%mutate(Mean =round(Mean, 2),# Estandarización Z (normalización usando media y desviación estándar)Mean = (Mean -mean(Mean)) /sd(Mean) )p <- means %>%mutate(Profile =case_when( Profile =="X1"~"P1 (123)", Profile =="X2"~"P2 (8)", Profile =="X3"~"P3 (46)",TRUE~ Profile ) ) %>%ggplot(aes(x = DATA_PROFILES,y = Mean,group = Profile,color = Profile )) +geom_point(size =2.25) +geom_line(linewidth =1.25) +scale_x_discrete(limits =c("i4_1", "i4_2", "i4_3", "i4_4", "i4_5", "i4_6", "i4_7", "i4_8","i4_9", "i4_10", "i4_11", "i4_12", "i4_13", "i4_14", "i4_15","i5_1" ) ) +scale_color_manual(values =c("P1 (123)"="blue2","P2 (8)"="green4","P3 (46)"="red" ) ) +labs(x ="Items actitud",y ="Media estandarizada",color ="Perfil",title ="Perfiles Actitud grupo Balint" ) +theme_bw(base_size =14) +theme(axis.text.x =element_text(angle =90, hjust =1, size =20, face ="bold"),axis.text.y =element_text(size =20, face ="bold"),axis.title.x =element_text(size =22, face ="bold"),axis.title.y =element_text(size =22, face ="bold"),legend.position ="right",legend.text =element_text(size =15, face ="bold"),legend.title =element_text(size =25, face ="bold") )p```Se encontraron 3 potenciales perfiles, de manera general da la impesión que existe un perfil de sujetos que tienen una actitud más positiva acerca del grupo Balint, sin emabrgo no encuentran gran aporte (items 5.1). Los otros se diferencian especialmente en los ítems que parecen invertidos.### Caracterización perfiles de actitud```{r}# Extraer las clasificaciones del modeloclases <- model1$classification# Agregar las clases al data frameBASE <- BASE %>%mutate(Perfil = clases)BASE$Perfil <-factor(BASE$Perfil, levels =c(1, 3, 2), labels =c ("Alto", "Medio", "Bajo"))``````{r}tabla1 <- BASE %>%select( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado, durante_cuanto_tiempo_ha_participado_en_grupos_balint, genero, grupo_profesional, anos_de_ejercicio_profesional,esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo, participa_en_actividades_docentes, edad2, Perfil ) %>%tbl_summary(by = Perfil,type =list(all_categorical() ~"categorical", edad2 ~"continuous" ),label =list( ha_participado_alguna_vez_en_un_grupo_balint_ya_sea_actualmente_o_en_el_pasado ~"Participación actual o pasada en grupo Balint", durante_cuanto_tiempo_ha_participado_en_grupos_balint ~"Tiempo participación grupo Balint", genero ~"Género", grupo_profesional ~"Grupo profesional", anos_de_ejercicio_profesional ~"Años ejercicio profesional", esta_desempenando_un_cargo_en_el_cual_tenga_personal_a_cargo ~"Desempeña cargo con personal a cargo", participa_en_actividades_docentes ~"Participación act. docente", edad2 ~"Edad" ),statistic =list(all_categorical() ~"{n} ({p}%)", edad2 ~"{mean} ({sd})" ),digits =list(all_categorical() ~1, edad2 ~1 ),missing ="ifany",missing_text ="Sin dato" ) %>%add_overall(last =TRUE, col_label ="**Total**, N = {N}") %>%modify_header(label ~"**Variable**") %>%modify_spanning_header(all_stat_cols() ~"**Perfil**") %>%bold_labels() %>%modify_caption("**Tabla 1**")tabla1```