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")