# Instalar solo la primera vez (descomentar si hace falta)
# install.packages(c("readxl", "tidyverse", "janitor", "skimr", "effsize", "car", "knitr"))
library(readxl) # Leer archivos .xlsx
library(tidyverse) # dplyr, ggplot2, tidyr, forcats
library(janitor) # Limpiar nombres de columnas
library(skimr) # Resumen exploratorio rapido
library(effsize) # Tamano del efecto (d de Cohen)
library(car) # Test de Levene
library(knitr) # Tablas con kable()
# -------------------------------------------------------------------------
# IMPORTANTE - COMO EVITAR EL ERROR "path does not exist":
# 1) Guarda el archivo .xlsx EN LA MISMA CARPETA que este .Rmd.
# 2) Ve a: Session > Set Working Directory > To Source File Location.
# 3) Verifica el nombre EXACTO del archivo con list.files() (ver abajo).
# 4) Si tu archivo tiene un nombre distinto (ej. con espacios o "(1)"),
# renombralo a "Base_Gobernanza_Global.xlsx" o cambia la ruta abajo.
# -------------------------------------------------------------------------
# Descomenta estas 2 lineas para depurar si el archivo no aparece:
# getwd()
# list.files()
gobernanza <- read_excel("Base_Gobernanza_Global.xlsx") %>%
clean_names()
# Estructura general: tipo de cada variable
glimpse(gobernanza)
## Rows: 100
## Columns: 11
## $ edad <dbl> 59, 47, 59, 65, 45, 59, 39, 56,…
## $ sexo <chr> "Femenino", "Masculino", "Mascu…
## $ nivel_educativo <chr> "Universitario", "Secundaria", …
## $ conocimiento_ods <chr> "Medio", "Medio", "Alto", "Alto…
## $ confianza_gobernanza_global <dbl> 8, 5, 1, 6, 4, 1, 5, 6, 8, 7, 6…
## $ apoyo_iniciativas_climaticas <chr> "Sí", "Sí", "Sí", "Sí", "Sí", "…
## $ percepcion_justicia_global <dbl> 1, 4, 9, 5, 2, 9, 9, 8, 3, 8, 6…
## $ participacion_espacios_internacionales <chr> "No", "Sí", "No", "No", "Sí", "…
## $ frecuencia_lectura_agenda2030 <chr> "Nunca", "Baja", "Media", "Alta…
## $ actitud_cooperacion <dbl> 3, 3, 8, 7, 9, 10, 8, 6, 1, 1, …
## $ satisfaccion_gestion_global <dbl> 10, 5, 7, 1, 8, 6, 9, 10, 2, 9,…
# Numero de filas (observaciones) y columnas (variables)
dim(gobernanza)
## [1] 100 11
# Verificamos que no existan valores perdidos (NA)
colSums(is.na(gobernanza))
## edad sexo
## 0 0
## nivel_educativo conocimiento_ods
## 0 0
## confianza_gobernanza_global apoyo_iniciativas_climaticas
## 0 0
## percepcion_justicia_global participacion_espacios_internacionales
## 0 0
## frecuencia_lectura_agenda2030 actitud_cooperacion
## 0 0
## satisfaccion_gestion_global
## 0
resumen_numerico <- gobernanza %>%
summarise(
across(
c(edad, confianza_gobernanza_global, percepcion_justicia_global,
actitud_cooperacion, satisfaccion_gestion_global),
list(media = ~mean(.x, na.rm = TRUE),
mediana = ~median(.x, na.rm = TRUE),
de = ~sd(.x, na.rm = TRUE),
min = ~min(.x, na.rm = TRUE),
max = ~max(.x, na.rm = TRUE)),
.names = "{.col}_{.fn}"
)
)
kable(t(resumen_numerico), col.names = "Valor", digits = 2,
caption = "Resumen descriptivo de variables numericas")
Resumen descriptivo de variables numericas
| edad_media |
39.13 |
| edad_mediana |
38.00 |
| edad_de |
13.93 |
| edad_min |
18.00 |
| edad_max |
65.00 |
| confianza_gobernanza_global_media |
5.19 |
| confianza_gobernanza_global_mediana |
5.00 |
| confianza_gobernanza_global_de |
2.73 |
| confianza_gobernanza_global_min |
1.00 |
| confianza_gobernanza_global_max |
10.00 |
| percepcion_justicia_global_media |
5.01 |
| percepcion_justicia_global_mediana |
5.00 |
| percepcion_justicia_global_de |
2.66 |
| percepcion_justicia_global_min |
1.00 |
| percepcion_justicia_global_max |
10.00 |
| actitud_cooperacion_media |
5.22 |
| actitud_cooperacion_mediana |
5.00 |
| actitud_cooperacion_de |
3.16 |
| actitud_cooperacion_min |
1.00 |
| actitud_cooperacion_max |
10.00 |
| satisfaccion_gestion_global_media |
5.41 |
| satisfaccion_gestion_global_mediana |
5.00 |
| satisfaccion_gestion_global_de |
3.05 |
| satisfaccion_gestion_global_min |
1.00 |
| satisfaccion_gestion_global_max |
10.00 |
ggplot(gobernanza, aes(x = confianza_gobernanza_global)) +
geom_histogram(binwidth = 1, fill = "#2f6f5e", color = "white") +
labs(title = "Distribucion de la confianza en la gobernanza global",
x = "Nivel de confianza (1-10)", y = "Frecuencia") +
theme_minimal(base_size = 13)

