library(readr)
## Warning: package 'readr' was built under R version 4.5.2
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(BSDA)
## Warning: package 'BSDA' was built under R version 4.5.2
## Cargando paquete requerido: lattice
##
## Adjuntando el paquete: 'BSDA'
## The following object is masked from 'package:datasets':
##
## Orange
# 1. Lectura de datos
Base <- read.csv("conjunto_de_datos_tper_vic1_envipe2025.csv", encoding="UTF-8")
# 2. Filtrar Coahuila y seleccionar variables de interés
Base_Coahuila <- Base %>%
filter(CVE_ENT == 5) %>%
select(
SEXO,
ESTRATO,
EDAD,
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. Crear índice de seguridad
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)
Base_Coahuila$Indice_Seguridad <- Base_Coahuila$Suma_Seguros / 12
# 4. Crear grupos de edad
Base_Coahuila <- Base_Coahuila %>%
mutate(GrupoEdad = ifelse(EDAD < 40, "Joven", "Adulto"))
# 5. Filtrar datos válidos
Base_Coahuila <- Base_Coahuila %>%
filter(!is.na(Indice_Seguridad) & !is.na(GrupoEdad))
# 6. Estadísticos descriptivos
descriptivos <- Base_Coahuila %>%
group_by(GrupoEdad) %>%
summarise(
Media = mean(Indice_Seguridad),
Mediana = median(Indice_Seguridad),
SD = sd(Indice_Seguridad),
N = n()
)
print(descriptivos)
## # A tibble: 2 × 5
## GrupoEdad Media Mediana SD N
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Adulto 0.548 0.583 0.259 1492
## 2 Joven 0.579 0.583 0.258 1178
# 7. Preparar vectores para prueba Z
joven <- subset(Base_Coahuila, GrupoEdad == "Joven")$Indice_Seguridad
adulto <- subset(Base_Coahuila, GrupoEdad == "Adulto")$Indice_Seguridad
# 8. Prueba Z
z_test <- z.test(
x = joven,
y = adulto,
sigma.x = sd(joven),
sigma.y = sd(adulto),
alternative = "two.sided",
conf.level = 0.95
)
cat("Estadístico Z:", round(z_test$statistic, 4), "\n")
## Estadístico Z: 3.0066
cat("Valor p:", format.pval(z_test$p.value, digits = 6), "\n")
## Valor p: 0.00264162
cat("Media Joven:", round(z_test$estimate[1], 4), "\n")
## Media Joven: 0.5787
cat("Media Adulto:", round(z_test$estimate[2], 4), "\n")
## Media Adulto: 0.5484
cat("Diferencia:", round(z_test$estimate[1] - z_test$estimate[2], 4), "\n")
## Diferencia: 0.0303
# 9. Gráfica de densidad
dens_joven <- density(joven)
dens_adulto <- density(adulto)
dens_max <- max(c(dens_joven$y, dens_adulto$y))
plot(dens_joven, col="blue", lwd=3, main="Índice de Seguridad por Grupo de Edad",
xlab="Índice de Seguridad", ylab="Densidad", ylim=c(0, dens_max+0.2))
lines(dens_adulto, col="red", lwd=3)
abline(v=mean(joven), col="blue", lty=2, lwd=2)
abline(v=mean(adulto), col="red", lty=2, lwd=2)
legend("topright", legend=c(paste("Joven (μ=", round(mean(joven),4),")"),
paste("Adulto (μ=", round(mean(adulto),4),")")),
col=c("blue","red"), lwd=3, lty=1, bty="n")

library(readr)
library(dplyr)
library(BSDA)
# 1. Lectura de datos
Base <- read.csv("conjunto_de_datos_tper_vic1_envipe2025.csv", encoding="UTF-8")
# 2. Filtrar Sinaloa y seleccionar variables de interés
Base_Sinaloa <- Base %>%
filter(CVE_ENT == 25) %>%
select(
SEXO,
ESTRATO,
EDAD,
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. Crear índice de seguridad
Base_Sinaloa$Suma_Seguros <- 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)
Base_Sinaloa$Indice_Seguridad <- Base_Sinaloa$Suma_Seguros / 12
# 4. Crear grupos de edad
Base_Sinaloa <- Base_Sinaloa %>%
mutate(GrupoEdad = ifelse(EDAD < 40, "Joven", "Adulto"))
# 5. Filtrar datos válidos
Base_Sinaloa <- Base_Sinaloa %>%
filter(!is.na(Indice_Seguridad) & !is.na(GrupoEdad))
# 6. Estadísticos descriptivos
descriptivos <- Base_Sinaloa %>%
group_by(GrupoEdad) %>%
summarise(
Media = mean(Indice_Seguridad),
Mediana = median(Indice_Seguridad),
SD = sd(Indice_Seguridad),
N = n()
)
print(descriptivos)
## # A tibble: 2 × 5
## GrupoEdad Media Mediana SD N
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Adulto 0.396 0.333 0.288 2101
## 2 Joven 0.453 0.417 0.303 1426
# 7. Preparar vectores para prueba Z
joven <- subset(Base_Sinaloa, GrupoEdad == "Joven")$Indice_Seguridad
adulto <- subset(Base_Sinaloa, GrupoEdad == "Adulto")$Indice_Seguridad
# 8. Prueba Z
z_test <- z.test(
x = joven,
y = adulto,
sigma.x = sd(joven),
sigma.y = sd(adulto),
alternative = "two.sided",
conf.level = 0.95
)
cat("Estadístico Z:", round(z_test$statistic, 4), "\n")
## Estadístico Z: 5.6239
cat("Valor p:", format.pval(z_test$p.value, digits = 6), "\n")
## Valor p: 1.86706e-08
cat("Media Joven:", round(z_test$estimate[1], 4), "\n")
## Media Joven: 0.4534
cat("Media Adulto:", round(z_test$estimate[2], 4), "\n")
## Media Adulto: 0.3961
cat("Diferencia:", round(z_test$estimate[1] - z_test$estimate[2], 4), "\n")
## Diferencia: 0.0573
# 9. Gráfica de densidad
dens_joven <- density(joven)
dens_adulto <- density(adulto)
dens_max <- max(c(dens_joven$y, dens_adulto$y))
plot(dens_joven, col="blue", lwd=3, main="Índice de Seguridad por Grupo de Edad",
xlab="Índice de Seguridad", ylab="Densidad", ylim=c(0, dens_max+0.2))
lines(dens_adulto, col="red", lwd=3)
abline(v=mean(joven), col="blue", lty=2, lwd=2)
abline(v=mean(adulto), col="red", lty=2, lwd=2)
legend("topright", legend=c(paste("Joven (μ=", round(mean(joven),4),")"),
paste("Adulto (μ=", round(mean(adulto),4),")")),
col=c("blue","red"), lwd=3, lty=1, bty="n")
