📚 Librería

library(readxl)
library(glue)
library(dplyr)
library(janitor)
library(knitr)
library(kableExtra)
library(ggplot2)
library(ggraph)
library(igraph)
library(treemapify)
library(tidyverse)
library(knitr)
library(flextable)
library(apaTables)

📥 Importar datos

datos_cuanti <- read_excel("/Users/adrianaholguin/Desktop/Copia de Tabla analisis tesis R.xlsx")
datos_cuali <- read_excel("//Users/adrianaholguin/Desktop/Categorías entrevistas 1 triangulacion.xlsx")

❓Preguntas de investigación

Pregunta de investigación general

¿Qué relación existe entre la participación en un voluntariado curricular y el desarrollo de conductas prosociales en estudiantes universitarios?

Pregunta de investigación cuantitativa

¿Existe una diferencia significativa en los niveles de prosocialidad de los estudiantes universitarios antes y después de participar en un voluntariado curricular, medida con la escala de prosocialidad para adultos de Caprara?

Pregunta de investigación cualitativa

¿Qué cambios en la prosocialidad son reportados por los estudiantes universitarios después de su participación en el voluntariado curricular?

🧭 Matrices de covarianzas entre variables sociodemográficas y puntaje de prosocialidad

base_tablas <- triangulacion_apa %>%
  transmute(
    Sexo = `X2..Sexo`,
    Estado_civil = `X3..Estado.civil`,
    Trabaja = `X4..Trabaja`,
    Residente = `X5..Residente`,
    Vive_con = `X6..Vive.con`,
    Grupo_vulnerabilidad = `X7..Grupo.de.vulnerabilidad`,
    Tipo_familia = `X8..Tipo.de.familia`,
    Nivel_socioeconomico = `X10..Nivel.socioeconomico.percibido`,
    Puntaje_total = as.numeric(`X48..A Total`)
  )

# Función ajustada para incluir desviación estándar
tabla_por_variable <- function(variable, nombre_variable) {
  base_tablas %>%
    filter(!is.na(.data[[variable]]), !is.na(Puntaje_total)) %>%
    group_by(.data[[variable]]) %>%
    summarise(
      n = n(),
      `Promedio prosocialidad` = round(mean(Puntaje_total), 2),
      `Desviación estándar` = round(sd(Puntaje_total), 2)
    ) %>%
    rename(Categoría = 1) %>%
    flextable() %>%
    autofit() %>%
    bold(part = "header") %>%
    align(align = "center", part = "all") %>%
    set_caption(paste("Promedio prosocialidad según", nombre_variable))
}

# Generar tablas con encabezado ajustado
tabla_por_variable("Sexo", "sexo") 
Promedio prosocialidad según sexo

Categoría

n

Promedio prosocialidad

Desviación estándar

Femenino

33

54.76

6.93

Masculino

9

53.44

6.73

tabla_por_variable("Estado_civil", "estado civil") 
Promedio prosocialidad según estado civil

Categoría

n

Promedio prosocialidad

Desviación estándar

Soltero

41

54.32

6.84

Unión libre

1

61.00

tabla_por_variable("Trabaja", "condición laboral") 
Promedio prosocialidad según condición laboral

Categoría

n

Promedio prosocialidad

Desviación estándar

No

20

54.55

7.06

Si

22

54.41

6.78

tabla_por_variable("Residente", "residencia") 
Promedio prosocialidad según residencia

Categoría

n

Promedio prosocialidad

Desviación estándar

Foráneo

23

53.17

7.54

Local

19

56.05

5.66

tabla_por_variable("Vive_con", "tipo de convivencia") 
Promedio prosocialidad según tipo de convivencia

Categoría

n

Promedio prosocialidad

Desviación estándar

Familia

24

54.50

6.25

Romíes

16

54.69

8.19

Solo

2

52.50

0.71

tabla_por_variable("Grupo_vulnerabilidad", "grupo de vulnerabilidad") 
Promedio prosocialidad según grupo de vulnerabilidad

Categoría

n

Promedio prosocialidad

Desviación estándar

Madre soltera

2

53.50

3.54

Ninguno

40

54.52

6.98

tabla_por_variable("Tipo_familia", "tipo de familia") 
Promedio prosocialidad según tipo de familia

Categoría

n

Promedio prosocialidad

Desviación estándar

Extensa

7

56.00

5.39

Monoparental

6

50.50

6.16

Tradicional

29

54.93

7.15

tabla_por_variable("Nivel_socioeconomico", "nivel socioeconómico percibido")
Promedio prosocialidad según nivel socioeconómico percibido

Categoría

n

Promedio prosocialidad

Desviación estándar

Bajo

4

52.75

6.02

Medio

38

54.66

6.96

📊🧭 Gráfico de dispersión entre variables sociodemográficas y puntaje de prosocialidad

