library(tidyverse)
library(here)
library(knitr)
theme_set(theme_bw())
# SEMPRE read_csv NUNCA read.csv
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()
    )
)

Há correlação entre a temperatura de uma semana e da semana anterior em João Pessoa, Campina Grande e Patos?

Para essa análise, descartei cerca de 70 observações que não possuiam a temperatura média, a maioria dos dados filtrados foram de Patos nos anos de 2020 e 2021.

Utilizando os dados de uma semana e da semana passada podemos ver que, nas três cidades, as temperaturas tem uma forte correlação positiva e linear, com o coeficiente de correlação de Pearson acima de 0,8.

temp_semanas <- clima_tudo %>%
    filter(!is.na(temp_media), ano > 2009) %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>%
    mutate(temp_8 = lag(temp_media, n = 8)) %>% 
    mutate(temp_52 = lag(temp_media, n = 52))
  
# glimpse(temp_semanas)
temp_semanas %>%
    filter(!is.na(temp_anterior)) %>% 
    ggplot(aes(x = temp_media, y = temp_anterior, color = cidade)) +
    geom_point(alpha = .6) +
    facet_wrap( ~ cidade) +
    labs(
        x = "Temperatura da semana (ºC)",
        y = "Temperatura da semana anterior (ºC)",
        title = "Distribuição das temperaturas médias com relação à semana anterior",
        subtitle = "Dados de 2010 a 2021"
    )

Aumentando a distância entre as semanas

O resultado obtido está de acordo com a expectativa que eu tinha inicialmente, pensei: como as semanas são próximas, não deve haver mudanças bruscas de temperatura. Mas o que acontece se aumentarmos a distância entre as semanas?

Abaixo temos os gráficos de dispersão para uma distância de 8 semanas (~2 meses) e de 52 semanas (1 ano). É possível notar uma correlação mais forte na distância de um ano.

temp_semanas %>%
    filter(!is.na(temp_8)) %>% 
    ggplot() +
    geom_point(aes(x = temp_media, y = temp_8, color = cidade), alpha = .6) +
    facet_wrap( ~ cidade) +
    labs(
        x = "Temperatura da semana (ºC)",
        y = "Temperatura da 8ª semana anterior (ºC)",
        title = "Distribuição das temperaturas médias com relação à 8ª semana anterior",
        subtitle = "Dados de 2010 a 2021"
    )

temp_semanas %>%
    filter(!is.na(temp_52)) %>% 
    ggplot(aes(x = temp_media, y = temp_52, color = cidade)) +
    geom_point(alpha = .6) +
    facet_wrap( ~ cidade) +
    labs(
        x = "Temperatura da semana (ºC)",
        y = "Temperatura da 52ª semana anterior (ºC)",
        title = "Distribuição das temperaturas médias com relação à 52ª semana anterior",
        subtitle = "Dados de 2011 a 2021"
    )

Tabela de correlação das temperaturas com as temperaturas das semanas anteriores:

temp_semanas %>% 
  group_by(cidade) %>% 
  summarise(
    `1ª semana` = format(round(cor(temp_media, temp_anterior, method ="pearson", use="complete.obs"), 2), nsmall = 2),
    `8ª semana` = format(round(cor(temp_media, temp_8, method ="pearson", use="complete.obs"), 2), nsmall = 2),
    `52ª semana` = format(round(cor(temp_media, temp_52, method ="pearson", use="complete.obs"), 2), nsmall = 2),
  .groups = "drop") %>%
  rename(Cidade = cidade) %>% 
  kable
Cidade 1ª semana 8ª semana 52ª semana
Campina Grande 0.86 0.38 0.70
João Pessoa 0.82 0.33 0.49
Patos 0.82 0.33 0.55
# temp_semanas %>% 
#   filter(is.na(temp_media))

E quanto as chuvas? Qual a correlação entre as chuvas em uma semana e na semana anterior?

Olhando apenas para as semanas com chuva, e aplicando a escala logaritmica em ambos o eixos, podemos ver que há indícios de correlação positiva.

chuva_semanas <- clima_tudo %>%
    filter(!is.na(chuva), ano > 2009) %>% 
    mutate(chuva_anterior = lag(chuva, n = 1))
  
# glimpse(temp_semanas)
chuva_semanas %>%
    filter(!is.na(chuva_anterior), chuva > 0, chuva_anterior > 0) %>% 
    ggplot(aes(x = chuva, y = chuva_anterior, color = cidade)) +
    geom_point(alpha = .6) +
    facet_wrap( ~ cidade) +
    scale_x_log10() +
  scale_y_log10() +
    labs(
        x = "Chuva na semana (mm)",
        y = "Chuva na semana anterior (mm)",
        title = "Distribuição das chuvas com relação à semana anterior",
        subtitle = "Dados de 2010 a 2021"
    )

chuva_semanas %>%
  group_by(cidade) %>% 
  summarise(
      `Coeficiente de Spearman` = cor(chuva, chuva_anterior, method = "spearman", use="complete.obs"),
  ) %>% 
  rename(Cidade = cidade) %>% 
  kable()
Cidade Coeficiente de Spearman
Campina Grande 0.3941505
João Pessoa 0.4938268
Patos 0.5467986

Há correlação entre temperatura e chuvas?

Durante as semanas em que há chuva, há uma correlação moderada e não linear nas cidades de Campina Grande e João Pessoa. Aplicando a escala logaritmica no eixo da chuva, é possível perceber indícios de correlação negativa.

Em Patos, podemos observar que os pontos estão mais espalhados, com ocorrências da mesma quantidade de chuva em temperaturas variadas. Isso explica o coeficiente de Spearman em torno de -0.1.

chuva_temp <-
    clima_tudo %>% 
    filter(chuva > 1, !is.na(temp_media), !is.na(chuva), ano > 2009)
chuva_temp %>%
    ggplot(aes(y = temp_media, x = chuva, color = cidade)) +
    geom_point(alpha = .6) +
    facet_wrap(~cidade) +
    scale_x_log10() +
    labs(
        x = "Chuva (mm)",
        y = "Temperatura (ºC)",
        title = "Distribuição das temperaturas médias com relação à chuva",
        subtitle = "Dados de 2010 a 2021"
    )

chuva_temp %>%
  group_by(cidade) %>% 
  summarise(
      `Coeficiente de Spearman` = cor(temp_media, chuva, method = "spearman", use="complete.obs"),
  ) %>% 
  rename(Cidade = cidade) %>% 
  kable()
Cidade Coeficiente de Spearman
Campina Grande -0.3504497
João Pessoa -0.4011225
Patos -0.0906652