Mapa de calor da concentração de casos por 100.000 habitantes - Brasil

#install.packages("leaflet.extras")
require(leaflet.extras)
require(sf)
require(geobr)



muni <- geobr::read_municipality(year=2017, showProgress = F)
## Using year 2017
## Loading data for the whole country. This might take a few minutes.
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

dad <- coronabr::get_corona_br()
## 
## -- Column specification --------------------------------------------------------
## cols(
##   city = col_character(),
##   city_ibge_code = col_double(),
##   date = col_date(format = ""),
##   epidemiological_week = col_double(),
##   estimated_population = col_double(),
##   estimated_population_2019 = col_double(),
##   is_last = col_logical(),
##   is_repeated = col_logical(),
##   last_available_confirmed = col_double(),
##   last_available_confirmed_per_100k_inhabitants = col_double(),
##   last_available_date = col_date(format = ""),
##   last_available_death_rate = col_double(),
##   last_available_deaths = col_double(),
##   order_for_place = col_double(),
##   place_type = col_character(),
##   state = col_character(),
##   new_confirmed = col_double(),
##   new_deaths = col_double()
## )
## salvando corona_brasil.csv em outputs
dados <- subset(dad, city != "Importados/Indefinidos")

Brasil_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

Brasilcorona <- left_join(Brasil_covid, dados, by="code_muni")
Brasilcorona <- st_transform(Brasil_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = Brasilcorona$confirmed_per_100k_inhabitants, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = Brasilcorona$confirmed, bins = bins2)



leaflet(Brasilcorona) %>%
  addHeatmap(lng = ~as.numeric(Brasilcorona$longitude), lat = ~as.numeric(Brasilcorona$latitude), intensity = ~Brasilcorona$confirmed_per_100k_inhabitants,
             blur = 20, max = 15, radius = 10) %>% addTiles() 

Pelo mapa de calor, percebe-se que a maior concentração de casos confirmados por 100.000 habitantes encontra-se nas regiões Sul, Nordeste e Sudeste. Cabe ressaltar que a subnotificação influencia nesse resultado, o que provavelmente explica a baixíssima concentração de casos na região Norte.

Novos casos por dia - Top 5 - UFs

require(magrittr)
## Loading required package: magrittr
require(dplyr)
## Loading required package: dplyr
## Warning: package 'dplyr' was built under R version 4.0.3
## 
## 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
require(ggplot2)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.0.3
UFs <- c("RS","RJ","SC","BA","PE")

dados %>% 
  group_by(state, date) %>% 
  filter(date >= "2020-02-25", state %in% UFs) %>% 
  ggplot(aes(x = date, y = new_confirmed, color = reorder(state, -new_confirmed))) + 
  geom_line(size = 1) + 
  scale_color_brewer(palette = "Spectral") + 
  scale_x_date(labels = scales::date_format("%d/%b"), breaks = "week") + 
  labs(x = "Data", y = "# novos casos confirmados", color = "UF") + 
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.4, hjust = 0.5))

Analisando o gráfico acima, percebe-se que ao passar das semanas, o número de casos confirmados no RS aumentou consideravelmente. Na segunda semana de ulho, há um pico nas notificações do referido estado, bem como na primeira semana de setembro, primeira semana de outubro e segunda semana de dezembro.

O novos casos no RJ têm um corportamento bastante nervoso, com vários picos ao longo do período analisado.

Santa Caratina apresentou a maior notificação de novos casos do estado nos dias finais de agosto e iniciais de setembro.

Número de novos casos por UF - dia 24/12

dados_uf = dados %>% filter(date=="2020-12-24")%>%
  group_by(state) %>% 
  summarise(novos_confirmados = sum(new_confirmed)) %>% arrange(-(novos_confirmados)) %>%
  ungroup()
