knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(dplyr)
library(ggplot2)
library(lubridate)
library(sf)
library(ViolenciaContraMujeres)
library(hrbrthemes)

Datos de violencia contra la Mujer

Este paquete contiene 3 sets de datos que se utilizan para representar la información de violencia contra la mujer:

Estos se cargan en memoria cuando se llama el paquete library(ViolenciaContraMujeres).

En especial podemos hacer uso de datos_violencia con solo llamarlo y consultar su estructura en la ayuda ?datos_violencia

datos_violencia

Podemos usar funciones para revisar la estructura como glimpse() de dplyr

glimpse(datos_violencia)

Una de las representaciones que se muestran es la que gráfica los casos de violencia general por año. Esto se puede generar de la siguiente forma

datos_anyo_estado <- datos_violencia %>% 
  group_by(Entidad, anyo = year(fecha)) %>% 
  summarise(numero_casos = sum(ocurrencia)) %>% 
  filter(Entidad == "Querétaro")

ggplot(datos_anyo_estado) +
  geom_line(aes(x = anyo, y = numero_casos)) +
  theme_minimal()

Sin embargo podemos ver una caída en el año 2020, si revisamos los meses:

datos_violencia %>% 
  filter(fecha >= "2020-01-01") %>% 
  group_by(Entidad, mes = month(fecha, label = TRUE)) %>% 
  summarise(numero_casos = sum(ocurrencia)) %>% 
  filter(Entidad == "Querétaro")

Sí necesitamos filtrar los meses sin información el paquete cuenta con una función que ya lo hace:

meses_sin_datos <- DefinirMesesSinDatos(datos_violencia)
meses_sin_datos

El paquete ademas cuenta con funciones que calculan la tasa por cada 100mil habitantes

datos_estado <- CasosNormalizadosRepublica(datos_violencia, poblacion_inegi_2015)
datos_estado

O que agregar los polígonos de estado:

datos_estado_poligonos <- AgregaPoligonos(datos_estado, poligonos_mx)
datos_estado_poligonos

Que se encuentran en la columna geometry, la cual puede ser usada en mapas

ggplot(datos_estado_poligonos) +
  geom_sf(aes(fill=tasa_100k)) +
  scale_fill_gradient(low = "#56B1F7", high = "#132B43") +
  theme_minimal()

Porcentaje de casos de Violencia Familiar

Se puede calcular el porcentaje por estado o de toda la republica, para los meses comparables de cada año. La función DatosMesEstadoAgrupados() permite hacer este cálculo para toda la republica colocalndo "Todas" como entidad. Ademas permite resaltar varios tipos de violencia al colocarlos en un vector para el argumento resaltar.tipo.

Toda la Republica

violencia_mes_todo <- DatosMesEstadoAgrupados(
  datos_violencia, entidad = "Todas", resaltar.tipo = c("Violencia familiar")
)
violencia_mes_todo
ggplot(violencia_mes_todo) +
  geom_col(aes(x= mes, y = proporcion_tipo, fill = Tipo)) +
  facet_grid(. ~ anyo) +
  scale_y_continuous(labels = scales::percent) +
  scale_fill_viridis_d(direction = -1) +
  labs(
    title = "Violencia Familiar contra la Mujer Meses comparables",
    subtitle = "Porcentaje de del total de casos reportados por mes y año en todo México",
    x = "",
    y = "Porcentaje del total de casos",
    fill = ""
  ) +
  theme_ipsum() +
  theme(
      axis.title.y = element_text(size = 18),
      axis.text.y = element_text(size = 12),
      axis.text.x = element_text(size = 12, angle = 90),
      legend.text = element_text(size = 15),
      strip.text.x = element_text(size = 14),
      legend.position="bottom"
  )

Querétaro

violencia_mes_entidad <- DatosMesEstadoAgrupados(
  datos_violencia, entidad = "Querétaro", resaltar.tipo = c("Violencia familiar")
)
violencia_mes_entidad
ggplot(violencia_mes_entidad) +
  geom_col(aes(x= mes, y = proporcion_tipo, fill = Tipo)) +
  facet_grid(. ~ anyo) +
  scale_y_continuous(labels = scales::percent) +
  scale_fill_viridis_d(direction = -1) +
  labs(
    title = "Violencia Familiar contra la Mujer Meses comparables",
    subtitle = "Porcentaje de del total de casos reportados por mes y año en Querétaro",
    x = "",
    y = "Porcentaje del total de casos",
    fill = ""
  ) +
  theme_ipsum() +
  theme(
      axis.title.y = element_text(size = 18),
      axis.text.y = element_text(size = 12),
      axis.text.x = element_text(size = 12, angle = 90),
      legend.text = element_text(size = 15),
      strip.text.x = element_text(size = 14),
      legend.position="bottom"
  )

Comparando los porcentajes por año

Toda la Republica

Otra representación sería:

violencia_mes_todo<- violencia_mes_todo %>% 
  filter(Tipo == "Violencia familiar")

ggplot(violencia_mes_todo) +
  geom_line(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 1) +
  geom_point(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 3) +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Porcentaje Violencia Familiar contra la Mujer",
    subtitle = "Comparativa meses con datos en todo México",
    x = "",
    y = "Porcentaje del total de casos",
    color = ""
  ) +
  scale_color_viridis_d(direction = -1) +
  theme_ipsum() +
  theme(
      axis.title.y = element_text(size = 18),
      axis.text.y = element_text(size = 11),
      axis.text.x = element_text(size = 11),
      legend.text = element_text(size = 14),
      strip.text.y = element_text(size = 18)
  )

Querétaro

violencia_mes_entidad <- violencia_mes_entidad %>% 
  filter(Tipo == "Violencia familiar")

