📚 Librería
library(readxl)
library(readr)
library(broom)
library(tidyverse)
library(scales)
library(dplyr)
library(tidyr)
library(knitr)
library(psych)
library(rstatix)
library(ggplot2)
library(flextable)
library(treemapify)
library(ggraph)
library(igraph)
library(glue)
library(janitor)
library(broom)
❓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?
Pregunta de investigación mixta
¿Cómo cambia la prosocialidad de los estudiantes universitarios tras
participar en un voluntariado curricular?
📥 Cargar datos y funciones de formato
path_fase3 <- "/Users/adrianaholguin/Desktop/Fase 3.xlsx"
datos_fase3_raw <- read_excel(path_fase3, sheet = "Hoja1")
# --- 1. Crear dataset largo (experimental + control) ---
exp_data <- datos_fase3_raw %>%
transmute(
Grupo = "Experimental",
Sujeto = as.character(Sujeto),
Edad = as.numeric(Edad),
Sexo = Sexo,
EstadoCivil = EstadoCivil,
Trabaja = ifelse(Trabaja == "Si", 1, 0),
Residente = Residente,
ViveCon = ViveCon,
GrupoVulnerabilidad = GrupoVulnerabilidad,
TipoFamilia = TipoFamilia,
NumPersonasCasa = as.numeric(NumPersonasCasa),
NSEpercibido = as.numeric(NSEpercibido),
InvolucramientoFamiliar = as.numeric(InvolucramientoFamiliar),
InvolucramientoPersonal = as.numeric(InvolucramientoPersonal),
VoluntariadoPrevio = HaVoluntariado,
A_Total, A_Ayudar, A_Compartir, A_Empatía,
B_Total, B_Ayudar, B_Compartir, B_Empatía,
Cambio_Total = B_Total - A_Total,
Cambio_Ayudar = B_Ayudar - A_Ayudar,
Cambio_Compartir = B_Compartir - A_Compartir,
Cambio_Empatia = B_Empatía - A_Empatía
)
ctrl_data <- datos_fase3_raw %>%
transmute(
Grupo = "Control",
Sujeto = as.character(Sujeto_C),
Edad = as.numeric(Edad_C),
Sexo = Sexo_C,
EstadoCivil = EstadoCivil_C,
Trabaja = ifelse(Trabaja_C == "Si", 1, 0),
Residente = Residente_C,
ViveCon = ViveCon_C,
GrupoVulnerabilidad = GrupoVulnerabilidad_C,
TipoFamilia = TipoFamilia_C,
NumPersonasCasa = as.numeric(NumPersonasCasa_C),
NSEpercibido = as.numeric(NSEpercibido_C),
InvolucramientoFamiliar = as.numeric(InvolucramientoFamiliar_C),
InvolucramientoPersonal = as.numeric(InvolucramientoPersonal_C),
VoluntariadoPrevio = HaVoluntariado_C,
C_Total, C_Ayudar, C_Compartir, C_Empatía
)
# --- 2. Unir ambos ---
datos_fase3_listo <- bind_rows(exp_data, ctrl_data)
# --- 3. Convertir columnas de control a numéricas (para que "" se vuelva NA) ---
datos_fase3_listo <- datos_fase3_listo %>%
mutate(
C_Total = as.numeric(C_Total),
C_Ayudar = as.numeric(C_Ayudar),
C_Compartir = as.numeric(C_Compartir),
C_Empatía = as.numeric(C_Empatía)
)
# --- 4. Filtrar controles sin datos (los NA) ---
datos_fase3_listo <- datos_fase3_listo %>%
filter(!(Grupo == "Control" & is.na(C_Total)))
# --- 5. Revisión ---
table(datos_fase3_listo$Grupo)
##
## Control Experimental
## 35 39
nrow(datos_fase3_listo)
## [1] 74
📈 Estadística descriptiva (A vs B)
tabla_medias_AB <- datos_fase3_listo %>%
filter(Grupo == "Experimental") %>%
summarise(
n = n(),
mean_pre_total = mean(A_Total, na.rm = TRUE),
sd_pre_total = sd(A_Total, na.rm = TRUE),
mean_post_total = mean(B_Total, na.rm = TRUE),
sd_post_total = sd(B_Total, na.rm = TRUE),
mean_pre_ayudar = mean(A_Ayudar, na.rm = TRUE),
sd_pre_ayudar = sd(A_Ayudar, na.rm = TRUE),
mean_post_ayudar = mean(B_Ayudar, na.rm = TRUE),
sd_post_ayudar = sd(B_Ayudar, na.rm = TRUE),
mean_pre_compartir = mean(A_Compartir, na.rm = TRUE),
sd_pre_compartir = sd(A_Compartir, na.rm = TRUE),
mean_post_compartir = mean(B_Compartir, na.rm = TRUE),
sd_post_compartir = sd(B_Compartir, na.rm = TRUE),
mean_pre_empatia = mean(A_Empatía, na.rm = TRUE),
sd_pre_empatia = sd(A_Empatía, na.rm = TRUE),
mean_post_empatia = mean(B_Empatía, na.rm = TRUE),
sd_post_empatia = sd(B_Empatía, na.rm = TRUE)
)
Estadística descriptiva pre vs post (A vs B, grupo
experimental)
|
Dimensión
|
M Pre
|
SD Pre
|
M Post
|
SD Post
|
|
Total
|
54.15
|
7.23
|
56.46
|
5.29
|
|
Ayudar
|
22.05
|
3.49
|
23.38
|
2.61
|
|
Compartir
|
12.72
|
1.47
|
12.77
|
1.27
|
|
Empatía
|
20.28
|
2.71
|
20.95
|
2.32
|
🧪 T-tests independientes (A vs B)
# T-tests pareados (A vs B, grupo experimental)
tt_AB_total <- t.test(datos_fase3_listo$A_Total[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Total[datos_fase3_listo$Grupo=="Experimental"],
paired = TRUE)
tt_AB_ayudar <- t.test(datos_fase3_listo$A_Ayudar[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Ayudar[datos_fase3_listo$Grupo=="Experimental"],
paired = TRUE)
tt_AB_compartir <- t.test(datos_fase3_listo$A_Compartir[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Compartir[datos_fase3_listo$Grupo=="Experimental"],
paired = TRUE)
tt_AB_empatia <- t.test(datos_fase3_listo$A_Empatía[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Empatía[datos_fase3_listo$Grupo=="Experimental"],
paired = TRUE)
# Tabla compacta de resultados
res_AB <- bind_rows(
tidy(tt_AB_total) %>% mutate(Comparacion = "Pre vs Post (Total, Experimental)"),
tidy(tt_AB_ayudar) %>% mutate(Comparacion = "Pre vs Post (Ayudar, Experimental)"),
tidy(tt_AB_compartir) %>% mutate(Comparacion = "Pre vs Post (Compartir, Experimental)"),
tidy(tt_AB_empatia) %>% mutate(Comparacion = "Pre vs Post (Empatía, Experimental)")
) %>%
select(Comparacion, estimate, statistic, p.value, conf.low, conf.high)
Resultados t-test pre vs post (A vs B, grupo experimental)
|
Dimensión
|
Dif. medias (Post-Pre)
|
t
|
p-value
|
IC 95%
|
|
Pre vs Post (Total, Experimental)
|
-2.31
|
-4.00
|
0.000
|
[-3.47, -1.14]
|
|
Pre vs Post (Ayudar, Experimental)
|
-1.33
|
-4.27
|
0.000
|
[-1.97, -0.7]
|
|
Pre vs Post (Compartir, Experimental)
|
-0.05
|
-0.39
|
0.700
|
[-0.32, 0.22]
|
|
Pre vs Post (Empatía, Experimental)
|
-0.67
|
-2.86
|
0.007
|
[-1.14, -0.19]
|
📈 Estadística descriptiva (A vs C)
# Crear columna común de pretest (A para experimental, C para control)
datos_fase3_listo <- datos_fase3_listo %>%
mutate(
Pre_Total = ifelse(Grupo == "Experimental", A_Total, C_Total),
Pre_Ayudar = ifelse(Grupo == "Experimental", A_Ayudar, C_Ayudar),
Pre_Compartir = ifelse(Grupo == "Experimental", A_Compartir, C_Compartir),
Pre_Empatia = ifelse(Grupo == "Experimental", A_Empatía, C_Empatía)
)
# Estadística descriptiva por grupo
tabla_medias_pre <- datos_fase3_listo %>%
group_by(Grupo) %>%
summarise(
n = n(),
mean_total = mean(Pre_Total, na.rm = TRUE),
sd_total = sd(Pre_Total, na.rm = TRUE),
mean_ayudar = mean(Pre_Ayudar, na.rm = TRUE),
sd_ayudar = sd(Pre_Ayudar, na.rm = TRUE),
mean_compartir = mean(Pre_Compartir, na.rm = TRUE),
sd_compartir = sd(Pre_Compartir, na.rm = TRUE),
mean_empatia = mean(Pre_Empatia, na.rm = TRUE),
sd_empatia = sd(Pre_Empatia, na.rm = TRUE)
)
Estadística descriptiva pre-test (A vs C)
|
Grupo
|
n
|
M Total
|
SD Total
|
M Ayudar
|
SD Ayudar
|
M Compartir
|
SD Compartir
|
M Empatía
|
SD Empatía
|
|
Control
|
35
|
48.17
|
8.59
|
20.20
|
4.38
|
11.23
|
2.00
|
17.91
|
3.42
|
|
Experimental
|
39
|
54.15
|
7.23
|
22.05
|
3.49
|
12.72
|
1.47
|
20.28
|
2.71
|
🧪 T-tests independientes (A vs C)
# t-tests independientes (A vs C)
tt_AC_total <- t.test(Pre_Total ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_AC_ayudar <- t.test(Pre_Ayudar ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_AC_compartir <- t.test(Pre_Compartir ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_AC_empatia <- t.test(Pre_Empatia ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
# Tabla compacta de resultados
res_AC <- bind_rows(
tidy(tt_AC_total) %>% mutate(Comparacion = "Pre (Total) Exp vs Ctrl"),
tidy(tt_AC_ayudar) %>% mutate(Comparacion = "Pre (Ayudar) Exp vs Ctrl"),
tidy(tt_AC_compartir) %>% mutate(Comparacion = "Pre (Compartir) Exp vs Ctrl"),
tidy(tt_AC_empatia) %>% mutate(Comparacion = "Pre (Empatía) Exp vs Ctrl")
) %>%
select(Comparacion, estimate, statistic, p.value, conf.low, conf.high)
Resultados t-test pre-test (A vs C)
|
Dimensión
|
Dif. medias (Exp-Ctrl)
|
t
|
p-value
|
IC 95%
|
|
Pre (Total) Exp vs Ctrl
|
-5.98
|
-3.22
|
0.002
|
[-9.69, -2.28]
|
|
Pre (Ayudar) Exp vs Ctrl
|
-1.85
|
-2.00
|
0.050
|
[-3.7, 0]
|
|
Pre (Compartir) Exp vs Ctrl
|
-1.49
|
-3.62
|
0.001
|
[-2.31, -0.67]
|
|
Pre (Empatía) Exp vs Ctrl
|
-2.37
|
-3.28
|
0.002
|
[-3.81, -0.92]
|
📈 Estadística descriptiva (B vs C)
# Crear columna común de post-test (B para experimental, C para control)
datos_fase3_listo <- datos_fase3_listo %>%
mutate(
Post_Total = ifelse(Grupo == "Experimental", B_Total, C_Total),
Post_Ayudar = ifelse(Grupo == "Experimental", B_Ayudar, C_Ayudar),
Post_Compartir = ifelse(Grupo == "Experimental", B_Compartir, C_Compartir),
Post_Empatia = ifelse(Grupo == "Experimental", B_Empatía, C_Empatía)
)
# Estadística descriptiva por grupo (post-test)
tabla_medias_post <- datos_fase3_listo %>%
group_by(Grupo) %>%
summarise(
n = n(),
mean_total = mean(Post_Total, na.rm = TRUE),
sd_total = sd(Post_Total, na.rm = TRUE),
mean_ayudar = mean(Post_Ayudar, na.rm = TRUE),
sd_ayudar = sd(Post_Ayudar, na.rm = TRUE),
mean_compartir = mean(Post_Compartir, na.rm = TRUE),
sd_compartir = sd(Post_Compartir, na.rm = TRUE),
mean_empatia = mean(Post_Empatia, na.rm = TRUE),
sd_empatia = sd(Post_Empatia, na.rm = TRUE)
)
Estadística descriptiva post-test (B vs C)
|
Grupo
|
n
|
M Total
|
SD Total
|
M Ayudar
|
SD Ayudar
|
M Compartir
|
SD Compartir
|
M Empatía
|
SD Empatía
|
|
Control
|
35
|
48.17
|
8.59
|
20.20
|
4.38
|
11.23
|
2.00
|
17.91
|
3.42
|
|
Experimental
|
39
|
56.46
|
5.29
|
23.38
|
2.61
|
12.77
|
1.27
|
20.95
|
2.32
|
🧪 T-tests independientes (B vs C)
# T-tests independientes (B vs C)
tt_BC_total <- t.test(Post_Total ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_BC_ayudar <- t.test(Post_Ayudar ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_BC_compartir <- t.test(Post_Compartir ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
tt_BC_empatia <- t.test(Post_Empatia ~ Grupo, data = datos_fase3_listo, na.action = na.omit)
# Tabla compacta de resultados
res_BC <- bind_rows(
tidy(tt_BC_total) %>% mutate(Comparacion = "Post (Total) Exp vs Ctrl"),
tidy(tt_BC_ayudar) %>% mutate(Comparacion = "Post (Ayudar) Exp vs Ctrl"),
tidy(tt_BC_compartir) %>% mutate(Comparacion = "Post (Compartir) Exp vs Ctrl"),
tidy(tt_BC_empatia) %>% mutate(Comparacion = "Post (Empatía) Exp vs Ctrl")
) %>%
select(Comparacion, estimate, statistic, p.value, conf.low, conf.high)
Resultados t-test post-test (B vs C)
|
Dimensión
|
Dif. medias (Exp-Ctrl)
|
t
|
p-value
|
IC 95%
|
|
Post (Total) Exp vs Ctrl
|
-8.29
|
-4.93
|
0
|
[-11.66, -4.92]
|
|
Post (Ayudar) Exp vs Ctrl
|
-3.18
|
-3.75
|
0
|
[-4.89, -1.48]
|
|
Post (Compartir) Exp vs Ctrl
|
-1.54
|
-3.91
|
0
|
[-2.33, -0.75]
|
|
Post (Empatía) Exp vs Ctrl
|
-3.03
|
-4.42
|
0
|
[-4.41, -1.66]
|
🛡️ Pruebas de robustez: Wilcoxon
# --- Wilcoxon A vs B (pareado) ---
wil_AB_total <- wilcox.test(datos_fase3_listo$A_Total[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Total[datos_fase3_listo$Grupo=="Experimental"], paired = TRUE)
wil_AB_ayudar <- wilcox.test(datos_fase3_listo$A_Ayudar[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Ayudar[datos_fase3_listo$Grupo=="Experimental"], paired = TRUE)
wil_AB_compartir <- wilcox.test(datos_fase3_listo$A_Compartir[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Compartir[datos_fase3_listo$Grupo=="Experimental"], paired = TRUE)
wil_AB_empatia <- wilcox.test(datos_fase3_listo$A_Empatía[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$B_Empatía[datos_fase3_listo$Grupo=="Experimental"], paired = TRUE)
res_wil_AB <- tibble::tibble(
Comparación = "A vs B (Experimental pre vs post)",
Dimensión = c("Total","Ayudar","Compartir","Empatía"),
W = c(wil_AB_total$statistic, wil_AB_ayudar$statistic, wil_AB_compartir$statistic, wil_AB_empatia$statistic),
p.value = c(wil_AB_total$p.value, wil_AB_ayudar$p.value, wil_AB_compartir$p.value, wil_AB_empatia$p.value)
)
# --- Wilcoxon B vs C (independientes) ---
wil_BC_total <- wilcox.test(datos_fase3_listo$B_Total[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Total[datos_fase3_listo$Grupo=="Control"])
wil_BC_ayudar <- wilcox.test(datos_fase3_listo$B_Ayudar[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Ayudar[datos_fase3_listo$Grupo=="Control"])
wil_BC_compartir <- wilcox.test(datos_fase3_listo$B_Compartir[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Compartir[datos_fase3_listo$Grupo=="Control"])
wil_BC_empatia <- wilcox.test(datos_fase3_listo$B_Empatía[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Empatía[datos_fase3_listo$Grupo=="Control"])
res_wil_BC <- tibble::tibble(
Comparación = "B vs C (Experimental post vs Control)",
Dimensión = c("Total","Ayudar","Compartir","Empatía"),
W = c(wil_BC_total$statistic, wil_BC_ayudar$statistic, wil_BC_compartir$statistic, wil_BC_empatia$statistic),
p.value = c(wil_BC_total$p.value, wil_BC_ayudar$p.value, wil_BC_compartir$p.value, wil_BC_empatia$p.value)
)
# --- Wilcoxon A vs C (independientes) ---
wil_AC_total <- wilcox.test(datos_fase3_listo$A_Total[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Total[datos_fase3_listo$Grupo=="Control"])
wil_AC_ayudar <- wilcox.test(datos_fase3_listo$A_Ayudar[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Ayudar[datos_fase3_listo$Grupo=="Control"])
wil_AC_compartir <- wilcox.test(datos_fase3_listo$A_Compartir[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Compartir[datos_fase3_listo$Grupo=="Control"])
wil_AC_empatia <- wilcox.test(datos_fase3_listo$A_Empatía[datos_fase3_listo$Grupo=="Experimental"],
datos_fase3_listo$C_Empatía[datos_fase3_listo$Grupo=="Control"])
res_wil_AC <- tibble::tibble(
Comparación = "A vs C (Experimental pre vs Control)",
Dimensión = c("Total","Ayudar","Compartir","Empatía"),
W = c(wil_AC_total$statistic, wil_AC_ayudar$statistic, wil_AC_compartir$statistic, wil_AC_empatia$statistic),
p.value = c(wil_AC_total$p.value, wil_AC_ayudar$p.value, wil_AC_compartir$p.value, wil_AC_empatia$p.value)
)
# --- Unir todo ---
res_wil_all <- bind_rows(res_wil_AB, res_wil_BC, res_wil_AC) %>%
mutate(across(where(is.numeric), ~round(.x, 3)))
Pruebas Wilcoxon (A vs B, B vs C, A vs C)
|
Comparación
|
Dimensión
|
W
|
p-value
|
|
A vs B (Experimental pre vs post)
|
Total
|
119.0
|
0.000
|
|
A vs B (Experimental pre vs post)
|
Ayudar
|
76.5
|
0.000
|
|
A vs B (Experimental pre vs post)
|
Compartir
|
45.5
|
0.669
|
|
A vs B (Experimental pre vs post)
|
Empatía
|
118.5
|
0.010
|
|
B vs C (Experimental post vs Control)
|
Total
|
1059.5
|
0.000
|
|
B vs C (Experimental post vs Control)
|
Ayudar
|
1007.5
|
0.000
|
|
B vs C (Experimental post vs Control)
|
Compartir
|
1002.0
|
0.000
|
|
B vs C (Experimental post vs Control)
|
Empatía
|
1035.5
|
0.000
|
|
A vs C (Experimental pre vs Control)
|
Total
|
952.0
|
0.004
|
|
A vs C (Experimental pre vs Control)
|
Ayudar
|
853.0
|
0.064
|
|
A vs C (Experimental pre vs Control)
|
Compartir
|
985.0
|
0.001
|
|
A vs C (Experimental pre vs Control)
|
Empatía
|
954.5
|
0.003
|
```