COAHUILA
# Preparación Base de Datos (Coahuila)
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# 1. Lectura de datos
Base = read.csv("conjunto_de_datos_tper_vic1_envipe2025.csv", encoding="UTF-8")
# 2. Filtrar Coahuila y variable: Sexo, Estrato, Percepción de caminar en la noche y todas las de AP4_4-01 a AP4_4-12
Base_Coahuila <- Base %>%
filter(CVE_ENT == 5) %>%
select(
SEXO,
ESTRATO,
PERCEPCION_CAM = AP4_4_A,
CASA = AP4_4_01,
TRABAJO = AP4_4_02,
CALLE = AP4_4_03,
ESCUELA = AP4_4_04,
MERCADO = AP4_4_05,
CENTRO_COMERCIAL = AP4_4_06,
BANCO = AP4_4_07,
CAJERO = AP4_4_08,
TRANSPORTE_PUBLICO = AP4_4_09,
AUTOMOVIL = AP4_4_10,
CARRETERA = AP4_4_11,
CENTRO_RECREATIVO = AP4_4_12
)
# 3. Verificar datos faltantes
summary(Base_Coahuila) #Si alguna variable tiene datos faltantes se marcarán en el resumen estadístico después del máximo.
## SEXO ESTRATO PERCEPCION_CAM CASA TRABAJO
## Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:2.00 1st Qu.:2.000 1st Qu.:1.000 1st Qu.:1.000
## Median :2.000 Median :2.00 Median :3.000 Median :1.000 Median :1.000
## Mean :1.548 Mean :2.63 Mean :2.663 Mean :1.131 Mean :1.748
## 3rd Qu.:2.000 3rd Qu.:3.00 3rd Qu.:3.000 3rd Qu.:1.000 3rd Qu.:3.000
## Max. :2.000 Max. :4.00 Max. :9.000 Max. :9.000 Max. :9.000
## CALLE ESCUELA MERCADO CENTRO_COMERCIAL
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:3.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :3.000 Median :1.000 Median :1.000
## Mean :1.451 Mean :2.921 Mean :1.455 Mean :1.278
## 3rd Qu.:2.000 3rd Qu.:3.000 3rd Qu.:2.000 3rd Qu.:1.000
## Max. :9.000 Max. :9.000 Max. :9.000 Max. :9.000
## BANCO CAJERO TRANSPORTE_PUBLICO AUTOMOVIL
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :2.000 Median :2.000 Median :1.000
## Mean :1.553 Mean :1.689 Mean :2.089 Mean :1.264
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:3.000 3rd Qu.:1.000
## Max. :9.000 Max. :9.000 Max. :9.000 Max. :9.000
## CARRETERA CENTRO_RECREATIVO
## Min. :1.00 Min. :1.000
## 1st Qu.:1.00 1st Qu.:1.000
## Median :1.00 Median :1.000
## Mean :1.56 Mean :1.474
## 3rd Qu.:2.00 3rd Qu.:2.000
## Max. :9.00 Max. :9.000
# 4. Ver estructura de la base
cat("\nEstructura Base de Datos Coahuila:\n")
##
## Estructura Base de Datos Coahuila:
glimpse(Base_Coahuila)
## Rows: 2,670
## Columns: 15
## $ SEXO <int> 1, 2, 2, 2, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, …
## $ ESTRATO <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, …
## $ PERCEPCION_CAM <int> 2, 2, 2, 2, 2, 2, 3, 5, 9, 2, 1, 2, 2, 2, 2, 3, 2, …
## $ CASA <int> 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TRABAJO <int> 1, 1, 3, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ CALLE <int> 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ ESCUELA <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 2, 3, …
## $ MERCADO <int> 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ CENTRO_COMERCIAL <int> 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ BANCO <int> 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2, 1, …
## $ CAJERO <int> 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TRANSPORTE_PUBLICO <int> 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 1, 3, 3, 2, 1, 1, …
## $ AUTOMOVIL <int> 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ CARRETERA <int> 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ CENTRO_RECREATIVO <int> 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1, …
# ÍNDICE DE PERCEPCIÓN DE SEGURIDAD - COAHUILA
# 5. Obtener el índice de seguridad con base en la pregunta 4.4 sobre la percepción de seguridad en cuanto a delincuencia (una nueva columna de la proporción de 1=seguros de la pregunta APA4.4)
Base_Coahuila$Suma_Seguros <-
as.numeric(Base_Coahuila$CASA == 1) +
as.numeric(Base_Coahuila$TRABAJO == 1) +
as.numeric(Base_Coahuila$CALLE == 1) +
as.numeric(Base_Coahuila$ESCUELA == 1) +
as.numeric(Base_Coahuila$MERCADO == 1) +
as.numeric(Base_Coahuila$CENTRO_COMERCIAL == 1) +
as.numeric(Base_Coahuila$BANCO == 1) +
as.numeric(Base_Coahuila$CAJERO == 1) +
as.numeric(Base_Coahuila$TRANSPORTE_PUBLICO == 1) +
as.numeric(Base_Coahuila$AUTOMOVIL == 1) +
as.numeric(Base_Coahuila$CARRETERA == 1) +
as.numeric(Base_Coahuila$CENTRO_RECREATIVO == 1)
# Proporción de lugares seguros
Base_Coahuila$Indice_Seguridad <- Base_Coahuila$Suma_Seguros / 12
# Observar que se añadió la nueva variable (Indice_Seguridad)
names(Base_Coahuila)
## [1] "SEXO" "ESTRATO" "PERCEPCION_CAM"
## [4] "CASA" "TRABAJO" "CALLE"
## [7] "ESCUELA" "MERCADO" "CENTRO_COMERCIAL"
## [10] "BANCO" "CAJERO" "TRANSPORTE_PUBLICO"
## [13] "AUTOMOVIL" "CARRETERA" "CENTRO_RECREATIVO"
## [16] "Suma_Seguros" "Indice_Seguridad"
# Verificar el nuevo índice
cat("RESUMEN DEL ÍNDICE DE SEGURIDAD (0 = Inseguro, 1 = Seguro):\n")
## RESUMEN DEL ÍNDICE DE SEGURIDAD (0 = Inseguro, 1 = Seguro):
summary(Base_Coahuila$Indice_Seguridad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.3333 0.5833 0.5618 0.7500 1.0000
# PREGUNTA 1: PRUEBA DE INDEPENDENCIA
# "En Coahuila, ¿Podríamos inferir que hay independencia entre el estrato social y la percepción de la seguridad al caminar por la noche?
# Hipótesis:
# Ho: La percepción de seguridad ES INDEPENDIENTE del estrato social (No hay relación entre el estrato y qué tan seguro/inseguro se percibe)
# Ha: La percepción de seguridad DEPENDE del estrato social (Existe relación entre el estrato y qué tan seguro/inseguro se percibe)
library(tidyr)
# 1. Crear base para análisis
# Estrato: 1–4
Base_Coahuila$Estrato_cat <- ifelse(Base_Coahuila$ESTRATO == 1, "Bajo",
ifelse(Base_Coahuila$ESTRATO == 2, "Medio bajo",
ifelse(Base_Coahuila$ESTRATO == 3, "Medio alto",
ifelse(Base_Coahuila$ESTRATO == 4, "Alto", NA))))
# Percepción de seguridad al caminar por la noche (PERCEPCION_CAM)
# 2 = Seguro, 3 = Inseguro
Base_Coahuila$Percep_noche <- ifelse(Base_Coahuila$PERCEPCION_CAM == 2, "Seguro",
ifelse(Base_Coahuila$PERCEPCION_CAM == 3, "Inseguro", NA))
# Nos quedamos solo con casos válidos (no nulos)
datos <- subset(Base_Coahuila,
!is.na(Estrato_cat) & !is.na(Percep_noche))
# Acomodamos el orden de las categorías
datos$Estrato_cat <- factor(datos$Estrato_cat,
levels = c("Bajo","Medio bajo","Medio alto","Alto"))
datos$Percep_noche <- factor(datos$Percep_noche,
levels = c("Seguro","Inseguro"))
# 2. Tabla de contingencia
tabla <- table(datos$Estrato_cat, datos$Percep_noche)
cat("TABLA DE CONTINGENCIA - ESTRATO vs PERCEPCIÓN:\n")
## TABLA DE CONTINGENCIA - ESTRATO vs PERCEPCIÓN:
print(tabla)
##
## Seguro Inseguro
## Bajo 8 7
## Medio bajo 482 500
## Medio alto 364 366
## Alto 193 101
cat("\nPORCENTAJES POR ESTRATO:\n")
##
## PORCENTAJES POR ESTRATO:
porcentajes <- prop.table(tabla, margin = 1) * 100
print(round(porcentajes, 1))
##
## Seguro Inseguro
## Bajo 53.3 46.7
## Medio bajo 49.1 50.9
## Medio alto 49.9 50.1
## Alto 65.6 34.4
# 3. Prueba Chi-cuadrado de independencia
cat("\nPRUEBA CHI-CUADRADO DE INDEPENDENCIA:\n")
##
## PRUEBA CHI-CUADRADO DE INDEPENDENCIA:
chi_test <- chisq.test(tabla)
print(chi_test)
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 26.589, df = 3, p-value = 7.179e-06
# 4. Interpretación
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Como el valor de p (0.000007179) es menor a alfa = 0.05 se tiene evidencia para rechazar Ho. Entonces lo más probable es que la percepción de seguridad al caminar por la noche DEPENDE del estrato social (las variables no son independientes)")
## Como el valor de p (0.000007179) es menor a alfa = 0.05 se tiene evidencia para rechazar Ho. Entonces lo más probable es que la percepción de seguridad al caminar por la noche DEPENDE del estrato social (las variables no son independientes)
# 5. Gráfica de barras apiladas
# Preparar datos para el gráfico (a partir de 'porcentajes')
datos_grafico <- as.data.frame(porcentajes)
colnames(datos_grafico) <- c("Estrato", "Percepcion", "Porcentaje")
datos_grafico$Percepcion <- factor(datos_grafico$Percepcion,
levels = c("Seguro", "Inseguro"))
library(ggplot2)
ggplot(datos_grafico, aes(x = Estrato, y = Porcentaje, fill = Percepcion)) +
geom_bar(stat = "identity", position = "stack") +
scale_fill_manual(values = c("Seguro" = "lightgreen", "Inseguro" = "lightcoral")) +
labs(title = "Percepción de Seguridad al Caminar de Noche por Estrato en Coahuila",
x = "Estrato social",
y = "Porcentaje (%)",
fill = "Percepción") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_stack(vjust = 0.5), size = 3)