## `summarise()` ungrouping output (override with `.groups` argument)
require(DT)
## Loading required package: DT
## Warning: package 'DT' was built under R version 4.0.3
DT::datatable(dados_uf)
ggplot(dados_uf, aes(x = reorder(state, -novos_confirmados), y = novos_confirmados)) + 
  geom_bar(stat = "identity", color = "black", fill = rainbow(27)) + 
  geom_text(aes(label = novos_confirmados), position = "stack", size = 3, vjust = -0.25) + 
  scale_y_continuous(limits = c(0, max(dados_uf$novos_confirmados)+100), 
                     breaks = seq(0, max(dados_uf$novos_confirmados)+100, 250), 
                     expand = c(0.01, 0)) + 
  labs(x = "", y = "# de novos casos confirmados em 24/12/2020") + 
  theme_bw()

De acordo com o gráfico de colunas exposto, percebe-se que o top 3 de estados com maior número bruto de casos notificados foram Rio Grande do Sul, Rio de Janeiro e Santa Catarina.

Cabe ressaltar que os estados Alagoas, Amazonas, Amapá, Espírito Santo, Minas Gerais, Mato Grosso do Sul, Paraná, Rio Grande do Norte, Sergipe e São Paulo mostram o total de zero notificações de novos casos na referida data, porém provavelmente esse número é reflexo da não reportação dos novos casos.

Serão analisados os mapas de calor dos casos por 100.000 habitantes dos respectivos estados.

Mapa de calor da concentração de casos por 100.000 habitantes - Estado do RS

muni <- geobr::read_municipality(code_muni= "RS", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

RS_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

rscorona <- left_join(RS_covid, dados, by="code_muni")
rscorona <- st_transform(RS_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = rscorona$confirmed_per_100k_inhabitants, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = rscorona$confirmed, bins = bins2)



leaflet(rscorona) %>%
  addHeatmap(lng = ~as.numeric(rscorona$longitude), lat = ~as.numeric(rscorona$latitude), intensity = ~rscorona$confirmed_per_100k_inhabitants,
             blur = 20, max = 3, radius = 20) %>% addTiles() 

Observando o mapa com pouco zoom, não é possível perceber qual a área que possui cores mais quentes. Ao aproximar o mapa, percebe-se um maior aquecimento do mapa na região onde se encontram as cidades de Lajeado e Estrela e na região dentro do triângulo comporto pelas cidades de Sapucaia do Sul, Canela e São pedro da Serra.

Mapa de calor da concentração de casos por 100.000 habitantes - Estado do RJ

require(sf)
## Loading required package: sf
## Warning: package 'sf' was built under R version 4.0.3
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
require(RColorBrewer)
## Loading required package: RColorBrewer
## Warning: package 'RColorBrewer' was built under R version 4.0.3
require(leaflet)
## Loading required package: leaflet
## Warning: package 'leaflet' was built under R version 4.0.3
require(leaflet.extras)
## Loading required package: leaflet.extras
## Warning: package 'leaflet.extras' was built under R version 4.0.3
muni <- geobr::read_municipality(code_muni= "RJ", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

RJ_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

rjcorona <- left_join(RJ_covid, dados, by="code_muni")
rjcorona <- st_transform(RJ_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = rjcorona$confirmed_per_100k_inhabitants, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = rjcorona$confirmed, bins = bins2)



leaflet(rjcorona) %>%
  addHeatmap(lng = ~as.numeric(rjcorona$longitude), lat = ~as.numeric(rjcorona$latitude), intensity = ~rjcorona$confirmed_per_100k_inhabitants,
             blur = 20, max = 3, radius = 20) %>% addTiles() 

Observando o mapa com pouco zoom, é possível perceber que a área que possui cores mais quentes é compatível com a cidade de Nova Iguaçu. Quanto mais quente é a cor, maior a concentração de casos por 100.000 habitantes. Ou seja, Nova Iguaçu possui maior concentração de casos.

Mapa de calor da concentração de casos por 100.000 habitantes - Estado de SC

muni <- geobr::read_municipality(code_muni= "SC", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

SC_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

sccorona <- left_join(SC_covid, dados, by="code_muni")
sccorona <- st_transform(SC_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = sccorona$confirmed_per_100k_inhabitants, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = sccorona$confirmed, bins = bins2)



leaflet(sccorona) %>%
  addHeatmap(lng = ~as.numeric(sccorona$longitude), lat = ~as.numeric(sccorona$latitude), intensity = ~sccorona$confirmed_per_100k_inhabitants,
             blur = 20, max = 3, radius = 20) %>% addTiles() 

Observando o mapa com pouco zoom, não é possível perceber qual a área que possui cores mais quentes. Ao aproximar o mapa, percebe-se um maior aquecimento do mapa na região onde se encontram de Braço do Norte, Tubarão e Joaçaba, além de Navegantes e Penha.

Mapa de calor da concentração de óbitos - Brasil

muni <- geobr::read_municipality(year=2017, showProgress = F)
## Using year 2017
## Loading data for the whole country. This might take a few minutes.
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))


bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = Brasilcorona$new_deaths, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = Brasilcorona$new_deaths, bins = bins2)



