library(tidyverse)
library(here)
theme_set(theme_bw())
João Pessoa, Campina Grande e Patos pertencem a regiões distintas da Paraíba sendo elas: Mata Paraibana, Agreste Paraibano e Sertão Paraibano, respectivamente. Por esta razão, as cidades estudadas são um bom exemplo para investigar a diferença do clima paraibano. Queremos investigar a correlação climáticas das cidades, por exemplo,a realação de chuvas e temperatura. A seguir, as questões que buscamos responder:
Buscando responder as perguntas, estão sendo utilizados os dados meteriologicos do INMET (Instituto Nacional de Meteorologia )do Brasil agrupados por semana, os dados foram filtrados por ano/mes e unidades de medida meteriologicas (umidade e temperatura), além de serem tranformados utilizando sumarização, especificamente, coeficientes de correlação. Os gráficos a seguir mostra a realção entre as temperturas da semana com a da semana anterior:
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()
)
)
clima = clima_tudo %>%
filter(ano <= 2019, ano >= 2010)
#glimpse(clima)
clima = clima %>%
mutate(temp_anterior = lag(temp_media, n = 1))
clima %>%
ggplot(aes(x = temp_media, y = temp_anterior))+
geom_point(size = 2, alpha = 0.4, color = "orange")+
labs(
x = "Temperatura média semanal",
y = "Temperatura média da semana anterior",
title = "Gráfico 1 - Correlação entre as temperaturas da semana com a semana anterior"
)
## Warning: Removed 6 rows containing missing values (geom_point).
Observando o Gráfico 1, vemos um formato concentrado linearmente indicando uma forte correlação entre a semana e a semana anterior. Mesmo que tenha alguns pontos fora da faixa de concentração, não há pontos extremamente distantes, o que reforça a intensidade da correlação. Devido a correlação ser claramente linear, optamos por calcular apenas o Coeficiente de Pearson, como mostra a Tabela 1 um valor pouco mais de 0.8 (positivo) para as três cidades, isto é, a temperatura da semana anterior pode indicar um aumento da temperatura na semana seguinte.
tabela_correlacao = clima %>%
filter(!is.na(temp_media), !is.na(temp_anterior)) %>%
group_by(cidade) %>%
summarise(
pearson = cor(temp_media, temp_anterior, method = "pearson"))
tabela_correlacao %>%
DT::datatable(caption = "Tabela 1 - Correlações da temperatura entre a semana e a semana anterior")
Para analisármos a correlação entre as semanas com chuvas mais intensas, o gráfico 2 apresenta uma distribuição da precipitação semanal durante o ano. Os dados estão concentrados em valores abaixo de 60mm e o período com mais chuvas é de fevereiro a julho. Exsitem alguns pontos extremos, em especial, um ponto chegou a 400mm, e para analise da correlação entre chuva e temperatura média, filtramos os dados para valores abaixo dos 60mm como mostra o gráfico 3.
clima %>%
filter(chuva > 0) %>%
ggplot(aes(x = mes, y = chuva))+
geom_point(size = 0.9, alpha = 0.4, color = "steelblue")+
labs(
title = "Gráfico 2 - distribuição da chuva por mês"
)
clima %>%
filter(chuva > 0, chuva <= 60) %>%
ggplot(aes(x = mes, y = chuva))+
geom_point(size = 0.9, alpha = 0.4, color = "steelblue")+
labs(
title = "Gráfico 3 - distribuição da chuva por mês abaixo dos 60mm"
)
Feita a análise dos meses mais chuvosos, vamos ver a correlação da chuva com a temperatura, esperamos que exista uma forte correlação negativa, isto é, quando mais chuva menos temperaturas registradas. A seguir, o gráfico de distribuição entre chuva e temperatura média semanal entre os meses de fevereiro e julho:
clima %>%
filter(!is.na(temp_media),chuva > 0, chuva <= 60, mes >=2, mes<=7) %>%
ggplot(aes(x = chuva, y = temp_media))+
geom_point(size = 2, alpha = 0.4, color = "steelblue")+
labs(
title = "Gráfico 4 - distribuição entre chuva e temperatura média"
)
O gráfico mostra que não existe uma correlação linearmente clara entre as duas varáveis e, para facilitar a visualização, os gráficos 5 e 6 mostram a correlação em escala logaritmica e por rank, respectivamente:
clima %>%
filter(!is.na(temp_media),chuva > 0, chuva <= 60, mes >=2, mes<=7) %>%
ggplot(aes(x = chuva, y = temp_media))+
geom_point(size = 2, alpha = 0.4, color = "steelblue")+
scale_x_log10()+
scale_y_log10()+
labs(
title = "Gráfico 5 - distribuição da chuva por mês em escala logaritmica"
)
clima = clima %>%
filter(!is.na(temp_media),chuva > 0, chuva <= 60, mes >=2, mes<=7) %>%
mutate(temp_rank = rank(temp_media), chuva_rank = rank(chuva))
clima %>%
ggplot(aes(x = chuva_rank, y = temp_rank))+
geom_point(size = 2, alpha = 0.4, color = "steelblue")+
labs(
title = "Gráfico 6 - distribuição da chuva por mês em rank"
)
tabela_correlacao = clima %>%
filter(!is.na(temp_media),chuva > 0, mes >=2, mes<=7) %>%
group_by(cidade) %>%
summarise(
pearson = cor(temp_media, chuva, method = "pearson"),
spearman = cor(temp_media, chuva, method = "spearman"),
kendall = cor(temp_media, chuva, method = "kendall")
)
Mesmo com as transformações dos dados para facilitar a visualização, ainda temos correlações não linerares, a tabela 2 mostra os coeficientes de Pearson, Spearman e Kendall, como esperado existe correlação negativa entre chuva e temperatura, porém, com intensidade baixa indicando uma correlação fraca entre variáveis, isto é, períodos como mais intensidade de chuva não causam, necessáriamente, baixas temperaturas.
tabela_correlacao %>%
DT::datatable(caption = "Tabela 2 - correlação entre chuva e temperatura média semanal")