# PREGUNTA 2: PRUEBA DE HIPÓTESIS con z.test
# "¿Podríamos inferir que difieren las medias de la percepción de seguridad en términos de delincuencia entre hombres y mujeres en el estado de Coahuila?"
library(BSDA)
## Loading required package: lattice
##
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
##
## Orange
# Hipótesis:
# Ho: μ_hombres = μ_mujeres (El índice de seguridad es igual)
# Ha: μ_hombres > μ_mujeres (Los hombres tienen MAYOR índice de seguridad)
# Dividir la base de Coahuila en los dos grupos que queremos comparar: hombres y mujeres.
hombres = subset(Base_Coahuila,Base_Coahuila$SEXO==1)
mujeres = subset(Base_Coahuila,Base_Coahuila$SEXO==2)
# 1. Prueba de normalidad (Shapiro-Wilk) para decidir estadístico
shapiro.test(hombres$Indice_Seguridad)
##
## Shapiro-Wilk normality test
##
## data: hombres$Indice_Seguridad
## W = 0.90551, p-value < 2.2e-16
shapiro.test(mujeres$Indice_Seguridad)
##
## Shapiro-Wilk normality test
##
## data: mujeres$Indice_Seguridad
## W = 0.95543, p-value < 2.2e-16
# Interpretación de normalidad
# Segun el resultado de los valores p de la prueba de Normalidad (< 0.00000000000000022 para ambas), podemos concluir que las distribuciones del índice de seguridad para las mujeres y para los hombres de Coahuila no son normales. Sin embargo, debido al gran tamaño de muestra y bajo el Teorema del Límite Central, se recomienda que usemos el estadístico Z para la prueba de dos medias poblacionales.
# 2. Análisis Descriptivo: Estadísticos Descriptivos (Variable cuantitativa: Índice de Seguridad)
library(knitr)
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
media=tapply(Base_Coahuila$Indice_Seguridad,Base_Coahuila$SEXO,function(x) round(mean(x), 5))
mediana=tapply(Base_Coahuila$Indice_Seguridad,Base_Coahuila$SEXO,function(x) round(median(x), 5))
desviacionstd=tapply(Base_Coahuila$Indice_Seguridad,Base_Coahuila$SEXO,function(x) round(sd(x), 5))
varianza = tapply(Base_Coahuila$Indice_Seguridad, Base_Coahuila$SEXO, function(x) round(var(x), 5))
descriptive<-data.frame(media,mediana,desviacionstd,varianza)
colnames(descriptive)=c("Media", "Mediana","Desviación Std", "Varianza")
rownames(descriptive)=c("Hombres", "Mujeres")
kable(descriptive, caption = "ESTADÍSTICOS DESCRIPTIVOS - ÍNDICE DE SEGURIDAD", format = "html") %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),full_width = FALSE, position = "center") %>%
row_spec(0, bold = TRUE, color = "white", background = "#003f5c") %>% # Encabezado azul
row_spec(1, background = "#e1eff6") %>% # Renglón 1
row_spec(2, background = "#f5faff")%>%
column_spec(1, width = "2cm") %>%
column_spec(2, width = "3cm") %>%
column_spec(3, width = "3cm") %>%
column_spec(4, width = "3.2cm")%>%
column_spec(5, width = "3cm")
ESTADÍSTICOS DESCRIPTIVOS - ÍNDICE DE SEGURIDAD
|
|
Media
|
Mediana
|
Desviación Std
|
Varianza
|
|
Hombres
|
0.63611
|
0.66667
|
0.24200
|
0.05856
|
|
Mujeres
|
0.50040
|
0.50000
|
0.25679
|
0.06594
|
# 3. Prueba de Hipótesis con z.test
# Hipótesis:
# Ho: μ_hombres = μ_mujeres (El índice de seguridad es igual)
# Ha: μ_hombres > μ_mujeres (Los hombres tienen MAYOR índice de seguridad)
z_test = z.test(hombres$Indice_Seguridad, mujeres$Indice_Seguridad, conf.level=0.95, sigma.x=sd(hombres$Indice_Seguridad), sigma.y=sd(mujeres$Indice_Seguridad), alternative = "greater")
Z = z_test$statistic
valor_p = z_test$p.value
media1 = z_test$estimate[1]
media2 = z_test$estimate[2]
cat("\nRESUMEN PRUEBA DE HIPÓTESIS:\n")
##
## RESUMEN PRUEBA DE HIPÓTESIS:
cat("Estadístico Z =", round(Z, 4), "\n")
## Estadístico Z = 14.0284
cat("Valor p =", format.pval(valor_p, digits = 6), "\n")
## Valor p = < 2.22e-16
cat("Media Hombres =", round(media1, 4), "\n")
## Media Hombres = 0.6361
cat("Media Mujeres =", round(media2, 4), "\n")
## Media Mujeres = 0.5004
cat("Diferencia =", round(media1 - media2, 4), "\n")
## Diferencia = 0.1357
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Como el valor de p (< 0.00000000000000022) es menor que alfa = 0.05, se tiene evidencia suficiente para rechazar Ho. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Coahuila el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres, es decir, la evidencia estadística soporta la hipótesis alternativa siendo lo más probable μ_hombres < μ_mujeres.")
## Como el valor de p (< 0.00000000000000022) es menor que alfa = 0.05, se tiene evidencia suficiente para rechazar Ho. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Coahuila el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres, es decir, la evidencia estadística soporta la hipótesis alternativa siendo lo más probable μ_hombres < μ_mujeres.
# 4. Análisis Descriptivo: Gráficas
densidad_hombres = density(hombres$Indice_Seguridad)
densidad_mujeres = density(mujeres$Indice_Seguridad)
# Encontrar la densidad máxima
densidad_max = max(max(densidad_hombres$y), max(densidad_mujeres$y))
y_lim_superior = densidad_max + 0.5
# Gráfica de densidad Hombres vs Mujeres
plot(density(hombres$Indice_Seguridad), col="blue", lwd = 3,
main = "Índice de Seguridad por Género en Coahuila",
xlab = "Índice de Seguridad (0 = Inseguro, 1 = Seguro)",
ylab = "Densidad de Probabilidad",
xlim = c(0, 1), ylim = c(0, y_lim_superior),
cex.main = 1.2, cex.lab = 1.1, font.lab = 2)
lines(density(mujeres$Indice_Seguridad), col = "magenta", lwd = 3)
# Líneas verticales para las medias
abline(v = media1, col = "blue", lty = 2, lwd = 2)
abline(v = media2, col = "magenta", lty = 2, lwd = 2)
legend("topright",
legend = c(paste("Hombres (μ =", round(media1, 4), ")"),
paste("Mujeres (μ =", round(media2, 4), ")")),
col = c("blue", "magenta"), lwd = 3, lty = 1,
bty = "n", cex = 0.9)
grid(col = "gray80", lty = 3)