ggplot(violencia_mes_entidad) +
  geom_line(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 1) +
  geom_point(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 3) +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Porcentaje Violencia Familiar contra la Mujer",
    subtitle = "Comparativa meses con datos en Querétaro",
    x = "",
    y = "Porcentaje del total de casos",
    color = ""
  ) +
  scale_color_viridis_d(direction = -1) +
  theme_ipsum() +
  theme(
      axis.title.y = element_text(size = 18),
      axis.text.y = element_text(size = 11),
      axis.text.x = element_text(size = 11),
      legend.text = element_text(size = 14),
      strip.text.y = element_text(size = 18)
  )

Varios tipos de violencia

Podemos ademas comparar varios tipos de violencia

violencia_mes_entidad_varios <- DatosMesEstadoAgrupados(
  datos_violencia, entidad = "Todas", resaltar.tipo = c("Violencia familiar", "Abuso sexual")
)
violencia_mes_entidad_varios <- violencia_mes_entidad_varios %>% 
  filter(Tipo !=  "Otros tipos de Violencia")

ggplot(violencia_mes_entidad_varios) +
  geom_line(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 1) +
  geom_point(aes(x= mes, y = proporcion_tipo, color = factor(anyo), group = factor(anyo)), size = 3) +
  facet_grid(Tipo ~ ., scales = "free_y") +
  scale_y_continuous(labels = scales::percent) +
  labs(
    title = "Porcentaje Violencia Familiar y Acoso Sexual contra la Mujer",
    subtitle = "Comparativa meses con datos en todo México",
    x = "",
    y = "Porcentaje del total de casos",
    color = ""
  ) +
  scale_color_viridis_d(direction = -1) +
  theme_ipsum() +
  theme(
      axis.title.y = element_text(size = 18),
      axis.text.y = element_text(size = 11),
      axis.text.x = element_text(size = 11),
      legend.text = element_text(size = 14),
      strip.text.y = element_text(size = 18)
  )

Ranking de tipo de violencia

Republica Mexicana

ranking_tipo_violencia_republica <- RankingTipoViolencia(datos_violencia, entidad = NULL, numero_posiciones = 5)
ranking_tipo_violencia_republica
violencia_tags_inicio <- ranking_tipo_violencia_republica$violencia_tags_inicio
violencia_tags_final <- ranking_tipo_violencia_republica$violencia_tags_final
colores <- ranking_tipo_violencia_republica$colores
ranking_tipo_violencia_republica <- ranking_tipo_violencia_republica$ranking_violencia

ggplot(data = ranking_tipo_violencia_republica, aes(anyo, rank, color = Tipo, group = Tipo, label = Tipo)) +
  geom_line(size = 3, alpha = 0.5) +
  geom_point(size = 6, alpha = 0.5) +
  geom_point(size = 3, color = "white") +
  geom_text(data = violencia_tags_inicio, x = 2013.5, size = 5) +
  geom_text(data = violencia_tags_final, x = 2021.5, size = 5) +
  scale_y_reverse(breaks = 1:5) +
  scale_x_continuous(
    breaks = seq(min(ranking_tipo_violencia_republica$anyo), max(ranking_tipo_violencia_republica$anyo)),
    limits = c(min(ranking_tipo_violencia_republica$anyo) - 2.3, max(ranking_tipo_violencia_republica$anyo) + 2)
  ) +
  scale_color_manual(values = colores) +
  theme_ipsum() +
  theme(
    axis.title.y = element_text(size = 20),
    axis.text.y = element_text(size = 14),
      axis.text.x = element_text(size = 14),
    legend.position = "",
    panel.grid.major.y = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_line(color = 'grey60', linetype = 'dashed')) +
    labs(
      title = "Clasificación Violencia Familiar contra la Mujer",
      subtitle = "Top 5 tipos de violencia en todo México",
      x = "Año",
      y = "Rank"
    )

Querétaro

ranking_tipo_violencia <- RankingTipoViolencia(datos_violencia, entidad = "Querétaro", numero_posiciones = 5)
ranking_tipo_violencia
violencia_tags_inicio <- ranking_tipo_violencia$violencia_tags_inicio
violencia_tags_final <- ranking_tipo_violencia$violencia_tags_final
colores <- ranking_tipo_violencia$colores
ranking_tipo_violencia <- ranking_tipo_violencia$ranking_violencia

ggplot(data = ranking_tipo_violencia, aes(anyo, rank, color = Tipo, group = Tipo, label = Tipo)) +
  geom_line(size = 1.7, alpha = 0.5) +
  geom_point(size = 4, alpha = 0.5) +
  geom_point(size = 1.75, color = "white") +
  geom_text(data = violencia_tags_inicio, x = 2013.5, size = 4) +
  geom_text(data = violencia_tags_final, x = 2021.3, size = 4) +
  scale_y_reverse(breaks = 1:5) +
  scale_x_continuous(
    breaks = seq(min(ranking_tipo_violencia$anyo), max(ranking_tipo_violencia$anyo)),
    limits = c(min(ranking_tipo_violencia$anyo) - 2.3, max(ranking_tipo_violencia$anyo) + 2)
  ) +
  scale_color_manual(values = colores) +
  theme_ipsum() +
  theme(
    legend.position = "",
    panel.grid.major.y = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_line(color = 'grey60', linetype = 'dashed')) +
    labs(
      title = "Clasificación Violencia Familiar contra la Mujer",
      subtitle = "Top 5 tipos de violencia en Querétaro",
      x = "Año", 
      y = "Rank"
    )


RladiesQro/ViolenciaContraMujeres documentation built on Aug. 3, 2020, 1:10 a.m.