LLamamos la base con etiquetas, puesto que muchas de ellas al ser codificadas automaticamente toman valores que no estan presentes en las alternativas al marcar.
eti = read.csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vSuDuOoPAfN13nPNiIZ5CGxMewBzmnqASy-Z2JaYHjNOU0MoFsqg8Ng41wDJESWDR9T16atTYpSUSCd/pub?gid=458192067&single=true&output=csv")
De la base general, solo nos quedamos con las variables correspondientes a nuestro estudio
eti_limpio = eti[, c("genero", "edad", "ocup", "edu",
"cpc_cond", "cpc_act1", "cpc_act2",
"check_com", "seg")]
eti_limpio = eti_limpio[-c(1,2), ]
Se eliminan los “NA” de las variables que deseamos analizar
eti_limpio <- eti_limpio[complete.cases(eti_limpio[, c("cpc_cond", "cpc_act1", "cpc_act2", "check_com")]), ]
Se procede a recodificar las variables puesto que necesitamos los valores numericos, y en la base autogenerada existen valores como “11” cuando la escala propuesta solo llega hasta 10. Esto se produce ya que valores como el 0 o el 10 tienen una descripcion. Ejem: “10. Muy probable” , “Totalmente en desacuerdo 0”, etc.
eti_limpio$cpc_cond = gsub("10\\. Muy probable", "10", eti_limpio$cpc_cond)
eti_limpio$cpc_cond = gsub("0\\. Nada probable", "0", eti_limpio$cpc_cond)
eti_limpio$cpc_act1 = gsub("Totalmente de acuerdo 10", "10", eti_limpio$cpc_act1)
eti_limpio$cpc_act1 = gsub("Totalmente en desacuerdo 0", "0", eti_limpio$cpc_act1)
eti_limpio$cpc_act2 = gsub("Lo apoyo totalmente 10", "10", eti_limpio$cpc_act2)
eti_limpio$cpc_act2 = gsub("No lo apoyo en absoluto 0", "0", eti_limpio$cpc_act2)
eti_limpio$cpc_cond = as.numeric(eti_limpio$cpc_cond)
eti_limpio$cpc_act1 = as.numeric(eti_limpio$cpc_act1)
eti_limpio$cpc_act2 = as.numeric(eti_limpio$cpc_act2)
Nos quedamos solo con los casos que han cumpkido con el filtro de la variable “Check_com” el cual nos indica que el sujeto de estudio presto atencion a la encuesta
eti_limpio = eti_limpio[eti_limpio$check_com %in% c("Policías en un operativo", "No se mostró ninguna foto"), ]
Ahora creamos el indice aditivo, el cual nos servira para el analisis de las variables.
eti_limpio$indice_apoyo_seguridad = (eti_limpio$cpc_cond + eti_limpio$cpc_act1 + eti_limpio$cpc_act2) / 30
Aplicamos la prueba t de Student para las muestras independientes donde:
Grupo A: “Policías en un operativo” Grupo B: “No se mostró ninguna foto”
t.test(indice_apoyo_seguridad ~ check_com, data = eti_limpio , var.equal = FALSE)
##
## Welch Two Sample t-test
##
## data: indice_apoyo_seguridad by check_com
## t = -0.79292, df = 50.323, p-value = 0.4315
## alternative hypothesis: true difference in means between group No se mostró ninguna foto and group Policías en un operativo is not equal to 0
## 95 percent confidence interval:
## -0.14046748 0.06094367
## sample estimates:
## mean in group No se mostró ninguna foto mean in group Policías en un operativo
## 0.572619 0.612381
Grafico de la diferencia de medias del Indice en base a los grupos de tratamiento y control
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
ggplot(eti_limpio, aes(x = indice_apoyo_seguridad, fill = check_com)) +
geom_histogram(position = "dodge", bins = 10) +
facet_wrap(~ check_com) +
theme_minimal()
ggplot(eti_limpio, aes(x = indice_apoyo_seguridad, fill = check_com)) +
geom_histogram(position = "identity", alpha = 0.6, bins = 15) +
facet_wrap(~ check_com) +
labs(title = "Distribución del índice de apoyo por grupo",
x = "Índice de apoyo a medidas de seguridad (0 a 1)",
fill = "Grupo") +
theme_minimal()
ggplot(eti_limpio, aes(x = check_com, y = indice_apoyo_seguridad, fill = check_com)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Comparación del apoyo político al Estado punitivo",
subtitle = "Según presencia de imagen en la nota de prensa",
x = "Condición experimental",
y = "Índice de apoyo al Estado punitivo"
) +
scale_fill_manual(values = c("#76d7c4", "#4a235a")) + # azul y rojo suave
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 12),
legend.position = "none"
)
ggplot(eti_limpio, aes(sample = indice_apoyo_seguridad)) +
stat_qq() +
stat_qq_line() +
facet_wrap(~ check_com) +
labs(title = "índice por grupo") +
theme_minimal()
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'dplyr' was built under R version 4.4.2
## Warning: package 'stringr' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
glimpse(eti_limpio)
## Rows: 98
## Columns: 10
## $ genero <chr> "Hombre", "Hombre", "Mujer", "Mujer", "Mujer", …
## $ edad <chr> "21", "", "51", "24", "22", "21", "", "", "21",…
## $ ocup <chr> "Estudia", "No trabaja ni estudia", "Trabaja", …
## $ edu <chr> "Universitaria", "Posgrado", "Posgrado", "Unive…
## $ cpc_cond <dbl> 3, 10, 4, 7, 7, 8, 6, 5, 8, 10, 8, 5, 4, 10, 5,…
## $ cpc_act1 <dbl> 10, 5, 0, 4, 10, 7, 0, 6, 4, 10, 8, 8, 2, 3, 5,…
## $ cpc_act2 <dbl> 0, 0, 0, 4, 10, 7, 0, 6, 9, 10, 8, 7, 1, 6, 5, …
## $ check_com <chr> "Policías en un operativo", "Policías en un ope…
## $ seg <chr> "Nada seguro/a", "Poco seguro/a", "Algo seguro/…
## $ indice_apoyo_seguridad <dbl> 0.4333333, 0.5000000, 0.1333333, 0.5000000, 0.9…
# Cargar librería
library(dplyr)
# Tabla de resumen para cpc_cond
eti_limpio |>
summarise(
Mínimo = min(cpc_cond, na.rm = TRUE),
Mediana = median(cpc_cond, na.rm = TRUE),
Desviación = sd(cpc_cond, na.rm = TRUE),
Media = mean(cpc_cond, na.rm = TRUE),
Máximo = max(cpc_cond, na.rm = TRUE)
)
## Mínimo Mediana Desviación Media Máximo
## 1 0 6 2.880976 5.734694 10
library(ggplot2)
ggplot(eti_limpio, aes(x = cpc_cond)) +
geom_histogram(bins = 10, fill = "#1565c0", color = "white", alpha = 0.9) +
labs(
title = "Obediencia política al Estado punitivo",
subtitle = "¿Qué tan probable es que denuncie un crimen si es testigo?",
x = "Probabilidad de denunciar (0 = nada probable, 10 = muy probable)",
y = "Frecuencia de respuestas"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 12, margin = margin(b = 10)),
axis.title = element_text(size = 13),
axis.text = element_text(size = 11)
)
# Tabla de resumen para cpc_act1
eti_limpio |>
summarise(
Mínimo = min(cpc_act1, na.rm = TRUE),
Mediana = median(cpc_act1, na.rm = TRUE),
Desviación = sd(cpc_act1, na.rm = TRUE),
Media = mean(cpc_act1, na.rm = TRUE),
Máximo = max(cpc_act1, na.rm = TRUE)
)
## Mínimo Mediana Desviación Media Máximo
## 1 0 6 2.706815 6.153061 10
ggplot(eti_limpio, aes(x = cpc_act1)) +
geom_histogram(bins = 10, fill = "#76d7c4", color = "white", alpha = 0.9) +
labs(
title = "Apoyo político al Estado punitivo",
subtitle = "¿Qué tan de acuerdo está con la política del Gobierno contra la criminalidad?",
x = "Grado de acuerdo (0 = totalmente en desacuerdo, 10 = totalmente de acuerdo)",
y = "Frecuencia de respuestas"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 12, margin = margin(b = 10)),
axis.title = element_text(size = 13),
axis.text = element_text(size = 11)
)
# Tabla de resumen para cpc_act2
eti_limpio |>
summarise(
Mínimo = min(cpc_act2, na.rm = TRUE),
Mediana = median(cpc_act2, na.rm = TRUE),
Desviación = sd(cpc_act2, na.rm = TRUE),
Media = mean(cpc_act2, na.rm = TRUE),
Máximo = max(cpc_act2, na.rm = TRUE)
)
## Mínimo Mediana Desviación Media Máximo
## 1 0 6.5 3.039262 6.142857 10
ggplot(eti_limpio, aes(x = cpc_act2)) +
geom_histogram(bins = 10, fill = "#1e8449", color = "white", alpha = 0.9) +
labs(
title = "Apoyo al funcionario que comunica la política punitiva",
subtitle = "¿Qué tanto apoya la iniciativa del Ministro del Interior contra la criminalidad?",
x = "Nivel de apoyo (0 = no lo apoyo en absoluto, 10 = lo apoyo totalmente)",
y = "Frecuencia de respuestas"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 12, margin = margin(b = 10)),
axis.title = element_text(size = 13),
axis.text = element_text(size = 11)
)
table(eti_limpio$check_com)
##
## No se mostró ninguna foto Policías en un operativo
## 28 70
Solo usaremos hombre y mujer, por ende procedemos a filtrar la data
table(eti_limpio$genero)
##
## Hombre Mujer Otro
## 34 61 3
eti_filtrado <- eti_limpio |>
filter(genero %in% c("Hombre", "Mujer"))
table(eti_filtrado$genero)
##
## Hombre Mujer
## 34 61
t.test(indice_apoyo_seguridad ~ genero, data = eti_filtrado)
##
## Welch Two Sample t-test
##
## data: indice_apoyo_seguridad by genero
## t = -1.8927, df = 59.764, p-value = 0.06325
## alternative hypothesis: true difference in means between group Hombre and group Mujer is not equal to 0
## 95 percent confidence interval:
## -0.195612915 0.005416836
## sample estimates:
## mean in group Hombre mean in group Mujer
## 0.5382353 0.6333333
# Solo con Hombre y Mujer
eti_filtrado <- eti_limpio |>
filter(genero %in% c("Hombre", "Mujer"))
ggplot(eti_filtrado, aes(x = genero, y = indice_apoyo_seguridad, fill = genero)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Apoyo político al Estado punitivo según género",
subtitle = "Comparación del índice compuesto de apoyo entre hombres y mujeres",
x = "Género",
y = "Índice de apoyo al Estado punitivo"
) +
scale_fill_manual(values = c("Hombre" = "#64b5f6", "Mujer" = "#f48fb1")) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 12, margin = margin(b = 10)),
legend.position = "none"
)