# PREGUNTA 2: INTERVALO DE CONFIANZA Z
# "¿Podríamos inferir que difieren las medias de la percepción de seguridad en términos de delincuencia entre hombres y mujeres en el estado de Coahuila?"
library(BSDA)
z_test_2 = z.test(hombres$Indice_Seguridad, mujeres$Indice_Seguridad, conf.level=0.95, sigma.x=sd(hombres$Indice_Seguridad), sigma.y=sd(mujeres$Indice_Seguridad))
z_test_2
##
## Two-sample z-Test
##
## data: hombres$Indice_Seguridad and mujeres$Indice_Seguridad
## z = 14.028, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.1167473 0.1546678
## sample estimates:
## mean of x mean of y
## 0.6361065 0.5003990
LI = z_test_2$conf.int[1]
LS = z_test_2$conf.int[2]
valor_p <- z_test_2$p.value
cat("\nRESUMEN INTERVALO DE CONFIANZA:\n")
##
## RESUMEN INTERVALO DE CONFIANZA:
cat("Valor p =", format.pval(valor_p, digits = 6), "\n")
## Valor p = < 2.22e-16
cat("Intervalo de confianza al 95%: [", round(LI, 4), ",", round(LS, 4), "]\n\n")
## Intervalo de confianza al 95%: [ 0.1167 , 0.1547 ]
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Con base en la evidencia estadística (z.test), estimamos que la diferencia de las dos medias poblacionales podría encontrarse entre 0.1167 y 0.1547 con un 95% de confianza. Como el cero no está incluido dentro de los límites de este intervalo, lo más probable es que las medias poblacionales sean diferentes. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Coahuila el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres.")
## Con base en la evidencia estadística (z.test), estimamos que la diferencia de las dos medias poblacionales podría encontrarse entre 0.1167 y 0.1547 con un 95% de confianza. Como el cero no está incluido dentro de los límites de este intervalo, lo más probable es que las medias poblacionales sean diferentes. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Coahuila el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres.
SINALOA
# Preparación Base de Datos (Sinaloa)
library(readr)
library(dplyr)
# 1. Lectura de datos
Base = read.csv("conjunto_de_datos_tper_vic1_envipe2025.csv", encoding="UTF-8")
# 2. Filtrar Sinaloa y variable: Sexo, Estrato, Percepción de caminar en la noche y todas las de AP4_4-01 a AP4_4-12
Base_Sinaloa <- Base %>%
filter(CVE_ENT == 25) %>%
select(
SEXO,
ESTRATO,
PERCEPCION_CAM = AP4_4_A,
CASA = AP4_4_01,
TRABAJO = AP4_4_02,
CALLE = AP4_4_03,
ESCUELA = AP4_4_04,
MERCADO = AP4_4_05,
CENTRO_COMERCIAL = AP4_4_06,
BANCO = AP4_4_07,
CAJERO = AP4_4_08,
TRANSPORTE_PUBLICO = AP4_4_09,
AUTOMOVIL = AP4_4_10,
CARRETERA = AP4_4_11,
CENTRO_RECREATIVO = AP4_4_12
)
# 3. Verificar datos faltantes
summary(Base_Sinaloa) #Si alguna variable tiene datos faltantes se marcarán en el resumen estadístico después del máximo.
## SEXO ESTRATO PERCEPCION_CAM CASA
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:1.000
## Median :2.000 Median :2.000 Median :3.000 Median :1.000
## Mean :1.545 Mean :2.523 Mean :2.817 Mean :1.135
## 3rd Qu.:2.000 3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.:1.000
## Max. :2.000 Max. :4.000 Max. :9.000 Max. :9.000
## TRABAJO CALLE ESCUELA MERCADO
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:3.000 1st Qu.:1.000
## Median :2.000 Median :2.000 Median :3.000 Median :2.000
## Mean :1.874 Mean :1.613 Mean :2.873 Mean :1.638
## 3rd Qu.:3.000 3rd Qu.:2.000 3rd Qu.:3.000 3rd Qu.:2.000
## Max. :9.000 Max. :9.000 Max. :9.000 Max. :3.000
## CENTRO_COMERCIAL BANCO CAJERO TRANSPORTE_PUBLICO
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :2.000 Median :2.000 Median :2.000
## Mean :1.555 Mean :1.779 Mean :1.842 Mean :1.927
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:3.000
## Max. :9.000 Max. :3.000 Max. :3.000 Max. :9.000
## AUTOMOVIL CARRETERA CENTRO_RECREATIVO
## Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000
## Median :1.000 Median :2.000 Median :2.000
## Mean :1.503 Mean :1.694 Mean :1.885
## 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:2.000
## Max. :9.000 Max. :9.000 Max. :9.000
# 4. Ver estructura de la base
cat("\nEstructura Base de Datos Sinaloa:\n")
##
## Estructura Base de Datos Sinaloa:
glimpse(Base_Sinaloa)
## Rows: 3,527
## Columns: 15
## $ SEXO <int> 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, …
## $ ESTRATO <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, …
## $ PERCEPCION_CAM <int> 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 3, 2, 2, …
## $ CASA <int> 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TRABAJO <int> 1, 3, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, …
## $ CALLE <int> 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1, …
## $ ESCUELA <int> 3, 2, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, …
## $ MERCADO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ CENTRO_COMERCIAL <int> 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ BANCO <int> 1, 2, 1, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ CAJERO <int> 2, 2, 1, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ TRANSPORTE_PUBLICO <int> 3, 2, 3, 2, 1, 3, 3, 1, 1, 1, 3, 3, 3, 1, 2, 1, 1, …
## $ AUTOMOVIL <int> 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, …
## $ CARRETERA <int> 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, …
## $ CENTRO_RECREATIVO <int> 1, 1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, …
# ÍNDICE DE PERCEPCIÓN DE SEGURIDAD - SINALOA
# 5. Obtener el índice de seguridad con base en la pregunta 4.4 sobre la percepción de seguridad en cuanto a delincuencia (una nueva columna de la proporción de 1=seguros de la pregunta APA4.4)
Base_Sinaloa$Suma_Seguros2 <-
as.numeric(Base_Sinaloa$CASA == 1) +
as.numeric(Base_Sinaloa$TRABAJO == 1) +
as.numeric(Base_Sinaloa$CALLE == 1) +
as.numeric(Base_Sinaloa$ESCUELA == 1) +
as.numeric(Base_Sinaloa$MERCADO == 1) +
as.numeric(Base_Sinaloa$CENTRO_COMERCIAL == 1) +
as.numeric(Base_Sinaloa$BANCO == 1) +
as.numeric(Base_Sinaloa$CAJERO == 1) +
as.numeric(Base_Sinaloa$TRANSPORTE_PUBLICO == 1) +
as.numeric(Base_Sinaloa$AUTOMOVIL == 1) +
as.numeric(Base_Sinaloa$CARRETERA == 1) +
as.numeric(Base_Sinaloa$CENTRO_RECREATIVO == 1)
# Proporción de lugares seguros
Base_Sinaloa$Indice_Seguridad2 <- Base_Sinaloa$Suma_Seguros2 / 12
# Observar que se añadió la nueva variable (Indice_Seguridad)
names(Base_Sinaloa)
## [1] "SEXO" "ESTRATO" "PERCEPCION_CAM"
## [4] "CASA" "TRABAJO" "CALLE"
## [7] "ESCUELA" "MERCADO" "CENTRO_COMERCIAL"
## [10] "BANCO" "CAJERO" "TRANSPORTE_PUBLICO"
## [13] "AUTOMOVIL" "CARRETERA" "CENTRO_RECREATIVO"
## [16] "Suma_Seguros2" "Indice_Seguridad2"
# Verificar el nuevo índice
cat("RESUMEN DEL ÍNDICE DE SEGURIDAD (0 = Inseguro, 1 = Seguro):\n")
## RESUMEN DEL ÍNDICE DE SEGURIDAD (0 = Inseguro, 1 = Seguro):
summary(Base_Sinaloa$Indice_Seguridad2)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0000 0.1667 0.4167 0.4192 0.6667 1.0000
# PREGUNTA 1: PRUEBA DE INDEPENDENCIA
# "En Sinaloa, ¿Podríamos inferir que hay independencia entre el estrato social y la percepción de la seguridad al caminar por la noche?
# Hipótesis:
# Ho: La percepción de seguridad ES INDEPENDIENTE del estrato social (No hay relación entre el estrato y qué tan seguro/inseguro se percibe)
# Ha: La percepción de seguridad DEPENDE del estrato social (Existe relación entre el estrato y qué tan seguro/inseguro se percibe)
library(tidyr)
# 1. Crear base para análisis
# Estrato: 1–4
Base_Sinaloa$Estrato_cat2 <- ifelse(Base_Sinaloa$ESTRATO == 1, "Bajo",
ifelse(Base_Sinaloa$ESTRATO == 2, "Medio bajo",
ifelse(Base_Sinaloa$ESTRATO == 3, "Medio alto",
ifelse(Base_Sinaloa$ESTRATO == 4, "Alto", NA))))
# Percepción de seguridad al caminar por la noche (PERCEPCION_CAM)
# 2 = Seguro, 3 = Inseguro
Base_Sinaloa$Percep_noche2 <- ifelse(Base_Sinaloa$PERCEPCION_CAM == 2, "Seguro",
ifelse(Base_Sinaloa$PERCEPCION_CAM == 3, "Inseguro", NA))
# Nos quedamos solo con casos válidos (no nulos)
datos2 <- subset(Base_Sinaloa,
!is.na(Estrato_cat2) & !is.na(Percep_noche2))
# Acomodamos el orden de las categorías
datos2$Estrato_cat2 <- factor(datos2$Estrato_cat2,
levels = c("Bajo","Medio bajo","Medio alto","Alto"))
datos2$Percep_noche2 <- factor(datos2$Percep_noche2,
levels = c("Seguro","Inseguro"))
# 2. Tabla de contingencia
tabla2 <- table(datos2$Estrato_cat2, datos2$Percep_noche2)
cat("TABLA DE CONTINGENCIA - ESTRATO vs PERCEPCIÓN:\n")
## TABLA DE CONTINGENCIA - ESTRATO vs PERCEPCIÓN:
print(tabla2)
##
## Seguro Inseguro
## Bajo 114 133
## Medio bajo 585 547
## Medio alto 387 474
## Alto 144 181
cat("\nPORCENTAJES POR ESTRATO:\n")
##
## PORCENTAJES POR ESTRATO:
porcentajes2 <- prop.table(tabla2, margin = 1) * 100
print(round(porcentajes2, 1))
##
## Seguro Inseguro
## Bajo 46.2 53.8
## Medio bajo 51.7 48.3
## Medio alto 44.9 55.1
## Alto 44.3 55.7
# 3. Prueba Chi-cuadrado de independencia
cat("\nPRUEBA CHI-CUADRADO DE INDEPENDENCIA:\n")
##
## PRUEBA CHI-CUADRADO DE INDEPENDENCIA:
chi_test2 <- chisq.test(tabla2)
print(chi_test2)
##
## Pearson's Chi-squared test
##
## data: tabla2
## X-squared = 11.461, df = 3, p-value = 0.009476
# 4. Interpretación
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Como el valor de p (0.009476) es menor a alfa = 0.05 se tiene evidencia para rechazar Ho. Entonces lo más probable es que la percepción de seguridad al caminar por la noche DEPENDE del estrato social (las variables no son independientes)")
## Como el valor de p (0.009476) es menor a alfa = 0.05 se tiene evidencia para rechazar Ho. Entonces lo más probable es que la percepción de seguridad al caminar por la noche DEPENDE del estrato social (las variables no son independientes)
# 5. Gráfica de barras apiladas
# Preparar datos para el gráfico (a partir de 'porcentajes')
datos_grafico2 <- as.data.frame(porcentajes2)
colnames(datos_grafico2) <- c("Estrato", "Percepcion", "Porcentaje")
datos_grafico2$Percepcion <- factor(datos_grafico2$Percepcion,
levels = c("Seguro", "Inseguro"))
library(ggplot2)
ggplot(datos_grafico2, aes(x = Estrato, y = Porcentaje, fill = Percepcion)) +
geom_bar(stat = "identity", position = "stack") +
scale_fill_manual(values = c("Seguro" = "lightgreen", "Inseguro" = "lightcoral")) +
labs(title = "Percepción de Seguridad al Caminar de Noche por Estrato en Sinaloa",
x = "Estrato social",
y = "Porcentaje (%)",
fill = "Percepción") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_text(aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_stack(vjust = 0.5), size = 3)