ggplot(gobernanza, aes(y = satisfaccion_gestion_global)) +
geom_boxplot(fill = "#b08c3a", alpha = 0.7) +
labs(title = "Boxplot: satisfaccion con la gestion global",
y = "Satisfaccion (1-10)") +
theme_minimal(base_size = 13)

tabla_educ <- gobernanza %>%
count(nivel_educativo) %>%
mutate(porcentaje = round(100 * n / sum(n), 1))
kable(tabla_educ, col.names = c("Nivel educativo", "Frecuencia", "Porcentaje (%)"),
caption = "Distribucion del nivel educativo")
Distribucion del nivel educativo
| Postgrado |
24 |
24 |
| Secundaria |
21 |
21 |
| Técnico |
29 |
29 |
| Universitario |
26 |
26 |
ggplot(gobernanza, aes(x = fct_infreq(nivel_educativo))) +
geom_bar(fill = "#2f6f9e") +
labs(title = "Nivel educativo de los encuestados",
x = "Nivel educativo", y = "Numero de personas") +
theme_minimal(base_size = 13)

vars_numericas <- gobernanza %>%
select(edad, confianza_gobernanza_global, percepcion_justicia_global,
actitud_cooperacion, satisfaccion_gestion_global)
matriz_cor <- round(cor(vars_numericas, use = "complete.obs"), 2)
kable(matriz_cor, caption = "Matriz de correlaciones entre variables numericas")
Matriz de correlaciones entre variables numericas
| edad |
1.00 |
0.02 |
-0.10 |
0.17 |
-0.12 |
| confianza_gobernanza_global |
0.02 |
1.00 |
-0.15 |
0.08 |
-0.09 |
| percepcion_justicia_global |
-0.10 |
-0.15 |
1.00 |
0.06 |
0.18 |
| actitud_cooperacion |
0.17 |
0.08 |
0.06 |
1.00 |
-0.06 |
| satisfaccion_gestion_global |
-0.12 |
-0.09 |
0.18 |
-0.06 |
1.00 |
ggplot(gobernanza, aes(x = percepcion_justicia_global, y = actitud_cooperacion)) +
geom_jitter(width = 0.15, height = 0.15, color = "#7a5ba6", alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "#1c2321") +
labs(title = "Percepcion de justicia global y actitud de cooperacion",
x = "Percepcion de justicia global (1-10)",
y = "Actitud de cooperacion (1-10)") +
theme_minimal(base_size = 13)

resumen_participacion <- gobernanza %>%
group_by(participacion_espacios_internacionales) %>%
summarise(media = mean(percepcion_justicia_global),
de = sd(percepcion_justicia_global),
n = n())
kable(resumen_participacion, digits = 2,
col.names = c("Participa en espacios internacionales", "Media", "DE", "n"),
caption = "Percepcion de justicia global segun participacion internacional")
Percepcion de justicia global segun participacion
internacional
| No |
5.49 |
2.66 |
61 |
| Sí |
4.26 |
2.53 |
39 |
# NOTA IMPORTANTE: las categorias reales de esta variable son "Sí" (con tilde)
# y "No". Los nombres en scale_fill_manual deben escribirse EXACTAMENTE
# igual (incluyendo tildes) o ggplot no aplicara el color personalizado.
ggplot(gobernanza, aes(x = participacion_espacios_internacionales,
y = percepcion_justicia_global,
fill = participacion_espacios_internacionales)) +
geom_boxplot(alpha = 0.8) +
scale_fill_manual(values = c("Sí" = "#2f6f5e", "No" = "#c1622e")) +
labs(title = "Justicia global percibida segun participacion internacional",
x = "Participa en espacios internacionales?",
y = "Percepcion de justicia global (1-10)") +
theme_minimal(base_size = 13)

