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")