leaflet(Brasilcorona) %>%
  addHeatmap(lng = ~as.numeric(Brasilcorona$longitude), lat = ~as.numeric(Brasilcorona$latitude), intensity = ~Brasilcorona$new_deaths,
             blur = 20, max = 15, radius = 10) %>% addTiles() 

Pelo mapa de calor, percebe-se que a maior concentração de óbitos encontra-se nas regiões Sul, Nordeste e Sudeste. Cabe ressaltar que a subnotificação influencia nesse resultado, o que provavelmente explica a baixíssima concentração de casos na região Norte.

Óbitos por dia - Top 5 - UFs

require(magrittr)

dados %>% 
  #group_by(state, date) %>% 
  filter(date >= "2020-02-25", state %in% c("RS","RJ","SC","BA","PE")) %>% 
  ggplot(aes(x = date, y = new_deaths, color = reorder(state, -new_deaths))) + 
  geom_line(size = 1) + 
  scale_color_brewer(palette = "Spectral") + 
  scale_x_date(labels = scales::date_format("%d/%b"), breaks = "month") + 
  labs(x = "Data", y = "# óbitos", color = "UF") + 
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.4, hjust = 0.5))

Observa-se que a maior concentração do número bruto de óbitos por dia é no estado do RJ, em todos o período analisado. Entretanto, cabe ressaltar que não é adequado comparar números brutos.

Taxa de mortalidade por dia - Top 5 - UFs

require(magrittr)

dados %>% 
  #group_by(state, date) %>% 
  filter(state %in% c("RS","RJ","SC","BA","PE")) %>% 
  ggplot(aes(x = date, y = 1000*(new_deaths/estimated_population_2019), color = reorder(state, -1000*(new_deaths/estimated_population_2019)))) +
  geom_line(size = 1) + 
  scale_color_brewer(palette = "Spectral") + 
  scale_x_date(labels = scales::date_format("%d/%b"), breaks = "week") + 
  labs(x = "Data", y = "taxa de mortalidade", color = "UF") + 
  theme_minimal() + theme(axis.text.x = element_text(angle = 90, vjust = 0.4, hjust = 0.5))

Observa-se que o estado com maior taxa de mortalidade é o RS.

Número de óbitos por UF - dia 24/12

dados_uf = dados %>% filter(date=="2020-12-24")%>%
  group_by(state) %>% 
  summarise(novos_obitos = sum(new_deaths)) %>% arrange(-(novos_obitos)) %>%
  ungroup()
## `summarise()` ungrouping output (override with `.groups` argument)
require(DT)
DT::datatable(dados_uf)
ggplot(dados_uf, aes(x = reorder(state, -novos_obitos), y = novos_obitos)) + 
  geom_bar(stat = "identity", color = "black", fill = rainbow(27)) + 
  geom_text(aes(label = novos_obitos), position = "stack", size = 3, vjust = -0.25) + 
  scale_y_continuous(limits = c(0, max(dados_uf$novos_obitos)+10), 
                     breaks = seq(0, max(dados_uf$novos_obitos)+10, 250), 
                     expand = c(0.01, 0)) + 
  labs(x = "", y = "# de óbitos em 24/12/2020") + 
  theme_bw()

De acordo com o gráfico de colunas exposto, percebe-se que o top 3 de estados com maior número bruto de óbitos por covid-19 foram Rio Grande do Sul, Rio de Janeiro e Santa Catarina, o que faz sentido pelo fato de serem os estados com maior notificação de casos.

