library(readxl)
library(glue)
library(dplyr)
library(psych)
library(ggplot2)
library(knitr)
library(janitor)
library(nortest)
library(kableExtra)
library(tidyr)
library(ggrepel)
library(tidyverse)
library(effsize)
datos <- read_excel("/Users/adrianaholguin/Desktop/Copia de Tabla analisis tesis R.xlsx")
##Limpiar nombres
# Renombrar columnas
names(datos) <- c(
"Serie", "Edad", "Sexo", "Estado_civil", "Trabaja", "Residente", "Vive_con",
"Grupo_vulnerabilidad", "Tipo_familia", "Num_personas_casa", "Nivel_socioeconomico",
"Involucramiento_familiar", "Involucramiento_personal", "Gusto_voluntariado",
"Areas_interes", "Ha_voluntariado", "Cantidad_voluntariados", "Quien_involucro",
"Tipos_voluntariados", "Motivacion_voluntariado", "Percibe_beneficio",
"Beneficio_percibido", "Recuerdo_voluntariado", "Volveria_participar",
"Motivo_no_participar", "Le_gustaria_participar", "Beneficio_esperado",
# Ítems del instrumento A
"A_item1", "A_item2", "A_item3", "A_item4", "A_item5", "A_item6",
"A_item7", "A_item8", "A_item9", "A_item10", "A_item11", "A_item12",
"A_item13", "A_item14", "A_item15", "A_item16",
"Ayudar_A", "Empatia_A", "Compartir_A", "Total_A",
# Ítems del instrumento B
"B_item1", "B_item2", "B_item3", "B_item4", "B_item5", "B_item6",
"B_item7", "B_item8", "B_item9", "B_item10", "B_item11", "B_item12",
"B_item13", "B_item14", "B_item15", "B_item16",
"Ayudar_B", "Empatia_B", "Compartir_B", "Total_B"
)
¿Qué relación existe entre la participación en un voluntariado curricular y el desarrollo de conductas prosociales en estudiantes universitarios?
¿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?
¿Cómo cambia la prosocialidad de los estudiantes universitarios tras participar en un voluntariado curricular?
# Variables a comparar
pares <- list(
Ayudar = c("Ayudar_A", "Ayudar_B"),
Empatía = c("Empatia_A", "Empatia_B"),
Compartir = c("Compartir_A", "Compartir_B"),
Total = c("Total_A", "Total_B")
)
# Función para análisis pre-post
analisis_pre_post <- function(nombre, pre_var, post_var, datos) {
pre <- datos[[pre_var]]
post <- datos[[post_var]]
# Prueba t pareada
prueba <- t.test(pre, post, paired = TRUE)
# Tamaño del efecto
efecto <- cohen.d(post, pre, paired = TRUE)
# Resultados
cat(glue::glue("
<h3 style='font-size:20px; font-family:Lucida Sans;'>{nombre}</h3>
<p style='font-size:14pt;'>t = {round(prueba$statistic, 2)}, gl = {prueba$parameter}, p = {round(prueba$p.value, 4)}</p>
<p style='font-size:14pt;'>Diferencia media: {round(mean(post - pre, na.rm = TRUE), 2)}</p>
<p style='font-size:14pt;'>Tamaño del efecto (Cohen's d): {round(efecto$estimate, 2)} ({efecto$magnitude})</p>
<hr style='border: none; border-top: 1px solid #999; margin: 12px 0;'>
"))
}
# Aplicar análisis a cada par
walk2(names(pares), pares, ~analisis_pre_post(.x, .y[1], .y[2], datos))
t = -13.56, gl = 41, p = 0
Diferencia media: 5.55
Tamaño del efecto (Cohen’s d): 1.64 (large)
t = 0.26, gl = 41, p = 0.7953
Diferencia media: -0.07
Tamaño del efecto (Cohen’s d): -0.03 (negligible)
t = 2.84, gl = 41, p = 0.007
Diferencia media: -0.86
Tamaño del efecto (Cohen’s d): -0.51 (medium)
t = -6.54, gl = 41, p = 0
Diferencia media: 4.62
Tamaño del efecto (Cohen’s d): 0.71 (medium)
# Reorganizar los datos en formato largo
datos_largos <- datos %>%
select(Ayudar_A, Ayudar_B, Empatia_A, Empatia_B, Compartir_A, Compartir_B, Total_A, Total_B) %>%
pivot_longer(cols = everything(),
names_to = c("Dimensión", "Momento"),
names_sep = "_",
values_to = "Puntaje")
# Etiquetas limpias
datos_largos$Dimensión <- factor(datos_largos$Dimensión,
levels = c("Ayudar", "Empatia", "Compartir", "Total"),
labels = c("Ayudar", "Empatía", "Compartir", "Total prosocialidad"))
datos_largos$Momento <- factor(datos_largos$Momento,
levels = c("A", "B"),
labels = c("Antes", "Después"))
# Graficar líneas de densidad superpuestas
ggplot(datos_largos, aes(x = Puntaje, color = Momento)) +
geom_density(size = 1.2, adjust = 1.2, alpha = 0.7) +
facet_wrap(~ Dimensión, scales = "free") +
scale_color_manual(values = c("Antes" = "#1f77b4", "Después" = "#ff7f0e")) +
labs(title = "Comparación de trayectorias pre y post intervención",
x = "Puntaje en escala de prosocialidad",
y = "Densidad",
color = "Momento") +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
strip.text = element_text(size = 14),
axis.title = element_text(size = 12),
legend.title = element_text(size = 12),
legend.text = element_text(size = 11)
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Simular puntajes para 42 sujetos
set.seed(123)
datos <- data.frame(Serie = as.character(1:42)) # Crear base con Serie como character
datos$Ayudar_A <- sample(10:20, size = 42, replace = TRUE)
datos$Ayudar_B <- datos$Ayudar_A + sample(-2:4, size = 42, replace = TRUE)
datos$Compartir_A <- sample(10:20, size = 42, replace = TRUE)
datos$Compartir_B <- datos$Compartir_A + sample(-3:3, size = 42, replace = TRUE)
datos$Empatia_A <- sample(10:20, size = 42, replace = TRUE)
datos$Empatia_B <- datos$Empatia_A + sample(-2:2, size = 42, replace = TRUE)
datos$Total_A <- round((datos$Ayudar_A + datos$Compartir_A + datos$Empatia_A)/3, 1)
datos$Total_B <- round((datos$Ayudar_B + datos$Compartir_B + datos$Empatia_B)/3, 1)
# Sujetos entrevistados en aplicación B
entrevistados <- c("5", "36", "6", "40", "20", "2")
# Función para graficar trayectorias por dimensión
graficar_trayectorias <- function(nombre_A, nombre_B, nombre_dim) {
df <- datos %>%
select(Serie, A = all_of(nombre_A), B = all_of(nombre_B)) %>%
pivot_longer(cols = c("A", "B"),
names_to = "Momento",
values_to = "Puntaje") %>%
mutate(Momento = ifelse(Momento == "A", "Antes", "Después"),
Entrevistado = ifelse(Serie %in% entrevistados, "Sí", "No"))
ggplot(df, aes(x = Momento, y = Puntaje, group = Serie)) +
geom_line(aes(color = Entrevistado), size = 0.8, alpha = 0.6) +
geom_point(aes(color = Entrevistado), size = 2) +
geom_text(data = df %>% filter(Entrevistado == "Sí"),
aes(label = Serie),
position = position_jitter(width = 0.1, height = 0.5),
size = 3.5, color = "#E74C3C") +
scale_color_manual(values = c("Sí" = "#E74C3C", "No" = "#BDC3C7")) +
labs(
title = paste("Trayectorias individuales en", nombre_dim),
subtitle = "Sujetos entrevistados identificados en rojo",
x = "", y = "Puntaje",
color = "Entrevistado"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "right")
}
# Generar gráficos para las 4 dimensiones
graficar_trayectorias("Ayudar_A", "Ayudar_B", "Ayudar")
graficar_trayectorias("Compartir_A", "Compartir_B", "Compartir")
graficar_trayectorias("Empatia_A", "Empatia_B", "Empatía")
graficar_trayectorias("Total_A", "Total_B", "Total prosocialidad")