| Nicolás Martínez Ramos |
|---|
| Bioestadístico Oficina de Investigaciones |
| Psicólogo, Esp. medición y evaluación psicológica y mg. bioestadística |
library(readxl)
BASE <- read_excel("ACTITUDES HACIA LOS GRUPOS BALINT Y SU INFLUENCIA EN EL BIENESTAR PSICOSOCIAL(1-177).xlsx") # 5-08-2026
library(dplyr)
library(dlookr)
library(DT)
library(janitor)
BASE <- BASE %>%
clean_names() # Convierte todo a snake_case automáticamente#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 items
nuevas_vars <- lapply(BASE[15:30], as.factor)
names(nuevas_vars) <- paste0(names(BASE)[15:30], "_f")
BASE <- cbind(BASE, nuevas_vars)
#Variables sociodemográficas
##edad
BASE$edad[BASE$edad == "juan fernando camargo arenas"] <- NA #ID 130
BASE$edad2 <- as.numeric(gsub("=.*", "", BASE$edad))
##sexo
BASE$genero <- as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$genero))
##profesion
BASE$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)
## especialidad
BASE$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 profesional
BASE$anos_de_ejercicio_profesional <- as.factor(gsub("^[A-Z]\\.\\s*", "", BASE$anos_de_ejercicio_profesional))
#cargo desempeñado
BASE$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 docentes
BASE$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 extra
esp <- BASE$cual_es_su_profesion %>%
str_to_lower() %>%
stri_trans_general("Latin-ASCII") %>%
str_squish()
# 2. Patrones
pat_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"))edad se reportó como variable continua.
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| 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) | |
library(likert)
library(ggplot2)
library(dplyr)
BASE <- BASE %>%
mutate(
# i4_1 a i4_15: 1-2 = Bajo, 3-5 = Alto
across(
i4_1:i4_15,
~ factor(if_else(. <= 2, "Bajo", "Alto"), levels = c("Bajo", "Alto")),
.names = "{.col}_cat"
),
# i5_1 invertida: 1-3 = Alto, 4-5 = Bajo
i5_1_cat = factor(if_else(i5_1 <= 3, "Alto", "Bajo"), levels = c("Bajo", "Alto"))
)
datos_likert <- BASE %>%
select(i4_1_cat, i4_2_cat, i4_3_cat, i4_4_cat, i4_5_cat, i4_6_cat, i4_7_cat, i4_8_cat, i4_9_cat, i4_10_cat, i4_11_cat, i4_12_cat, i4_13_cat, i4_14_cat, i4_15_cat, i5_1_cat)
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", "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)
)BASE_MED <- BASE %>% filter(grupo_profesional == "Profesionales médicos")
datos_likert_MED <- BASE_MED %>%
select(i4_1_cat, i4_2_cat, i4_3_cat, i4_4_cat, i4_5_cat, i4_6_cat, i4_7_cat, i4_8_cat, i4_9_cat, i4_10_cat, i4_11_cat, i4_12_cat, i4_13_cat, i4_14_cat, i4_15_cat, i5_1_cat)
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", "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)
)BASE_ENF <- BASE %>% filter(grupo_profesional == "Enfermería")
datos_likert_ENF <- BASE_ENF %>%
select(i4_1_cat, i4_2_cat, i4_3_cat, i4_4_cat, i4_5_cat, i4_6_cat, i4_7_cat, i4_8_cat, i4_9_cat, i4_10_cat, i4_11_cat, i4_12_cat, i4_13_cat, i4_14_cat, i4_15_cat, i5_1_cat)
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", "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)
)BASE_OTRO <- BASE %>% filter(grupo_profesional == "Otros")
datos_likert_OTRO <- BASE_OTRO %>%
select(i4_1_cat, i4_2_cat, i4_3_cat, i4_4_cat, i4_5_cat, i4_6_cat, i4_7_cat, i4_8_cat, i4_9_cat, i4_10_cat, i4_11_cat, i4_12_cat, i4_13_cat, i4_14_cat, i4_15_cat, i5_1_cat)
names(datos_likert_OTRO) <- 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_OTRO, labels_size = 6) +
scale_fill_manual(
values = c("indianred3", "steelblue"),
name = "Respuesta"
) +
ggtitle("Escala Likert",
subtitle = "Actitudes Grupo Balint Otros profesionales (n = 32)") +
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
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = BASE[, 15:30])
## Overall MSA = 0.94
## MSA for each item =
## 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
## 0.97 0.94 0.95 0.96 0.96 0.96 0.96 0.96 0.96 0.93 0.94 0.80 0.82
## i4_14 i4_15 i5_1
## 0.88 0.80 0.91
##
## Bartlett test of homogeneity of variances
##
## data: BASE[, 15:30]
## Bartlett's K-squared = 18.759, df = 15, p-value = 0.2249
library(corrplot)
library(Hmisc)
# Correlación de Spearman
res <- 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 inferior
addCoef.col = "black", # muestra el número en negro dentro de cada celda
number.cex = 1.2, # tamaño del número
col = mis_colores, # paleta suave
tl.col = "black", # texto de las etiquetas en negro
tl.srt = 50, # rota las etiquetas 45°
tl.cex = 1.5, # tamaño de las etiquetas
diag = 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ítuloCumple 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)
library(mclust)
DATA_PROFILES <- BASE[, 15:30]
set.seed(2025)
mc1 <-mclustBIC(BASE[,15:30])
summary(mc1) # 3 grupos## Best BIC values:
## EEE,3 EEE,1 EEV,1
## BIC -6842.973 -6945.5907 -6945.5907
## BIC diff 0.000 -102.6181 -102.6181
## ----------------------------------------------------
## Gaussian finite mixture model fitted by EM algorithm
## ----------------------------------------------------
##
## Mclust EEE (ellipsoidal, equal volume, shape and orientation) model with 3
## components:
##
## log-likelihood n df BIC ICL
## -2940.104 177 186 -6842.973 -6843.214
##
## Clustering table:
## 1 2 3
## 123 8 46
Se revisan los intervalos de confianza
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")
)
pSe 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.
# Extraer las clasificaciones del modelo
clases <- model1$classification
# Agregar las clases al data frame
BASE <- BASE %>%
mutate(Perfil = clases)
BASE$Perfil <- factor(BASE$Perfil, levels = c(1, 3, 2), labels = c ("Alto", "Medio", "Bajo"))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| 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) | ||||
````