library(tidyverse)
library(here)
theme_set(theme_bw())
clima_tudo = read_csv(
here("data/tempo-jp-cg-pt.csv"),
col_types = cols(
.default = col_double(),
cidade = col_character(),
semana = col_date(format = ""),
ano = col_integer(),
mes = col_integer()
)
)
A Paraíba é um dos estados brasileiros cujo clima é caracterizado como tropical úmido, clima este que ocorre principalmente no litoral leste e sul do Brasil. O Estado possui 223 municípios distribuídos do litoral ao sertão, e buscando entender melhor o clima do estado, buscamos as 3 cidades mais populosas do estado, João Pessoa, Campina Grande e Santa Rita, respectivamente. Entretanto, a população não reflete a realidade do estado, pois Santa Rita é muito próxima à Capital, e por esse motivo buscamos a 4 cidade mais populosa, Patos, que fica no sertão do Estado, e reflete uma realidade climática diferente das duas anteriores, devido à sua distância do litoral.
Utilizando os dados do INMET, buscaremos entender os dados, extrair informações e responder algumas perguntas através de uma análise exploratória dos dados:
glimpse(clima_tudo)
## Rows: 1,761
## Columns: 11
## $ cidade <chr> "Campina Grande", "Campina Grande", "Campina Grande", "Cam~
## $ semana <date> 2009-12-27, 2010-01-03, 2010-01-10, 2010-01-17, 2010-01-2~
## $ temp_max <dbl> 29.9, 31.4, 32.1, 31.0, 31.2, 32.1, 32.2, 31.3, 32.9, 34.1~
## $ temp_media <dbl> 25.90000, 25.53333, 25.60952, 24.20952, 26.06190, 26.02381~
## $ temp_min <dbl> 21.9, 21.2, 21.3, 20.5, 21.2, 21.4, 20.4, 21.5, 22.1, 22.0~
## $ vento_medio <dbl> 3.960000, 4.080952, 3.952381, 2.860000, 3.690476, 3.971429~
## $ vento_max <dbl> 5.0, 5.3, 6.6, 5.0, 5.5, 6.5, 6.3, 5.5, 5.5, 4.0, 5.0, 7.8~
## $ umidade <dbl> 76.00000, 76.23810, 75.95238, 85.33333, 77.80952, 76.04762~
## $ chuva <dbl> 0.0, 4.7, 0.2, 69.3, 3.8, 1.2, 10.9, 2.5, 0.0, 0.0, 0.0, 0~
## $ ano <int> 2009, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010~
## $ mes <int> 12, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, ~
O primeiro aspecto que vamos observar é a distribuição da relação entre a precipitação e temperatura média nas três cidades:
clima_tudo %>%
filter(!is.na(temp_media)) %>%
ggplot(aes(x = temp_media, y = chuva, color = cidade)) +
facet_wrap(~ cidade) +
geom_point(alpha = .5, size = .9) +
ggtitle("Distribuição da Temperatura média (°C) e Precipitação de Chuvas") +
labs(x = "Temperatura média (°C)",
y = "Precipitação de Chuvas (mm)",
color = "Cidade"
)
O que já observamos no gráfico acima é que a cidade de João Pessoa tem semanas com mais precipitação de chuva do que as demais, tendo até semanas com 400 mm, muito além do que as demais cidades. Entretanto, percebemos que valores de precipitação acima dos 200 mm como algo não recorrente, podendo realizar uma filtragem, retirando esses valores extremos dos dados, para que possamos ter uma melhor visão dos dados:
clima_tudo %>%
filter(chuva < 200, !is.na(temp_media)) %>%
ggplot(aes(x = temp_media, y = chuva, color = cidade)) +
facet_wrap(~ cidade) +
geom_point(alpha = .5, size = .9) +
ggtitle("Distribuição da Temperatura média (°C) e Precipitação de Chuvas") +
labs(x = "Temperatura média (°C)",
y = "Precipitação de Chuvas (mm)",
color = "Cidade"
)
Este gráfico nos traz uma noção melhor de como está a distribuição das precipitações das chuvas perante a temperatura média das semanas: * Campina Grande tem precipitação de chuva predominantemente inferior a 50 mm, além de muitas semanas sem chuva. Além disso, é perceptível que a incidência de chuva ocorre com maior frequência quando a temperatura é mais baixa, entre 21 e 26°C; * Em Patos, observamos um comportamento de altas temperaturas médias, e precipitação próxima ou igual a 0, semanas sem chuva na cidade, acompanhada de muito calor. Além disso, também podemos considerar que não há semanas frias, por contar com a enorme maioria das temperaturas médias superiores à 25°C. * João Pessoa demostra um comportamento de muitas chuvas ao longo de suas semanas, com temperaturas entre 25 e 30°C, algo bem quente. Assim como Patos, sem semanas que podemos considerar como frias.
Para melhorar o entendimento dos pontos, iremos observar como está a distribuição da média em relação à temperatura e precipitação das chuvas, e também temperatura mínima dessas cidades, e assim observar esse comportamento descrito em números, portanto temos:
clima_tudo %>%
filter(!is.na(temp_media), !is.na(temp_min), !is.na(chuva)) %>%
group_by(cidade) %>%
summarise(
Mediana_Temperatura = median(temp_media),
Temperatura_Minima = min(temp_min),
Mediana_Chuvas = median(chuva)
)
## # A tibble: 3 x 4
## cidade Mediana_Temperatura Temperatura_Minima Mediana_Chuvas
## <chr> <dbl> <dbl> <dbl>
## 1 Campina Grande 24.9 15.4 4.7
## 2 João Pessoa 28.1 15 14.8
## 3 Patos 29.2 14.7 0.2
Observamos que Campina Grande tem uma temperatura média inferior às demais cidades, registrando uma temperatura mínima também inferior, e confirmando nossa interpretação. Em relação às precipitações, observamos que Patos é uma cidade que chove bem menos que as demais, e João Pessoa confirma sua distribuição de muitas chuvas.
Após observar esse comportamento em relação às chuvas, vamos analisar a relação entre a Umidade relativa dessas semanas e a Temperatura média:
clima_tudo %>%
filter(!is.na(temp_media)) %>%
ggplot(aes(x = temp_media, y = umidade, color = cidade)) +
facet_wrap(~ cidade) +
geom_point(alpha = .5, size = .9) +
ggtitle("Distribuição da Temperatura média (°C) e Porcentagem de Umidade") +
labs(x = "Temperatura média (°C)",
y = "Porcentagem de Umidade",
color = "Cidade"
)
Observamos que Campina Grande e João Pessoa possuem semanas com umidade bem elevada e próximas, diferente de Patos, que observamos baixa umidade e altas temperaturas. Um aspecto interessante é que observamos uma relação entre as variáveis, e podemos medir através da correlação de Pearson, e obtemos o seguinte valor:
clima_tudo %>%
filter(!is.na(temp_media), !is.na(temp_min), !is.na(chuva)) %>%
group_by(cidade) %>%
summarise(Correlação_Pearson = cor(umidade, temp_media, method = "pearson"))
## # A tibble: 3 x 2
## cidade Correlação_Pearson
## <chr> <dbl>
## 1 Campina Grande -0.710
## 2 João Pessoa -0.546
## 3 Patos -0.681
Existe uma correlação moderada-forte entre a umidade e a temperatura. O valor da correlação é negativo pois, quando a temperatura aumenta, a umidade diminui. Para entender ainda melhor, podemos analisar a média, mediana dessas distribuições. Desse modo, temos:
clima_tudo %>%
filter(!is.na(temp_media), !is.na(temp_min), !is.na(chuva)) %>%
group_by(cidade) %>%
summarise(
Mediana_Temperatura = median(temp_media),
Media_Temperatura = mean(temp_media),
Mediana_Umidade = median(umidade),
Media_Umidade = mean(umidade),
)
## # A tibble: 3 x 5
## cidade Mediana_Temperatu~ Media_Temperatu~ Mediana_Umidade Media_Umidade
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Gra~ 24.9 24.6 75.6 76.1
## 2 João Pessoa 28.1 27.9 74.0 74.8
## 3 Patos 29.2 29.1 54.6 56.0
Observamos que tanto a umidade média quanto mediana em Patos é bem inferior as demais cidades, e com a temperatura é exatamente o oposto, como vimos também na análise anterior.
Por fim, vamos analisar o comportamento entre chuva e umidade nessas cidades, já considerando a filtragem dos valores extremos realizados anteriormente. Portanto, temos:
clima_tudo %>%
filter(!is.na(temp_media), !is.na(temp_min), !is.na(chuva)) %>%
filter(chuva < 200) %>%
ggplot(aes(x = chuva, y = umidade, color = cidade)) +
facet_wrap(~ cidade) +
geom_point(alpha = .75, size = .9) +
ggtitle("Distribuição de Precipitação de Chuva (mm) e Porcentagem de Umidade") +
labs(x = "Precipitação de Chuva (mm) ",
y = "Porcentagem de Umidade",
color = "Cidade"
)
Observamos que Campina Grande mesmo em semanas sem chuva possui alta umidade, João Pessoa possui semanas com alta precipitação e com umidades próximas à Campina, enquanto Patos, como observado anteriormente, apresentou pouca umidade e chuva ao longo das semanas.
O gráfico mostra uma leve linearidade entre as variáveis, podemos realizar uma verificação da correlação, porém para isso vamos filtrar também as semanas que não tivemos chuvas e assim observar se confirma essa relação.
clima_tudo %>%
filter(!is.na(temp_media), !is.na(temp_min), !is.na(chuva)) %>%
filter(chuva > 0, chuva < 200) %>%
group_by(cidade) %>%
summarise(Correlação_Pearson = cor(umidade, chuva, method = "pearson"))
## # A tibble: 3 x 2
## cidade Correlação_Pearson
## <chr> <dbl>
## 1 Campina Grande 0.603
## 2 João Pessoa 0.741
## 3 Patos 0.398
Observamos uma correlação moderada-forte para Campina Grande e João Pessoa, e uma moderada-fraca para cidade de Patos.
Para responder essa pergunta, escolherei as cidades de Campina Grande e João Pessoa, que mostraram maior completude dos dados em análises anteriores. Inicialmente, é interessante analisarmos as temperaturas médias de cada cidade, já que refletem melhor o comum daquela cidade, comparando as temperaturas mês a mês. Além de ver a distribuição e entendendo se dispersam num mês, vejamos também a média desses pontos:
cg_jp_12 <- clima_tudo %>%
filter(!is.na(temp_media), cidade %in% c("Campina Grande", "João Pessoa")) %>%
filter(mes < 4 & ano == 2021 | mes > 3 & ano == 2020)
cg_jp_12 %>%
ggplot(mapping = aes(x = reorder(mes, semana), y = temp_media, color=cidade)) +
geom_point(alpha=0.8) +
geom_point(data = cg_jp_12 %>% group_by(cidade, mes) %>% summarise(m_temp = mean(temp_media), semana = first(semana)),
mapping = aes(x = reorder(mes, semana), y = m_temp), size=3, alpha=0.5) +
labs(x = "Mês (Abril/20 a Março/21)", y = "Temperatura Média", color="Cidade") +
ggtitle("Temperatura média por cidade nos últimos 12 meses")
No gráfico acima, os pontos maiores representam a média da temperatura naquela cidade e mês. Também conseguimos ver que, embora existam situações em que existem vários pontos próximos, um valor extremo causa uma grande variação da média, positiva ou negativamente. Ainda assim, na maioria dos casos, a média concentrou-se próxima a pontos já existentes, não sendo tão afetada. Embora existam poucas medidas por mês, das suas 4 ou 5 semanas, ainda é interessante visualizar através de um boxplot, pois a amplitude da distribuição fica mais clara, como também ficam os valores extremos:
cg_jp_12 %>%
ggplot(mapping = aes(x = reorder(mes, semana), y = temp_media, color=cidade)) +
geom_boxplot() +
labs(x = "Mês (Abril/20 a Março/21)", y = "Temperatura Média", color="Cidade") +
ggtitle("Temperatura média por cidade nos últimos 12 meses")
Neste gráfico, vemos que o mês de Abril teve uma grande amplitude na temperatura média, tanto em Campina Grande quanto em João Pessoa. Além dele, Junho e Abril tem as maiores amplitudes em ambas as cidades ao mesmo tempo. Uma diferença notável é nas amplitudes de Agosto e Setembro, que é bem maior em Campina Grande do que em João Pessoa.
Algo não usual que podemos fazer é avaliar como as temperaturas de uma cidade variam em relação as temperaturas da outra cidade, tentando entender se há relação entre ambas:
temp_cg <- cg_jp_12 %>% filter(cidade == "Campina Grande") %>% pull(temp_media)
temp_jp <- cg_jp_12 %>% filter(cidade == "João Pessoa") %>% pull(temp_media)
ggplot(mapping = aes(x = temp_cg, y = temp_jp)) +
geom_point(color = "red", alpha=.75) +
labs(x = "Temperatura média em Campina Grande", y = "Temperatura média em João Pessoa") +
ggtitle("Relação entre temperatura das cidades")
No gráfico, podemos observar que existe uma relação linear entre as duas variáveis, algo que faz bastante sentido. Podemos também medir essa relação usando a correlação de Pearson, obtendo o 0.9404853, que indica uma altíssima correlação.
Podemos repetir a mesma análise observando as chuvas de cada cidade. Vejamos:
cg_jp_12 %>%
ggplot(mapping = aes(x = reorder(mes, semana), y = chuva, color=cidade)) +
geom_point(alpha=0.8) +
geom_point(data = cg_jp_12 %>% group_by(cidade, mes) %>% summarise(m_chuva = mean(chuva), semana = first(semana)),
mapping = aes(x = reorder(mes, semana), y = m_chuva), size=3, alpha=0.5) +
labs(x = "Mês (Abril/20 a Março/21)", y = "Chuva (mm)", color="Cidade") +
ggtitle("Chuva por cidade nos últimos 12 meses")
As chuvas em João Pessoa são bem mais frequentes que em Campina Grande, diferença notada principalmente no segundo trimestre do ano. Já no último trimestre, tanto Campina Grande quanto João Pessoa tem poucas chuvas, ficando com valores bem próximos. Além da distribuição, podemos também ver se há relação entre as chuvas em Campina Grande e João Pessoa:
chuva_cg <- cg_jp_12 %>% filter(cidade == "Campina Grande") %>% pull(chuva)
chuva_jp <- cg_jp_12 %>% filter(cidade == "João Pessoa") %>% pull(chuva)
ggplot(mapping = aes(x = chuva_cg, y = chuva_jp)) +
geom_point(color = "blue", alpha=.75) +
labs(x = "Chuva em Campina Grande", y = "Chuva em João Pessoa") +
ggtitle("Relação entre as chuvas nas cidades")
Diferente da temperatura, agora não conseguimos perceber nenhuma relação entre as duas variáveis: diferente da temperatura, que aumentar em uma cidade significava aumentar também na outra, as chuvas parecem ser independentes, de modo que chover em Campina Grande não significa chover em João Pessoa.
Fazendo uma análise mais detalhada de Campina Grande e suas temperaturas neste ano de 2021, podemos comparar o comportamento atual e o comportamento nos meses iniciais dos anos anteriores:
clima_tudo %>%
filter(!is.na(temp_media)) %>%
filter(cidade == "Campina Grande", ano > 2010, mes < 4) %>%
ggplot(aes(x = temp_media, y = chuva)) +
facet_wrap(~ ano) + geom_point(alpha = .75, size = .9) +
ggtitle("Distribuição da Temperatura média (°C) e Precipitação de Chuvas") +
labs(
x = "Temperatura média (°C)",
y = "Precipitação de Chuvas (mm)"
)
Observando no gráfico acima, o ano atual teve menos chuva que os anos anteriores, mas a temperatura se manteve semelhante ao histórico. No geral, 2021 está sendo bem parecido com 2013, com um pouco menos de chuva.