# Renombrar variables para encabezados legibles
nombres_variables <- c(
  Sexo = "Sexo",
  Estado_civil = "Estado civil",
  Trabaja = "Condición laboral",
  Residente = "Residencia",
  Vive_con = "Tipo de convivencia",
  Grupo_vulnerabilidad = "Grupo de vulnerabilidad",
  Tipo_familia = "Tipo de familia",
  Nivel_socioeconomico = "Nivel socioeconómico"
)

# Base en formato largo con nombres corregidos
base_larga <- triangulacion_apa %>%
  transmute(
    Sexo = `X2..Sexo`,
    Estado_civil = `X3..Estado.civil`,
    Trabaja = `X4..Trabaja`,
    Residente = `X5..Residente`,
    Vive_con = `X6..Vive.con`,
    Grupo_vulnerabilidad = `X7..Grupo.de.vulnerabilidad`,
    Tipo_familia = `X8..Tipo.de.familia`,
    Nivel_socioeconomico = `X10..Nivel.socioeconomico.percibido`,
    Puntaje_total = as.numeric(`X48..A Total`)
  ) %>%
  pivot_longer(
    cols = -Puntaje_total,
    names_to = "Variable",
    values_to = "Categoría"
  ) %>%
  filter(!is.na(Categoría), !is.na(Puntaje_total)) %>%
  mutate(Variable = nombres_variables[Variable])

# Categorías que vale la pena explorar más
categorias_azul <- c(
  "Local", "Extensa", "Monoparental", "Romíes", "Foráneo", "Bajo", "Madre soltera"
)

# Asignar color interpretativo
base_larga <- base_larga %>%
  mutate(Color = ifelse(Categoría %in% categorias_azul, "Explorar más", "Sin variación significativa"))