# PREGUNTA 2: PRUEBA DE HIPÓTESIS con z.test
# "¿Podríamos inferir que difieren las medias de la percepción de seguridad en términos de delincuencia entre hombres y mujeres en el estado de Sinaloa?"
library(BSDA)
# Hipótesis:
# Ho: μ_hombres = μ_mujeres (El índice de seguridad es igual)
# Ha: μ_hombres > μ_mujeres (Los hombres tienen MAYOR índice de seguridad)
# Dividir la base de Sinaloa en los dos grupos que queremos comparar: hombres y mujeres.
hombres2 = subset(Base_Sinaloa,Base_Sinaloa$SEXO==1)
mujeres2 = subset(Base_Sinaloa,Base_Sinaloa$SEXO==2)
# 1. Prueba de normalidad (Shapiro-Wilk) para decidir estadístico
shapiro.test(hombres2$Indice_Seguridad2)
##
## Shapiro-Wilk normality test
##
## data: hombres2$Indice_Seguridad2
## W = 0.92716, p-value < 2.2e-16
shapiro.test(mujeres2$Indice_Seguridad2)
##
## Shapiro-Wilk normality test
##
## data: mujeres2$Indice_Seguridad2
## W = 0.92399, p-value < 2.2e-16
# Interpretación de normalidad
# Segun el resultado de los valores p de la prueba de Normalidad (< 0.00000000000000022 para ambas), podemos concluir que las distribuciones del índice de seguridad para las mujeres y para los hombres de Sinaloa no son normales. Sin embargo, debido al gran tamaño de muestra y bajo el Teorema del Límite Central, se recomienda que usemos el estadístico Z para la prueba de dos medias poblacionales.
# 2. Análisis Descriptivo: Estadísticos Descriptivos (Variable cuantitativa: Índice de Seguridad)
library(knitr)
library(kableExtra)
media2=tapply(Base_Sinaloa$Indice_Seguridad2,Base_Sinaloa$SEXO,function(x) round(mean(x), 5))
mediana2=tapply(Base_Sinaloa$Indice_Seguridad2,Base_Sinaloa$SEXO,function(x) round(median(x), 5))
desviacionstd2=tapply(Base_Sinaloa$Indice_Seguridad2,Base_Sinaloa$SEXO,function(x) round(sd(x), 5))
varianza2 = tapply(Base_Sinaloa$Indice_Seguridad2, Base_Sinaloa$SEXO, function(x) round(var(x), 5))
descriptive<-data.frame(media2,mediana2,desviacionstd2,varianza2)
colnames(descriptive)=c("Media", "Mediana","Desviación Std", "Varianza")
rownames(descriptive)=c("Hombres", "Mujeres")
kable(descriptive, caption = "ESTADÍSTICOS DESCRIPTIVOS - ÍNDICE DE SEGURIDAD", format = "html") %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),full_width = FALSE, position = "center") %>%
row_spec(0, bold = TRUE, color = "white", background = "#003f5c") %>% # Encabezado azul
row_spec(1, background = "#e1eff6") %>% # Renglón 1
row_spec(2, background = "#f5faff")%>%
column_spec(1, width = "2cm") %>%
column_spec(2, width = "3cm") %>%
column_spec(3, width = "3cm") %>%
column_spec(4, width = "3.2cm")%>%
column_spec(5, width = "3cm")
ESTADÍSTICOS DESCRIPTIVOS - ÍNDICE DE SEGURIDAD
|
|
Media
|
Mediana
|
Desviación Std
|
Varianza
|
|
Hombres
|
0.49019
|
0.50000
|
0.30530
|
0.09321
|
|
Mujeres
|
0.35993
|
0.33333
|
0.27318
|
0.07463
|
# 3. Prueba de Hipótesis con z.test
# Hipótesis:
# Ho: μ_hombres = μ_mujeres (El índice de seguridad es igual)
# Ha: μ_hombres > μ_mujeres (Los hombres tienen MAYOR índice de seguridad)
z_test2 = z.test(hombres2$Indice_Seguridad2, mujeres2$Indice_Seguridad2, conf.level=0.95, sigma.x=sd(hombres2$Indice_Seguridad2), sigma.y=sd(mujeres2$Indice_Seguridad2), alternative = "greater")
Z2 = z_test2$statistic
valor_p2 = z_test2$p.value
media1_2 = z_test2$estimate[1]
media2_2 = z_test2$estimate[2]
cat("\nRESUMEN PRUEBA DE HIPÓTESIS:\n")
##
## RESUMEN PRUEBA DE HIPÓTESIS:
cat("Estadístico Z =", round(Z2, 4), "\n")
## Estadístico Z = 13.2343
cat("Valor p =", format.pval(valor_p2, digits = 6), "\n")
## Valor p = < 2.22e-16
cat("Media Hombres =", round(media1_2, 4), "\n")
## Media Hombres = 0.4902
cat("Media Mujeres =", round(media2_2, 4), "\n")
## Media Mujeres = 0.3599
cat("Diferencia =", round(media1_2 - media2_2, 4), "\n")
## Diferencia = 0.1303
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Como el valor de p (< 0.000000000000000222) es menor que alfa = 0.05, se tiene evidencia suficiente para rechazar Ho. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Sinaloa el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres, es decir, la evidencia estadística soporta la hipótesis alternativa siendo lo más probable μ_hombres < μ_mujeres.")
## Como el valor de p (< 0.000000000000000222) es menor que alfa = 0.05, se tiene evidencia suficiente para rechazar Ho. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Sinaloa el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres, es decir, la evidencia estadística soporta la hipótesis alternativa siendo lo más probable μ_hombres < μ_mujeres.
# 4. Análisis Descriptivo: Gráficas
densidad_hombres2 = density(hombres2$Indice_Seguridad2)
densidad_mujeres2 = density(mujeres2$Indice_Seguridad2)
# Encontrar la densidad máxima
densidad_max2 = max(max(densidad_hombres2$y), max(densidad_mujeres2$y))
y_lim_superior2 = densidad_max2 + 0.5
# Gráfica de densidad Hombres vs Mujeres
plot(density(hombres2$Indice_Seguridad2), col="blue", lwd = 3,
main = "Índice de Seguridad por Género en Sinaloa",
xlab = "Índice de Seguridad (0 = Inseguro, 1 = Seguro)",
ylab = "Densidad de Probabilidad",
xlim = c(0, 1), ylim = c(0, y_lim_superior2),
cex.main = 1.2, cex.lab = 1.1, font.lab = 2)
lines(density(mujeres2$Indice_Seguridad2), col = "magenta", lwd = 3)
# Líneas verticales para las medias
abline(v = media1_2, col = "blue", lty = 2, lwd = 2)
abline(v = media2_2, col = "magenta", lty = 2, lwd = 2)
legend("topright",
legend = c(paste("Hombres (μ =", round(media1_2, 4), ")"),
paste("Mujeres (μ =", round(media2_2, 4), ")")),
col = c("blue", "magenta"), lwd = 3, lty = 1,
bty = "n", cex = 0.9)
grid(col = "gray80", lty = 3)