gobernanza %>%
group_by(participacion_espacios_internacionales) %>%
summarise(shapiro_p_valor = shapiro.test(percepcion_justicia_global)$p.value)
## # A tibble: 2 × 2
## participacion_espacios_internacionales shapiro_p_valor
## <chr> <dbl>
## 1 No 0.0106
## 2 Sí 0.00302
ggplot(gobernanza, aes(sample = percepcion_justicia_global)) +
stat_qq(color = "#2f6f5e") +
stat_qq_line(color = "#1c2321") +
labs(title = "Grafico QQ: percepcion de justicia global") +
theme_minimal(base_size = 13)

leveneTest(percepcion_justicia_global ~ participacion_espacios_internacionales,
data = gobernanza)
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 1 0.7433 0.3907
## 98
prueba_t <- t.test(percepcion_justicia_global ~ participacion_espacios_internacionales,
data = gobernanza)
prueba_t
##
## Welch Two Sample t-test
##
## data: percepcion_justicia_global by participacion_espacios_internacionales
## t = 2.3351, df = 83.978, p-value = 0.02193
## alternative hypothesis: true difference in means between group No and group Sí is not equal to 0
## 95 percent confidence interval:
## 0.1832985 2.2874876
## sample estimates:
## mean in group No mean in group Sí
## 5.491803 4.256410
efecto <- cohen.d(percepcion_justicia_global ~ participacion_espacios_internacionales,
data = gobernanza)
efecto
##
## Cohen's d
##
## d estimate: 0.4736515 (small)
## 95 percent confidence interval:
## lower upper
## 0.06139681 0.88590611
# Prueba de respaldo, dado que no se cumple estrictamente la normalidad
wilcox.test(percepcion_justicia_global ~ participacion_espacios_internacionales,
data = gobernanza, conf.int = TRUE)
##
## Wilcoxon rank sum test with continuity correction
##
## data: percepcion_justicia_global by participacion_espacios_internacionales
## W = 1508, p-value = 0.02368
## alternative hypothesis: true location shift is not equal to 0
## 95 percent confidence interval:
## 4.939998e-05 2.000005e+00
## sample estimates:
## difference in location
## 1.000003
# SOLUCION PARA EL DOCENTE (eval = FALSE para que no se ejecute automaticamente)
# Recordatorio: las categorias son "Sí" (con tilde) y "No"
gobernanza %>%
group_by(apoyo_iniciativas_climaticas) %>%
summarise(media = mean(actitud_cooperacion),
mediana = median(actitud_cooperacion),
de = sd(actitud_cooperacion), n = n())
ggplot(gobernanza, aes(x = apoyo_iniciativas_climaticas, y = actitud_cooperacion,
fill = apoyo_iniciativas_climaticas)) +
geom_boxplot(alpha = 0.8) +
scale_fill_manual(values = c("Sí" = "#2f6f9e", "No" = "#c1622e")) +
labs(title = "Actitud de cooperacion segun apoyo a iniciativas climaticas",
x = "Apoya iniciativas climaticas?", y = "Actitud de cooperacion (1-10)") +
theme_minimal()
gobernanza %>%
group_by(apoyo_iniciativas_climaticas) %>%
summarise(shapiro_p = shapiro.test(actitud_cooperacion)$p.value)
leveneTest(actitud_cooperacion ~ apoyo_iniciativas_climaticas, data = gobernanza)
t.test(actitud_cooperacion ~ apoyo_iniciativas_climaticas, data = gobernanza)
cohen.d(actitud_cooperacion ~ apoyo_iniciativas_climaticas, data = gobernanza)
wilcox.test(actitud_cooperacion ~ apoyo_iniciativas_climaticas, data = gobernanza,
conf.int = TRUE)
# RESULTADO ESPERADO (referencia para el docente, calculado sobre estos datos):
# Media grupo "Si" ~ 5.41 (n=71) vs grupo "No" ~ 4.76 (n=29)
# t-test: t ~ 0.88, p ~ 0.38 (NO significativo)
# Cohen's d ~ 0.21 (efecto pequeno)
# Conclusion esperada: NO hay evidencia suficiente de que el apoyo a
# iniciativas climaticas se relacione con la actitud de cooperacion;
# la diferencia observada es pequena y no significativa (p > 0.05).