Cabe ressaltar que os estados Alagoas, Amazonas, Amapá, Espírito Santo, Minas Gerais, Mato Grosso do Sul, Paraná, Rio Grande do Norte, Sergipe e São Paulo mostram o total de zero notificações de novos casos na referida data, porém provavelmente esse número é reflexo da não reportação dos novos casos.

Apesar de Roraima também apresentar zero óbitos no dia 24/12, como houve notificação nesse mesmo período, será considerado que, de fato, não houve notificação de óbito nesse dia.

Serão analisados os mapas de calor dos óbitos dos respectivos estados.

Mapa de calor dos óbitos - Estado do RS

muni <- geobr::read_municipality(code_muni= "RS", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

RS_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

rscorona <- left_join(RS_covid, dados, by="code_muni")
rscorona <- st_transform(RS_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = rscorona$deaths, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = rscorona$deaths, bins = bins2)



leaflet(rscorona) %>%
  addHeatmap(lng = ~as.numeric(rscorona$longitude), lat = ~as.numeric(rscorona$latitude), intensity = ~(rscorona$new_deaths),
             blur = 20, max = 15, radius = 20) %>% addTiles() 

Observando o mapa com pouco zoom, não é possível perceber qual a área que possui cores mais quentes. Ao aproximar o mapa, percebe-se um maior aquecimento do mapa na região onde se encontram as cidades de Novo Hamburgo, Lajeado e Cerro Grande, isto é, cidades com maiores numeros de óbitos.

Mapa de calor dos óbitos - Estado do RJ

muni <- geobr::read_municipality(code_muni= "RJ", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

RJ_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

rjcorona <- left_join(RJ_covid, dados, by="code_muni")
rjcorona <- st_transform(RJ_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = rjcorona$deaths, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = rjcorona$deaths, bins = bins2)



leaflet(rjcorona) %>%
  addHeatmap(lng = ~as.numeric(rjcorona$longitude), lat = ~as.numeric(rjcorona$latitude), intensity = ~rjcorona$new_deaths,
             blur = 20, max = 3, radius = 20) %>% addTiles() 

Observando o mapa, é possível perceber que os maiores números de óbitos se concentram em Nova Iguaçu, Mendes, Porto Real e Paty do Alferes.

Mapa de calor dos óbitos - Estado de SC

muni <- geobr::read_municipality(code_muni= "SC", year=2017, showProgress = F)
## Using year 2017
sede <- geobr::read_municipal_seat(year= 2010, showProgress = F)
## Using year 2010
sede$longitude <- as.numeric(gsub(".*?([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))
sede$latitude <- as.numeric(gsub(".* ([-]*[0-9]+[.][0-9]+).*", "\\1", sede$geom))

baz <- as.data.frame(sede[,c(2,4,9:10)])
baz <- baz[-5]

mapa <- merge(muni,baz) 

options(DT.options = list(scrollY="100vh"))

SC_covid <- as(mapa, "sf")
names(dados)[9] <- "code_muni"

sccorona <- left_join(SC_covid, dados, by="code_muni")
sccorona <- st_transform(SC_covid)

darkcols <- brewer.pal(8, "YlOrRd")
darkcols <- darkcols[2:8]

bins <- c(0, 2, 5, 15, 20, 30, 50, 100, 200)
pal_fun <- colorBin(darkcols, domain = sccorona$deaths, bins = bins)

bins2 <- c(1, 5, 10 ,20, 50, 100, 200, 500)
pal_fun2 <- colorBin(darkcols, domain = sccorona$deaths, bins = bins2)



leaflet(sccorona) %>%
  addHeatmap(lng = ~as.numeric(sccorona$longitude), lat = ~as.numeric(sccorona$latitude), intensity = ~sccorona$new_deaths,
             blur = 20, max = 3, radius = 20) %>% addTiles() 

Observando o mapa com pouco zoom, não é possível perceber qual a área que possui cores mais quentes. Ao aproximar o mapa, percebe-se um maior aquecimento do mapa na região onde se encontram de Braço do Norte, Tubarão e Joaçaba, além de Navegantes, Capinzal e Penha, isto é, maior número de óbitos nessas cidades.