# PREGUNTA 2: INTERVALO DE CONFIANZA Z
# "¿Podríamos inferir que difieren las medias de la percepción de seguridad en términos de delincuencia entre hombres y mujeres en el estado de Sinaloa?"
library(BSDA)
z_test_22 = z.test(hombres2$Indice_Seguridad2, mujeres2$Indice_Seguridad2, conf.level=0.95, sigma.x=sd(hombres2$Indice_Seguridad2), sigma.y=sd(mujeres2$Indice_Seguridad2))
z_test_22
##
## Two-sample z-Test
##
## data: hombres2$Indice_Seguridad2 and mujeres2$Indice_Seguridad2
## z = 13.234, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 0.1109754 0.1495599
## sample estimates:
## mean of x mean of y
## 0.4901930 0.3599254
LI2 = z_test_22$conf.int[1]
LS2 = z_test_22$conf.int[2]
valor_p2 <- z_test_22$p.value
cat("\nRESUMEN INTERVALO DE CONFIANZA:\n")
##
## RESUMEN INTERVALO DE CONFIANZA:
cat("Valor p =", format.pval(valor_p2, digits = 6), "\n")
## Valor p = < 2.22e-16
cat("Intervalo de confianza al 95%: [", round(LI2, 4), ",", round(LS2, 4), "]\n\n")
## Intervalo de confianza al 95%: [ 0.111 , 0.1496 ]
cat("\nINTERPRETACIÓN:\n")
##
## INTERPRETACIÓN:
cat("Con base en la evidencia estadística (z.test), estimamos que la diferencia de las dos medias poblacionales podría encontrarse entre 0.111 y 0.1496 con un 95% de confianza. Como el cero no está incluido dentro de los límites de este intervalo, lo más probable es que las medias poblacionales sean diferentes. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Sinaloa el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres.")
## Con base en la evidencia estadística (z.test), estimamos que la diferencia de las dos medias poblacionales podría encontrarse entre 0.111 y 0.1496 con un 95% de confianza. Como el cero no está incluido dentro de los límites de este intervalo, lo más probable es que las medias poblacionales sean diferentes. Por lo tanto, con un nivel de significancia del 5%, concluimos que lo más probable es que en Sinaloa el índice de seguridad en términos de delincuencia de los hombres es MAYOR en comparación con las mujeres.