library(tinytex)
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
library(ggplot2)
library(tidyr)
data_dengue = read.csv("datos_abiertos_vigilancia_dengue.csv")
unique(data_dengue$enfermedad)
## [1] "DENGUE SIN SEÑALES DE ALARMA" "DENGUE GRAVE"
## [3] "II\\" ""
## [5] "DENGUE CON SEÑALES DE ALARMA"
data_dengue$enfermedad[data_dengue$enfermedad == "II\\"] <- NA
data_dengue$enfermedad[data_dengue$enfermedad == ""] <- NA
data_dengue$provincia[data_dengue$provincia == "\\N"] <- NA
# Ahora, opcionalmente, podrías querer eliminar filas con NA en 'enfermedad'
data_dengue <- na.omit(data_dengue)
data_dengue$enfermedad <- factor(data_dengue$enfermedad,
levels = c("DENGUE SIN SEÑALES DE ALARMA",
"DENGUE GRAVE",
"DENGUE CON SEÑALES DE ALARMA"))
levels(data_dengue$enfermedad)
## [1] "DENGUE SIN SEÑALES DE ALARMA" "DENGUE GRAVE"
## [3] "DENGUE CON SEÑALES DE ALARMA"
data_dengue$ano = as.numeric(data_dengue$ano)
data_dengue$edad = as.numeric(data_dengue$edad)
data_dengue$provincia <- factor(data_dengue$provincia)
# ¿La edad media del contagiado de dengue vario a través de los años? ¿Fue lo mismo segun gravedad?
data_dengue_limpio <- data_dengue %>% filter(edad <= 122)
edad_media_por_año <- data_dengue_limpio %>%
group_by(ano) %>%
summarise(edad_media = mean(edad, na.rm = TRUE))
# Imprimir los resultados
print(edad_media_por_año)
## # A tibble: 23 × 2
## ano edad_media
## <dbl> <dbl>
## 1 2000 28.4
## 2 2001 28.9
## 3 2002 26.0
## 4 2003 28.6
## 5 2004 28.1
## 6 2005 26.3
## 7 2006 26.8
## 8 2007 28.0
## 9 2008 27.8
## 10 2009 29.6
## # ℹ 13 more rows
ggplot(edad_media_por_año, aes(x = ano, y = edad_media)) +
geom_line() +
geom_point() +
theme_minimal() +
labs(title = "Edad media de contagiados de dengue por año",
x = "Año",
y = "Edad media")

edad_media_por_año_y_gravedad <- data_dengue_limpio %>%
group_by(ano, enfermedad) %>%
summarise(edad_media = mean(edad, na.rm = TRUE))
## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
# Imprimir los resultados
print(edad_media_por_año_y_gravedad)
## # A tibble: 59 × 3
## # Groups: ano [23]
## ano enfermedad edad_media
## <dbl> <fct> <dbl>
## 1 2000 DENGUE SIN SEÑALES DE ALARMA 28.4
## 2 2001 DENGUE SIN SEÑALES DE ALARMA 28.9
## 3 2001 DENGUE GRAVE 31.4
## 4 2002 DENGUE SIN SEÑALES DE ALARMA 26.0
## 5 2002 DENGUE GRAVE 21.9
## 6 2002 DENGUE CON SEÑALES DE ALARMA 12
## 7 2003 DENGUE SIN SEÑALES DE ALARMA 28.6
## 8 2003 DENGUE GRAVE 38
## 9 2004 DENGUE SIN SEÑALES DE ALARMA 28.1
## 10 2004 DENGUE GRAVE 23.8
## # ℹ 49 more rows
ggplot(edad_media_por_año_y_gravedad, aes(x = ano, y = edad_media, color = enfermedad)) +
geom_line() +
geom_point() +
theme_minimal() +
labs(title = "Edad media de contagiados de dengue por año y gravedad",
x = "Año",
y = "Edad media",
color = "Gravedad")

#La cantidad de casos vario a través de los años? Fue lo mismo segun gravedad?
casos_por_año <- data_dengue_limpio %>%
group_by(ano) %>%
summarise(cantidad_de_casos = n())
print(casos_por_año)
## # A tibble: 23 × 2
## ano cantidad_de_casos
## <dbl> <int>
## 1 2000 5557
## 2 2001 23526
## 3 2002 8086
## 4 2003 3349
## 5 2004 9547
## 6 2005 5640
## 7 2006 4022
## 8 2007 6344
## 9 2008 12824
## 10 2009 13404
## # ℹ 13 more rows
ggplot(casos_por_año, aes(x = ano, y = cantidad_de_casos)) +
geom_line() +
geom_point() +
theme_minimal() +
labs(title = "Cantidad de casos por año",
x = "Año",
y = "Cantidad de casos")