# Diagrama de dispersión con colores y encabezados corregidos
ggplot(base_larga, aes(x = Categoría, y = Puntaje_total, color = Color)) +
  geom_jitter(width = 0.2, height = 0, alpha = 0.7, size = 2) +
  facet_wrap(~ Variable, scales = "free_x") +
  scale_color_manual(
    values = c("Explorar más" = "#2980B9", "Sin variación significativa" = "#27AE60"),
    labels = c("Explorar más" = "Categorías con variabilidad",
               "Sin variación significativa" = "Categorías sin variación relevante")
  ) +
  labs(
    title = "Dispersión de prosocialidad según variables sociodemográficas (Todos los participantes)",
    x = "Categoría",
    y = "Puntaje total de prosocialidad",
    color = "Interpretación situada"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    strip.text = element_text(face = "bold"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

Interpretación: El gráfico muestra la dispersión del puntaje total de prosocialidad en relación con distintas variables sociodemográficas, permitiendo identificar patrones, tensiones y trayectorias diferenciadas. Las categorías fueron codificadas en azul (🔵) cuando presentan variabilidad interna significativa o potencia ética que amerita ser explorada en entrevista a profundidad, y en verde (🟢) cuando no muestran variaciones relevantes.

Entre las categorías que destacan por su dispersión o contraste, se encuentran:

Las categorías en verde (🟢) no presentan variaciones significativas, pero su estabilidad también puede ser relevante como punto de contraste o control discursivo.

Este análisis visual fortalece la triangulación inicial y permite derivar ejes temáticos para la entrevista a profundidad, especialmente en torno a la influencia de la estructura familiar, la territorialidad, la convivencia grupal y la experiencia de vulnerabilidad en la expresión prosocial.

🙋 Matrices de covarianzas entre variables sociodemográficas relacionadas con voluntariado y puntaje de prosocialidad

# Base con variables originales y puntaje total
base_voluntariado <- triangulacion_apa %>%
  transmute(
    Le_gustaria_voluntariado = `X13..Le.gustaria.realizar.voluntariados.en.sus.materias`,
    Areas_interes_voluntariado = `X14..Areas.que.le.interesan.para.realizar.voluntariados`,
    Ha_realizado_voluntariado = `X15..Ha.realizado.voluntariados`,
    Puntaje_total = as.numeric(`X48..A Total`)
  )

# Función para variables simples
tabla_por_variable <- function(variable, nombre_variable) {
  base_voluntariado %>%
    filter(!is.na(.data[[variable]]), !is.na(Puntaje_total)) %>%
    group_by(.data[[variable]]) %>%
    summarise(
      n = n(),
      `Promedio prosocialidad` = round(mean(Puntaje_total), 2),
      `Desviación estándar` = round(sd(Puntaje_total), 2),
      .groups = "drop"
    ) %>%
    rename(Categoría = 1) %>%
    flextable() %>%
    autofit() %>%
    bold(part = "header") %>%
    align(align = "center", part = "all") %>%
    set_caption(paste("Promedio prosocialidad según", nombre_variable))
}

# Función para desagregar respuestas múltiples
tabla_desagregada <- function(variable, nombre_variable) {
  base_voluntariado %>%
    select(all_of(variable), Puntaje_total) %>%
    separate_rows(all_of(variable), sep = ",\\s*") %>%
    filter(!is.na(.data[[variable]]), !is.na(Puntaje_total)) %>%
    group_by(.data[[variable]]) %>%
    summarise(
      n = n(),
      `Promedio prosocialidad` = round(mean(Puntaje_total), 2),
      `Desviación estándar` = round(sd(Puntaje_total), 2),
      .groups = "drop"
    ) %>%
    rename(Categoría = 1) %>%
    flextable() %>%
    autofit() %>%
    bold(part = "header") %>%
    align(align = "center", part = "all") %>%
    set_caption(paste("Promedio prosocialidad según", nombre_variable))
}

# Generar tablas del bloque de voluntariado
tabla_por_variable("Le_gustaria_voluntariado", "interés en realizar voluntariado")
Promedio prosocialidad según interés en realizar voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

No

10

49.00

5.72

Si

32

56.19

6.29

tabla_desagregada("Areas_interes_voluntariado", "áreas de interés para voluntariado")
Promedio prosocialidad según áreas de interés para voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

Ambiental-ecológico

6

48.83

2.93

Educativo

20

55.90

6.46

Emergencias-desastres

13

57.00

5.90

No respondió

3

45.33

6.81

Salud

13

57.00

5.90

Social-comunitario

20

55.90

6.46

tabla_por_variable("Ha_realizado_voluntariado", "experiencia previa en voluntariado")
Promedio prosocialidad según experiencia previa en voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

No

17

53.94

6.16

Si

25

54.84

7.35

📊🙋 Gráfico de dispersión entre variables sociodemográficas relacionadas con voluntariado y puntaje de prosocialidad

# Renombrar variables para encabezados legibles
nombres_voluntariado <- c(
  Le_gustaria_voluntariado = "Interés en voluntariado",
  Areas_interes_voluntariado = "Áreas de interés",
  Ha_realizado_voluntariado = "Experiencia previa"
)

# Base con desagregación previa solo para Áreas de interés
base_voluntariado <- triangulacion_apa %>%
  transmute(
    Le_gustaria_voluntariado = `X13..Le.gustaria.realizar.voluntariados.en.sus.materias`,
    Areas_interes_voluntariado = `X14..Areas.que.le.interesan.para.realizar.voluntariados`,
    Ha_realizado_voluntariado = `X15..Ha.realizado.voluntariados`,
    Puntaje_total = as.numeric(`X48..A Total`)
  )

# Separar respuestas múltiples en Áreas de interés
base_voluntariado_desagregada <- base_voluntariado %>%
  separate_rows(Areas_interes_voluntariado, sep = ",\\s*")

# Convertir a formato largo con nombres corregidos
base_voluntariado_larga <- base_voluntariado_desagregada %>%
  pivot_longer(
    cols = -Puntaje_total,
    names_to = "Variable",
    values_to = "Categoría"
  ) %>%
  filter(!is.na(Categoría), !is.na(Puntaje_total)) %>%
  mutate(Variable = nombres_voluntariado[Variable])

# Categorías que vale la pena explorar más (según lectura situada)
categorias_azul <- c("Sí", "Educación", "Salud", "Sí me gustaría")

# Asignar color interpretativo
base_voluntariado_larga <- base_voluntariado_larga %>%
  mutate(Color = ifelse(Categoría %in% categorias_azul, "Explorar más", "Sin variación significativa"))

# Diagrama de dispersión con colores azul y verde
ggplot(base_voluntariado_larga, aes(x = Categoría, y = Puntaje_total, color = Color)) +
  geom_jitter(width = 0.2, height = 0, alpha = 0.7, size = 2) +
  facet_wrap(~ Variable, scales = "free_x") +
  scale_color_manual(
    values = c("Explorar más" = "#2980B9", "Sin variación significativa" = "#27AE60"),
    labels = c("Explorar más" = "Categorías con potencia ética o variabilidad",
               "Sin variación significativa" = "Categorías sin variación relevante")
  ) +
  labs(
    title = "Dispersión de prosocialidad según variables relacionadas con voluntariado (Todos los participantes)",
    x = "Categoría",
    y = "Puntaje total de prosocialidad",
    color = "Interpretación situada"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    strip.text = element_text(face = "bold"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

Interpretación:El gráfico muestra la dispersión del puntaje total de prosocialidad en relación con tres variables vinculadas al voluntariado: interés declarado, áreas de interés (desagregadas correctamente) y experiencia previa. Las categorías fueron codificadas en azul (🔵) cuando presentan variabilidad interna significativa o potencia ética que amerita ser explorada en entrevista a profundidad, y en verde (🟢) cuando no muestran variaciones relevantes.

Entre las categorías que destacan por su dispersión o contraste, se encuentran:

Las categorías en verde (🟢) no presentan variaciones significativas, pero su estabilidad también puede ser relevante como punto de contraste discursivo.

Este análisis visual permite derivar ejes temáticos para la entrevista a profundidad, especialmente en torno a la relación entre deseo, experiencia y sentido ético del voluntariado. También fortalece la triangulación inicial al vincular la prosocialidad con prácticas concretas de participación social, respetando la intención original de quienes respondieron con múltiples áreas de interés.

🤝 Matrices de covarianzas entre variables sociodemográficas de sujetos que han participado previamente en voluntariados y puntaje de prosocialidad

# Base filtrada: solo quienes han realizado voluntariado
base_participantes <- triangulacion_apa %>%
  transmute(
    Percibe_beneficio = `X20..Percibe.algun.beneficio.por.realizar.voluntariados`,
    Volveria_participar = `X23..Volveria.a.participar.en.algun.voluntariado`,
    Puntaje_total = as.numeric(`X48..A Total`),
    Ha_realizado = `X15..Ha.realizado.voluntariados`
  ) %>%
  filter(Ha_realizado == "Si")

# Función ajustada para incluir desviación estándar
tabla_por_variable <- function(variable, nombre_variable) {
  base_participantes %>%
    filter(!is.na(.data[[variable]]), !is.na(Puntaje_total)) %>%
    group_by(.data[[variable]]) %>%
    summarise(
      n = n(),
      `Promedio prosocialidad` = round(mean(Puntaje_total), 2),
      `Desviación estándar` = round(sd(Puntaje_total), 2)
    ) %>%
    rename(Categoría = 1) %>%
    flextable() %>%
    autofit() %>%
    bold(part = "header") %>%
    align(align = "center", part = "all") %>%
    set_caption(paste("Promedio prosocialidad según", nombre_variable))
}

# Generar tablas limpias con desviación estándar
tabla_por_variable("Percibe_beneficio", "percepción de beneficio por voluntariado")
Promedio prosocialidad según percepción de beneficio por voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

Si

25

54.84

7.35

tabla_por_variable("Volveria_participar", "disposición a volver a participar")
Promedio prosocialidad según disposición a volver a participar

Categoría

n

Promedio prosocialidad

Desviación estándar

No

3

46.33

2.89

Si

22

56.00

7.02

Promedio prosocialidad según tipo de voluntariado realizado

Categoría

n

Promedio prosocialidad

Desviación estándar

Ambiental-ecológico

13

53.38

6.24

Educación

5

58.80

5.97

Emergencias-desastres

4

56.50

11.56

Salud

6

61.33

5.24

Social-comunitario

21

55.14

6.90

Promedio prosocialidad según motivación para realizar voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

Altruismo

5

57.40

6.07

Compromiso cívico

4

52.75

7.23

Desarrollo personal

13

56.69

7.98

Diversión

9

53.89

6.41

Obligación

6

50.83

6.27

Reconocimiento

3

53.00

7.55

Promedio prosocialidad según beneficio percibido del voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

Aprendizaje

9

53.22

8.51

Autoestima

2

51.50

16.26

Consciencia

6

61.50

2.51

Curriculum

13

52.85

8.43

Empatía

19

54.63

7.90

Satisfacción

15

55.33

7.19

Promedio prosocialidad según aspecto más recordado del voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

A las personas

11

57.73

6.53

Lo que aprendí

7

56.86

8.51

Lo que hice

10

51.50

6.87

Lo que sentí

13

56.15

7.37

📊🤝 Gráfico de dispersión entre variables sociodemográficas de sujetos que han participado previamente en voluntariados y puntaje de prosocialidad

# Renombrar variables para encabezados legibles
nombres_multirespuesta <- c(
  Tipo_voluntariado = "Tipo de voluntariado",
  Motivacion_voluntariado = "Motivación",
  Beneficio_percibido = "Beneficio percibido",
  Recuerdo_voluntariado = "Recuerdo significativo"
)

# Base original filtrada: solo quienes han realizado voluntariado
base_original <- triangulacion_apa %>%
  transmute(
    Tipo_voluntariado = `X18..Tipos.de.voluntariados.que.ha.realizado`,
    Motivacion_voluntariado = `X19..Que.le.motiva.a.realizar.voluntariados`,
    Beneficio_percibido = `X21..Beneficio.percibido.de.realizar.voluntariados`,
    Recuerdo_voluntariado = `X22..Lo.que.mas.recuerda.de.los.voluntariados`,
    Puntaje_total = as.numeric(`X48..A Total`),
    Ha_realizado = `X15..Ha.realizado.voluntariados`
  ) %>%
  filter(Ha_realizado == "Si") %>%
  select(-Ha_realizado)

# Desagregar cada variable por separado
tipo <- base_original %>%
  select(Tipo_voluntariado, Puntaje_total) %>%
  separate_rows(Tipo_voluntariado, sep = ",\\s*") %>%
  rename(Categoría = Tipo_voluntariado) %>%
  mutate(Variable = "Tipo de voluntariado")

motivacion <- base_original %>%
  select(Motivacion_voluntariado, Puntaje_total) %>%
  separate_rows(Motivacion_voluntariado, sep = ",\\s*") %>%
  rename(Categoría = Motivacion_voluntariado) %>%
  mutate(Variable = "Motivación")

beneficio <- base_original %>%
  select(Beneficio_percibido, Puntaje_total) %>%
  separate_rows(Beneficio_percibido, sep = ",\\s*") %>%
  rename(Categoría = Beneficio_percibido) %>%
  mutate(Variable = "Beneficio percibido")

recuerdo <- base_original %>%
  select(Recuerdo_voluntariado, Puntaje_total) %>%
  separate_rows(Recuerdo_voluntariado, sep = ",\\s*") %>%
  rename(Categoría = Recuerdo_voluntariado) %>%
  mutate(Variable = "Recuerdo significativo")

# Unir todas las bases
base_larga <- bind_rows(tipo, motivacion, beneficio, recuerdo) %>%
  filter(!is.na(Categoría), !is.na(Puntaje_total))

# Codificación interpretativa
categorias_azul <- c(
  "Educación", "Salud", "Emergencias", "Reconocimiento", "Aprendizaje", "Transformación personal",
  "Trabajo en equipo", "Impacto social", "Acompañamiento", "Desigualdad", "Vínculos humanos"
)

base_larga <- base_larga %>%
  mutate(Color = ifelse(Categoría %in% categorias_azul, "Explorar más", "Sin variación significativa"))

# Diagrama de dispersión con colores
ggplot(base_larga, aes(x = Categoría, y = Puntaje_total, color = Color)) +
  geom_jitter(width = 0.2, height = 0, alpha = 0.7, size = 2) +
  facet_wrap(~ Variable, scales = "free_x") +
  scale_color_manual(
    values = c("Explorar más" = "#2980B9", "Sin variación significativa" = "#27AE60"),
    labels = c("Explorar más" = "Categorías con potencia ética o variabilidad",
               "Sin variación significativa" = "Categorías sin variación relevante")
  ) +
  labs(
    title = "Dispersión de prosocialidad según variables multirespuesta de voluntariado (Voluntariado previo)",
    x = "Categoría",
    y = "Puntaje total de prosocialidad",
    color = "Interpretación situada"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    strip.text = element_text(face = "bold"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

Interpretación (participantes): El gráfico muestra la dispersión del puntaje total de prosocialidad en relación con cuatro variables multirespuesta vinculadas al voluntariado: tipo de voluntariado realizado, motivación declarada, beneficio percibido y recuerdo significativo. Las respuestas fueron desagregadas correctamente por coma, respetando la intención original de quienes marcaron múltiples opciones. Las categorías fueron codificadas en azul cuando presentan variabilidad interna significativa o potencia ética que amerita ser explorada en entrevista a profundidad, y en verde cuando no muestran variaciones relevantes.

Entre las categorías que destacan por su dispersión o contraste, se encuentran:

Las categorías en verde no presentan variaciones significativas, pero su estabilidad también puede ser relevante como punto de contraste discursivo o como indicador de trayectorias homogéneas.

Este análisis visual permite derivar ejes temáticos para la entrevista a profundidad, especialmente en torno a la relación entre experiencia concreta, memoria ética y transformación subjetiva en contextos de voluntariado. También fortalece la triangulación inicial al vincular la prosocialidad con prácticas situadas y narrativas de sentido.

🧤 Matrices de covarianzas entre variables sociodemográficas de sujetos que no han participado previamente en voluntariados y puntaje de prosocialidad

# Base filtrada: solo quienes no han realizado voluntariado
base_no_participantes <- triangulacion_apa %>%
  transmute(
    Desea_participar = `X25..Le.gustaria.participar.en.algun.voluntariado`,
    Puntaje_total = as.numeric(`X48..A Total`),
    Ha_realizado = `X15..Ha.realizado.voluntariados`
  ) %>%
  filter(Ha_realizado == "No")

# Tabla de deseo de participación con desviación estándar
base_no_participantes %>%
  filter(!is.na(Desea_participar), !is.na(Puntaje_total)) %>%
  group_by(Desea_participar) %>%
  summarise(
    n = n(),
    `Promedio prosocialidad` = round(mean(Puntaje_total), 2),
    `Desviación estándar` = round(sd(Puntaje_total), 2),
    .groups = "drop"
  ) %>%
  rename(Categoría = Desea_participar) %>%
  flextable() %>%
  autofit() %>%
  bold(part = "header") %>%
  align(align = "center", part = "all") %>%
  set_caption("Promedio prosocialidad según deseo de participar en voluntariado")
Promedio prosocialidad según deseo de participar en voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

No

2

49.50

4.95

Si

15

54.53

6.20

Promedio prosocialidad según motivo por el que no ha realizado voluntariado

Categoría

n

Promedio prosocialidad

Desviación estándar

Falta de interés

1

53.00

Falta de oportunidades

10

53.20

5.81

Falta de tiempo

9

55.11

7.24

Prejuicios

2

51.50

2.12

Promedio prosocialidad según beneficio que cree que le dejaría participar

Categoría

n

Promedio prosocialidad

Desviación estándar

Aprendizaje

13

53.85

7.02

Autoestima

3

48.67

2.89

Consciencia

8

52.88

7.59

Curriculum

5

55.20

6.69

Empatía

5

55.00

8.28

Satisfacción

9

53.00

5.34

📊🧤 Gráfico de dispersión entre variables sociodemográficas de sujetos que no han participado previamente en voluntariados y puntaje de prosocialidad

# Renombrar variables para encabezados legibles
nombres_no_participantes <- c(
  Motivo_no_participacion = "Motivo por el que no ha participado",
  Beneficio_esperado = "Beneficio que cree que le dejaría participar",
  Desea_participar = "Desea participar en voluntariado"
)

# Base original: solo quienes no han realizado voluntariado
base_no_participantes <- triangulacion_apa %>%
  transmute(
    Motivo_no_participacion = `X24..Porque.cree.que.no.ha.realizado.voluntariados`,
    Beneficio_esperado = `X26..Beneficio.que.cree.que.le.dejaria.realizar.voluntariados`,
    Desea_participar = `X25..Le.gustaria.participar.en.algun.voluntariado`,
    Puntaje_total = as.numeric(`X48..A Total`),
    Ha_realizado = `X15..Ha.realizado.voluntariados`
  ) %>%
  filter(Ha_realizado == "No") %>%
  select(-Ha_realizado)

# Desagregar cada variable por separado
motivo <- base_no_participantes %>%
  select(Motivo_no_participacion, Puntaje_total) %>%
  separate_rows(Motivo_no_participacion, sep = ",\\s*") %>%
  rename(Categoría = Motivo_no_participacion) %>%
  mutate(Variable = "Motivo por el que no ha participado")

beneficio <- base_no_participantes %>%
  select(Beneficio_esperado, Puntaje_total) %>%
  separate_rows(Beneficio_esperado, sep = ",\\s*") %>%
  rename(Categoría = Beneficio_esperado) %>%
  mutate(Variable = "Beneficio que cree que le dejaría participar")

deseo <- base_no_participantes %>%
  select(Desea_participar, Puntaje_total) %>%
  filter(!is.na(Desea_participar)) %>%
  rename(Categoría = Desea_participar) %>%
  mutate(Variable = "Desea participar en voluntariado")

# Unir todas las variables
base_larga <- bind_rows(motivo, beneficio, deseo) %>%
  filter(!is.na(Categoría), !is.na(Puntaje_total))

# Codificación interpretativa
categorias_azul <- c(
  "Falta de información", "Falta de tiempo", "Miedo a no saber cómo ayudar",
  "Reconocimiento", "Aprendizaje", "Transformación personal", "Vínculos humanos", "Sentido de comunidad",
  "Sí"
)

base_larga <- base_larga %>%
  mutate(Color = ifelse(Categoría %in% categorias_azul, "Explorar más", "Sin variación significativa"))

# Diagrama de dispersión con codificación azul-verde
ggplot(base_larga, aes(x = Categoría, y = Puntaje_total, color = Color)) +
  geom_jitter(width = 0.2, height = 0, alpha = 0.7, size = 2) +
  facet_wrap(~ Variable, scales = "free_x") +
  scale_color_manual(
    values = c("Explorar más" = "#2980B9", "Sin variación significativa" = "#27AE60"),
    labels = c("Explorar más" = "Categorías con potencia ética o variabilidad",
               "Sin variación significativa" = "Categorías sin variación relevante")
  ) +
  labs(
    title = "Dispersión de prosocialidad según motivos, beneficios esperados y deseo de participar (Sin voluntariado previo)",
    x = "Categoría",
    y = "Puntaje total de prosocialidad",
    color = "Interpretación situada"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    strip.text = element_text(face = "bold"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

Interpretación (no participantes): El gráfico muestra la dispersión del puntaje total de prosocialidad en relación con tres variables multirespuesta entre quienes no han participado en voluntariado: motivos declarados para no haberlo hecho, beneficios que creen que les dejaría participar y disposición actual a participar. Las respuestas fueron desagregadas correctamente por coma, respetando la intención original de quienes marcaron múltiples opciones. Las categorías fueron codificadas en azul cuando presentan variabilidad interna significativa o potencia ética que amerita ser explorada en entrevista a profundidad, y en verde cuando no muestran variaciones relevantes.

Entre las categorías que destacan por su dispersión o contraste, se encuentran:

Las categorías en verde no presentan variaciones relevantes, pero su estabilidad también puede ser útil como punto de contraste discursivo o como indicador de trayectorias homogéneas.

Este análisis visual permite derivar ejes temáticos para la entrevista a profundidad, especialmente en torno a las barreras percibidas, las expectativas éticas y las narrativas de deseo entre quienes aún no han participado. También fortalece la triangulación inicial al vincular la prosocialidad con disposiciones latentes, condiciones estructurales y tensiones subjetivas.

🤲 Análisis de métodos

# Paso 1: unir base cuantitativa y cualitativa
triangulacion_completa <- triangulacion_apa %>%
  left_join(datos_cuali, by = "Sujeto")

# Paso 2: calcular promedio y desviación estándar por categoría cualitativa
tabla_comparativa <- triangulacion_completa %>%
  filter(!is.na(Categoría)) %>%
  group_by(Categoría) %>%
  summarise(
    `Promedio de puntaje total` = round(mean(`X48..A Total`, na.rm = TRUE), 2),
    `Desviación estándar` = round(sd(`X48..A Total`, na.rm = TRUE), 2),
    .groups = "drop"
  ) %>%
  arrange(desc(`Promedio de puntaje total`))

# Paso 3: visualizar en formato APA puro
flextable(tabla_comparativa) %>%
  set_header_labels(
    Categoría = "Categoría cualitativa",
    `Promedio de puntaje total` = "Promedio de puntaje total",
    `Desviación estándar` = "Desviación estándar"
  ) %>%
  autofit() %>%
  bold(part = "header") %>%
  align(align = "center", part = "all") %>%
  set_caption("Tabla comparativa de puntaje total de prosocialidad por categoría cualitativa (sujetos triangulados)")
Tabla comparativa de puntaje total de prosocialidad por categoría cualitativa (sujetos triangulados)

Categoría cualitativa

Promedio de puntaje total

Desviación estándar

Sociabilización

58.36

9.21

Empatía

57.60

9.69

Ayudar

56.61

10.67

Compartir

54.25

10.61

Prosocial

53.26

10.69

📊🤲 Gráfico de dispersión de puntaje total de prosocialiad por categoría cualitativa

# Base triangulada con categoría cualitativa
base_categorias <- triangulacion_apa %>%
  left_join(datos_cuali, by = "Sujeto") %>%
  transmute(
    Categoría = Categoría,
    Puntaje_total = as.numeric(`X48..A Total`)
  ) %>%
  filter(!is.na(Categoría), !is.na(Puntaje_total))

# Codificación interpretativa
categorias_azul <- c("Sociabilización", "Empatía", "Ayudar", "Transformación", "Vínculo", "Reparación")

base_categorias <- base_categorias %>%
  mutate(Color = ifelse(Categoría %in% categorias_azul, "Explorar más", "Sin variación significativa"))

# Diagrama de dispersión
ggplot(base_categorias, aes(x = Categoría, y = Puntaje_total, color = Color)) +
  geom_jitter(width = 0.2, height = 0, alpha = 0.7, size = 2) +
  scale_color_manual(
    values = c("Explorar más" = "#2980B9", "Sin variación significativa" = "#27AE60"),
    labels = c("Explorar más" = "Categorías con potencia ética o variabilidad",
               "Sin variación significativa" = "Categorías sin variación relevante")
  ) +
  labs(
    title = "Dispersión de prosocialidad según categoría cualitativa (sujetos triangulados)",
    x = "Categoría cualitativa",
    y = "Puntaje total de prosocialidad",
    color = "Interpretación situada"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    strip.text = element_text(face = "bold"),
    legend.position = "right",
    legend.title = element_text(face = "bold")
  )

Interpretación (sujetos triangulados): El gráfico muestra la dispersión del puntaje total de prosocialidad en relación con las categorías cualitativas construidas a partir de la triangulación entre respuestas abiertas y trayectorias cuantitativas. Las categorías fueron codificadas en azul cuando presentan variabilidad interna significativa o potencia ética que amerita ser explorada en entrevista a profundidad, y en verde cuando no muestran variaciones relevantes.

Entre las categorías que destacan por su dispersión o contraste, se encuentran:

La dispersión interna de cada categoría permite identificar no solo el nivel de prosocialidad, sino también la heterogeneidad de sentidos que las personas atribuyen a sus prácticas. Este análisis visual fortalece la triangulación metodológica al vincular la codificación cualitativa con indicadores cuantitativos, y permite derivar ejes temáticos para la entrevista a profundidad, especialmente en torno a la construcción subjetiva del sentido prosocial.

🛤️ Trayectorias de los sujetos entrevistado y síntesis discursiva por categoría

# Mapeo de sujetos con síntesis centrada en Ayudar
sujetos_info <- tibble::tibble(
  Sujeto = c(41, 20, 15, 19, 9, 42),
  Nombre = c("Sujeto 1", "Sujeto 2", "Sujeto 3", "Sujeto 4", "Sujeto 6", "Sujeto 5"),
  Orden = c(1, 2, 3, 4, 6, 5),
  Nivel_prosocialidad = c("Baja", "Baja", "Baja", "Alta", "Alta", "Alta"),
  Sintesis = c(
    "No expresó elementos relevantes vinculados a la dimensión de ayudar.",
    "Concibe la ayuda como deber moral, aunque tensiona su ejecución cuando no hay reconocimiento.",
    "Asocia la ayuda con sacrificio, mostrando ambivalencia entre entrega y agotamiento relacional.",
    "No expresó elementos relevantes vinculados a la dimensión de ayudar.",
    "No expresó elementos relevantes vinculados a la dimensión de ayudar.",
    "No expresó elementos relevantes vinculados a la dimensión de ayudar."
  )
)

# Filtrar base y unir con mapeo
tabla_ayudar <- triangulacion_apa %>%
  filter(Sujeto %in% sujetos_info$Sujeto) %>%
  transmute(
    Sujeto,
    Ayudar = `X45..A Ayudar`
  ) %>%
  left_join(sujetos_info, by = "Sujeto") %>%
  arrange(Orden) %>%
  select(Nombre, Ayudar, Nivel_prosocialidad, Sintesis)

# Visualizar tabla en formato APA puro
flextable(tabla_ayudar) %>%
  set_header_labels(
    Nombre = "Sujeto",
    Ayudar = "Ayudar",
    Nivel_prosocialidad = "Nivel de prosocialidad",
    Sintesis = "Síntesis discursiva sobre la dimensión Ayudar"
  ) %>%
  autofit() %>%
  bold(part = "header") %>%
  align(align = "center", part = "all") %>%
  set_caption("Triangulación por sujeto: dimensión Ayudar y síntesis discursiva específica")
Triangulación por sujeto: dimensión Ayudar y síntesis discursiva específica

Sujeto

Ayudar

Nivel de prosocialidad

Síntesis discursiva sobre la dimensión Ayudar

Sujeto 1

15

Baja

No expresó elementos relevantes vinculados a la dimensión de ayudar.

Sujeto 2

20

Baja

Concibe la ayuda como deber moral, aunque tensiona su ejecución cuando no hay reconocimiento.

Sujeto 3

19

Baja

Asocia la ayuda con sacrificio, mostrando ambivalencia entre entrega y agotamiento relacional.

Sujeto 4

26

Alta

No expresó elementos relevantes vinculados a la dimensión de ayudar.

Sujeto 5

27

Alta

No expresó elementos relevantes vinculados a la dimensión de ayudar.

Sujeto 6

27

Alta

No expresó elementos relevantes vinculados a la dimensión de ayudar.

Triangulación por sujeto: dimensión Empatía y síntesis discursiva específica

Sujeto

Empatía

Nivel de prosocialidad

Síntesis discursiva sobre la dimensión Empatía

Sujeto 1

16

Baja

No expresó elementos relevantes vinculados a la dimensión de empatía.

Sujeto 2

15

Baja

No expresó elementos relevantes vinculados a la dimensión de empatía.

Sujeto 3

16

Baja

No expresó elementos relevantes vinculados a la dimensión de empatía.

Sujeto 4

24

Alta

Vincula la empatía con defensa ética, especialmente ante injusticias que afectan a otros.

Sujeto 5

24

Alta

Describe la empatía como apertura lúcida, capaz de sostener el dolor ajeno sin invadir.

Sujeto 6

23

Alta

No expresó elementos relevantes vinculados a la dimensión de empatía.

Triangulación por sujeto: dimensión Compartir y síntesis discursiva específica

Sujeto

Compartir

Nivel de prosocialidad

Síntesis discursiva sobre la dimensión Compartir

Sujeto 1

9

Baja

Valora el acto de compartir como gesto de justicia, pero lo vincula a contextos de reciprocidad.

Sujeto 2

12

Baja

No expresó elementos relevantes vinculados a la dimensión de compartir.

Sujeto 3

12

Baja

No expresó elementos relevantes vinculados a la dimensión de compartir.

Sujeto 4

14

Alta

No expresó elementos relevantes vinculados a la dimensión de compartir.

Sujeto 5

14

Alta

No expresó elementos relevantes vinculados a la dimensión de compartir.

Sujeto 6

14

Alta

Concibe el compartir como acto de reparación, especialmente en contextos de exclusión o duelo.

Triangulación por sujeto: total de prosocialidad y síntesis discursiva integrada

Sujeto

Total de prosocialidad

Nivel asignado

Síntesis discursiva sobre la prosocialidad global

Sujeto 1

40

Baja

Expresa una prosocialidad condicionada por reciprocidad, con énfasis en justicia relacional.

Sujeto 2

47

Baja

Su prosocialidad se sostiene en el deber ético, aunque tensionada por la necesidad de reconocimiento.

Sujeto 3

47

Baja

Muestra una prosocialidad ambivalente, marcada por entrega y agotamiento emocional.

Sujeto 4

64

Alta

Su prosocialidad se expresa como defensa ética ante el sufrimiento ajeno, con apertura lúcida.

Sujeto 5

65

Alta

No expresó elementos relevantes vinculados a una lectura global de la prosocialidad.

Sujeto 6

64

Alta

Concibe la prosocialidad como reparación simbólica, especialmente en contextos de exclusión o duelo.