William Amorim

9 minutos de leitura

Material particulado é o nome genérico atribuído a partículas microscópicas, sólidas ou líquidas, suspensas na atmosfera. Por serem tão pequenas, elas podem ser inaladas e causar sérios problemas à saúde. Partículas com menos de 10 micrômetros de diâmetro, por exemplo, podem penetrar na estrutura pulmonar (bronquíolos e alvéolos) e cair na corrente sanguínea. Por essa razão, esse grupo é normalmente classificado em: MP2.5, partículas com até 2.5 micrômetros de diâmetro, e MP10, partículas com diâmetro entre 2.5 e 10 micrômetros.

Referência de magnitude:
um fio de cabelo humano tem cerca de 70 micrômetros de diâmetro.

Nas últimas décadas, o material particulado vem sendo um dos principais alvos de estudos epidemiológicos sobre poluição do ar. Ele está associado a diversas doenças respiratórias, cardiovasculares e câncer de pulmão, com efeito mais acentuado em crianças, idosos e gestantes.

As fontes de material particulado podem ser naturais ou antropogênicas (causadas pelo homem). O sal marinho suspenso no ar, por exemplo, é um dos maiores contribuidores para a massa global de material particulado. Em grandes cidades, as principais fontes são a poeira levantada do solo pelo vento e os compostos gerados por processos industriais e queima de combustíveis.

Neste post, vamos analisar os últimos dez anos de material particulado na cidade de São Paulo. Para isso, coletamos dados os dados disponíveis de MP2.5 e MP10 de 2008 a 2017, que podem ser encontrados aqui. Para carregar os dados, utilizamos o seguinte código:

df_pm <- read_rds("data/df_pm.rds")
station_coord <- readxl::read_excel("data/cetesb_station_geoposition.xlsx") %>% 
  mutate(stationname = case_when(
    stationname == "Parelheiros" ~ "Grajaú-Parelheiros",
    stationname == "IPEN-USP" ~ "Cid.Universitária-USP-Ipen",
    stationname == "Nossa Senhora do Ó" ~ "N.Senhora do Ó"
  ))

O objeto station_coord guarda as coordenadas espaciais de cada estação. A base com essas informações se encontra aqui. As estações utilizadas estão representadas no mapa abaixo.

df_pm %>%
  left_join(station_coord, by = "stationname") %>% 
  distinct(stationname, .keep_all = TRUE) %>% 
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(lng = ~long, lat = ~lat, popup = ~stationname)


EDA

Nos gráficos abaixo, plotamos as séries de MP2.5 e MP10 para os dados disponíveis. Observamos que os picos concentração dos dois grupos costumam ser no inverno. Repare que, no período analisado, há menos estações medindo de MP2.5 e com menor frequência.

df_pm %>% 
  filter(
    parameter == "MP2.5", 
    !stationname %in% c("Osasco", "Santana", "Pinheiros")
  ) %>%
  ggplot(aes(x = date_time, y = mass_conc)) +
  geom_line(alpha = 0.3) +
  geom_smooth(se = FALSE) +
  facet_wrap(~stationname, scales = "free") +
  theme_bw() +
  labs(x = "Ano", y = expression(paste("MP2.5 (", mu, "g/", m^3, ")")))

df_pm %>% 
  filter(parameter == "MP10") %>%
  ggplot(aes(x = date_time, y = mass_conc)) +
  geom_line(alpha = 0.3) +
  geom_smooth(se = FALSE) +
  facet_wrap(~stationname, scales = "free") +
  theme_bw() +
  labs(x = "Ano", y = expression(paste("MP10 (", mu, "g/", m^3, ")"))) +
  scale_x_datetime(date_breaks = "3 years", date_labels = "%Y")

O gráfico abaixo apresenta a média horária de MP2.5 e MP10 para cada dia da semana. Observamos que:

  • o MP10 tem dois picos durante o dia, associados aos períodos de tráfego intenso;

  • as maiores concentrações de MP2.5 acontecem ao redor da meia-noite;

  • a concentração de ambos tende a ser menor nos fins de semana.