casos_por_enfermedad <- data_dengue_limpio %>%
group_by(enfermedad) %>%
summarise(cantidad_de_casos = n())
print(casos_por_enfermedad)
## # A tibble: 3 × 2
## enfermedad cantidad_de_casos
## <fct> <int>
## 1 DENGUE SIN SEÑALES DE ALARMA 443970
## 2 DENGUE GRAVE 2259
## 3 DENGUE CON SEÑALES DE ALARMA 54976
ggplot(casos_por_enfermedad, aes(x = enfermedad, y = cantidad_de_casos, fill = enfermedad)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Cantidad de casos según gravedad",
x = "Gravedad",
y = "Cantidad de casos",
fill = "Nivel de gravedad") +
theme(axis.text.x = element_blank())

#¿Cuáles fueron las provincias mas afectadas con contagiados a lo largo de los años?
casos_por_año_y_provincia <- data_dengue_limpio %>%
group_by(ano, provincia) %>%
summarise(cantidad_de_casos = n(), .groups = 'drop') %>%
arrange(ano, desc(cantidad_de_casos))
print(casos_por_año_y_provincia)
## # A tibble: 1,310 × 3
## ano provincia cantidad_de_casos
## <dbl> <fct> <int>
## 1 2000 SULLANA 2352
## 2 2000 TRUJILLO 1496
## 3 2000 MAYNAS 312
## 4 2000 BAGUA 280
## 5 2000 TALARA 216
## 6 2000 ALTO AMAZONAS 184
## 7 2000 TUMBES 127
## 8 2000 SAN MARTIN 104
## 9 2000 CORONEL PORTILLO 87
## 10 2000 UTCUBAMBA 61
## # ℹ 1,300 more rows
provincias_mayor_cantidad <- casos_por_año_y_provincia %>%
group_by(provincia) %>%
summarise(total_casos = sum(cantidad_de_casos)) %>%
arrange(desc(total_casos)) %>%
top_n(15, total_casos) %>%
pull(provincia)
casos_filtrados_top_provincias <- casos_por_año_y_provincia %>%
filter(provincia %in% provincias_mayor_cantidad)
ggplot(casos_filtrados_top_provincias, aes(x = ano, y = reorder(provincia, cantidad_de_casos), fill = cantidad_de_casos)) +
geom_tile() +
scale_fill_gradient(low = "blue", high = "red") +
theme_minimal() +
labs(title = "Casos de dengue por año y provincia (Top 15)",
x = "Año",
y = "Provincia",
fill = "Nivel de casos") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.text.y = element_text(size = 5))

# Qué relación habia entre los casos alarmantes no graves y los asintomaticos segun departamento a lo largo de los años?
# Filtrar para incluir solo los casos de interés
casos_filtrados <- data_dengue_limpio %>%
filter(enfermedad %in% c("DENGUE SIN SEÑALES DE ALARMA", "DENGUE CON SEÑALES DE ALARMA")) %>%
group_by(ano, enfermedad) %>%
summarise(cantidad_de_casos = n(), .groups = 'drop') %>%
pivot_wider(names_from = enfermedad, values_from = cantidad_de_casos, values_fill = list(cantidad_de_casos = 0))
# Verificar los datos resultantes
print(casos_filtrados)
## # A tibble: 23 × 3
## ano `DENGUE SIN SEÑALES DE ALARMA` `DENGUE CON SEÑALES DE ALARMA`
## <dbl> <int> <int>
## 1 2000 5557 0
## 2 2001 23276 0
## 3 2002 8071 1
## 4 2003 3334 0
## 5 2004 9513 0
## 6 2005 5625 0
## 7 2006 4018 0
## 8 2007 6309 0
## 9 2008 12789 0
## 10 2009 13393 0
## # ℹ 13 more rows
casos_filtrados_relacion <- casos_filtrados %>%
mutate(relacion = `DENGUE CON SEÑALES DE ALARMA` / `DENGUE SIN SEÑALES DE ALARMA`,
supera = `DENGUE CON SEÑALES DE ALARMA` > `DENGUE SIN SEÑALES DE ALARMA`)
# Filtrar los años donde los casos sin señales de alarma superaron a los con señales de alarma
años_supera <- casos_filtrados_relacion %>%
filter(supera == TRUE) %>%
select(ano, relacion)
# Ver los años y la relación
print(años_supera)
## # A tibble: 0 × 2
## # ℹ 2 variables: ano <dbl>, relacion <dbl>
ggplot(casos_filtrados, aes(x = ano)) +
geom_line(aes(y = `DENGUE SIN SEÑALES DE ALARMA`, colour = "Sin señales de alarma")) +
geom_line(aes(y = `DENGUE CON SEÑALES DE ALARMA`, colour = "Con señales de alarma")) +
theme_minimal() +
labs(title = "Casos de dengue sin y con señales de alarma según año",
x = "Año",
y = "Cantidad de casos",
colour = "Tipo de caso") +
scale_colour_manual(values = c("Sin señales de alarma" = "blue", "Con señales de alarma" = "red"))