df_pm %>%
  mutate(dayofweek = lubridate::wday(date, label = TRUE)) %>%
  group_by(parameter, hour, dayofweek) %>% 
  summarise(mass_conc = mean(mass_conc, na.rm = TRUE)) %>% 
  ggplot(aes(x = hour, y = mass_conc)) +
  geom_line() +
  facet_grid(parameter ~ dayofweek) +
  scale_x_continuous(breaks = seq(0, 24, 4)) +
  theme_bw() +
  labs(x = "Hora", y = expression(paste("MP (", mu, "g/", m^3, ")"))) +
  scale_x_continuous(breaks = seq(0, 24, 6))

Pelas médias anuais para cada estação, apresentadas nos gráficos a seguir, notamos uma tendência decrescente da concentração de MP10 em algumas estações. Em outras, a concentração anual média parece estar estável nos últimos anos. Na estação de Pinheiros, próxima à Marginal Pinheiros, a concentração anual média aumentou no nos últimos dois anos.

df_pm %>%
  filter(
    hour %in% 6:22, 
    parameter == "MP2.5",
    !stationname %in% c("Osasco", "Santana", "Pinheiros")
  ) %>% 
    mutate(
    year = lubridate::year(date),
    year = as.character(year)
  ) %>% 
  group_by(year, parameter, stationname) %>% 
  summarise(mass_conc = mean(mass_conc, na.rm = TRUE)) %>% 
  ggplot(aes(x = year, y = mass_conc)) +
  geom_bar(stat = "identity", fill = "grey") +
  facet_wrap(~stationname) +
  labs(x = "Hora", y = expression(paste("MP2.5 (", mu, "g/", m^3, ")"))) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90))

df_pm %>%
  filter(hour %in% 6:22, parameter == "MP10") %>% 
  mutate(
    year = lubridate::year(date),
    year = as.character(year)
  ) %>% 
  group_by(year, parameter, stationname) %>% 
  summarise(mass_conc = mean(mass_conc, na.rm = TRUE)) %>% 
  filter(
    !(stationname == "Pinheiros" & year == 2013),
    !(stationname == "Santana" & year == 2017)
  ) %>%
  ggplot(aes(x = year, y = mass_conc)) +
  geom_bar(stat = "identity", fill = "grey") +
  facet_wrap(~stationname) +
  labs(x = "Hora", y = expression(paste("MP10 (", mu, "g/", m^3, ")"))) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90))

O gráfico a seguir compara as médias anuais de MP10 de cada estação ao longo do período analisado.

p <- df_pm %>%
  filter(
    hour %in% 6:22, 
    parameter == "MP10", 
    !dayofweek %in% c("sat", "sun")
  ) %>% 
  mutate(year = lubridate::year(date)) %>% 
  group_by(year, stationname) %>% 
  summarise(mass_conc = mean(mass_conc, na.rm = TRUE)) %>%
  filter(
    !(stationname == "Pinheiros" & year == 2013),
    !(stationname == "Santana" & year == 2017)
  ) %>% 
  ungroup %>% 
  rename(Station = stationname, Year = year, Mass = mass_conc) %>%
  mutate(Mass = round(Mass, 2)) %>% 
  ggplot(aes(x = Year, y = Mass, color = Station)) +
  geom_line() +
  geom_point() +
  theme(
    legend.position = "top"
  ) +
  labs(
    x = "Year",
    y = "PM10",
    color = ""
  ) +
  scale_x_continuous(breaks = seq(2008, 2017, 3)) +
  theme_bw()

plotly::ggplotly(p)

Conclusões

  • A disponibilidade de dados de MP2.5 para a cidade de São Paulo de 2008 a 2017 é muito ruim, o que prejudica a análise da tendência da concentração dessas partículas e a comparação entre regiões da cidade.

  • Os picos e MP10 ao longo do dia estão associados com os horários de trânsito mais intenso.

  • As estações com maiores concentrações anuais de MP10 ao longo do período analisado foram Grajaú-Parelheiros e Osasco.

comments powered by Disqus