library(dplyr)
library(DT)
library(ggplot2)
library(here)
library(hrbrthemes)
library(readr)
library(scales)

theme_set(theme_ipsum_tw())

dados_clima <- 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()))

dados_clima <- dados_clima %>%
  group_by(cidade) %>%
  mutate(temp_anterior = lag(temp_media, n = 1, order_by = cidade)) 

Sobre a análise

Essa análise foi produzida como exercício da disciplina de Fundamentos de Pesquisa em Ciência da Computação (FPCC2) do Programa de Pós-Graduação em Ciência da Computação (PPGCC) da Universidade Federal de Campina Grande (UFCG). O conjunto de dados utilizado foi produzido a partir de dados disponibilizados pelo Instituto Nacional de Metereologia e contém variáveis relacionadas à temperatura, umidade e vento nas cidades de Campina Grande (PB), João Pessoa (PB) e Patos (PB).

Correlação da temperatura média entre semanas subsequentes

Com o objetivo de descrever a relação entre as temperaturas médias de semanas subsequentes em Campina Grande, João Pessoa e Patos, investigaremos a distribuição dos valores dessas medidas, bem como o coeficiente de correlação de Pearson para cada um desses 3 municípios.

dados_clima %>%
  na.omit(temp_media, temp_anterior) %>% 
  ggplot(aes(x = temp_media, y = temp_anterior, color = cidade)) +
  geom_point(size = 0.75, alpha = 0.15, show.legend = FALSE) +
  facet_wrap(~cidade) +
  labs(x = 'Temperatura Média (ºC)', y = 'Temp. Média Anterior (ºC)') +
  scale_x_continuous(breaks = pretty_breaks(n = 5)) +
  scale_y_continuous(breaks = pretty_breaks(n = 5)) +
  scale_color_manual(values = c('#ffb20f', '#ff4b3e', '#972d07')) +
  theme(axis.title.x = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = -2, hjust = 0.5, size = 14),
        axis.title.y = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = 3, hjust = 0.5, size = 14),
        axis.text.x = element_text(family = 'Times New Roman', size = 12),
        axis.text.y = element_text(family = 'Times New Roman', size = 12),
        strip.text = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = 2, hjust = 0.5, size = 14))

dados_clima %>% 
  na.omit(temp_media, temp_anterior) %>% 
  group_by(cidade) %>%
  summarise(corr_pearson = cor(temp_media, temp_anterior, method = 'pearson')) %>%
  mutate(`Cidade` = cidade, `Coeficiente de Correlação (Pearson)` = round(corr_pearson, 3)) %>%
  select(`Cidade`, `Coeficiente de Correlação (Pearson)`) %>%
  datatable()

Conforme apresentado na visualização, é notável a existência de uma relação linear, positiva e forte entre as temperaturas médias de semanas subsequentes em todos os 3 municípios avaliados. Além disso, não existem valores extremos suficientemente notáveis nos dados que prejudiquem essa relação ou a capacidade do observador de percebê-la. Comparando as cidades individualmente, a correlação entre as variáveis parece ser mais forte em Campina Grande e mais fraca em Patos, ainda que essa diferença seja bem pequena. Tratando-se de uma relação linear, essa impressão foi confirmada através do coeficiente de correlação de Pearson, cujos valores foram de 0,86, 0,83 e 0,82 para Campina Grande, João Pessoa e Patos, nessa ordem.

Correlação entre temperatura média e pluviosidade

De forma análoga, com o objetivo de descrever a relação entre a temperaturas médias e a pluviosidade em Campina Grande, João Pessoa e Patos, investigaremos a distribuição dos valores dessas medidas, bem como os coeficientes de correlação de Pearson, Spearman e Kendall para cada um desses 3 municípios. Serão consideradas, para cada cidade, apenas as semanas em que houve registro de chuva nos dados.

dados_clima %>%
  na.omit(temp_media, chuva) %>% 
  filter(chuva > 0) %>%
  ggplot(aes(x = chuva, y =  temp_media, color = cidade)) +
  geom_point(size = 0.75, alpha = 0.25, show.legend = FALSE) +
  facet_wrap(~cidade, ncol = 2) +
  labs(x = 'Pluviosidade (mm) (log10)', y = 'Temperatura Média (ºC) (log10)') +
  scale_x_log10() +
  scale_y_log10() +
  scale_color_manual(values = c('#ffb20f', '#ff4b3e', '#972d07')) +
  theme(axis.title.x = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = -2, hjust = 0.5, size = 14),
        axis.title.y = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = 3, hjust = 0.5, size = 14),
        axis.text.x = element_text(family = 'Times New Roman', size = 12),
        axis.text.y = element_text(family = 'Times New Roman', size = 12),
        strip.text = element_text(family = 'Times New Roman', face = 'bold',
                                    vjust = 2, hjust = 0.5, size = 14))

dados_clima %>% 
  na.omit(temp_media, chuva) %>% 
  filter(chuva > 0) %>%
  group_by(cidade) %>%
  summarise(corr_pearson = cor(log10(temp_media), log10(chuva), method = 'pearson'),
            corr_spearman = cor(log10(temp_media), log10(chuva), method = 'spearman'),
            corr_kendall = cor(log10(temp_media), log10(chuva), method = 'kendall')) %>%
  mutate(`Cidade` = cidade,
         `Coeficiente de Correlação (Pearson)` = round(corr_pearson, 3),
         `Coeficiente de Correlação (Spearman)` = round(corr_spearman, 3),
         `Coeficiente de Correlação (Kendall)` = round(corr_kendall, 3)) %>%
  select(`Cidade`, `Coeficiente de Correlação (Pearson)`,
         `Coeficiente de Correlação (Spearman)`, `Coeficiente de Correlação (Kendall)`) %>%
  datatable()

Inicialmente, não foi possível observar nenhuma relação entre a temperatura média e os níveis de pluviosidade das 3 cidades. Por isso, se fez necessário modificar ambas as variáveis e experimentar a aplicação de transformações não-lineares sobre elas. Adotando a escala de logaritmo de base 10, encontrou-se uma relação negativa entre a temperatura média e o nível de pluviosidade, ainda que essa relação seja fraca. Existem alguns poucos pontos extremos nas distribuições, até mesmo após a transformação não-linear, mas seus impactos são provavelmente mitigados pela quantidade de dados disponível. Comparando as cidades individualmente, Campina Grande e João Pessoa se assemelham bastante, mas fica claro que a relação entre as variáveis quase inexiste em Patos (mesmo com a base logarítmica).

A partir dos coeficientes de correlação de Pearson, Spearman e Kendall (cujos valores estão apresentados acima), foi possível confirmar a semelhança entre João Pessoa e Campina Grande quanto à relação negativa e fraca das variáveis de interesse em base logarítmica, com valores próximos a -0,43 (Pearson e Spearman) e e -0,29 (Kendall). Já para Patos, a concordância sobre a quase inexistência da relação entre essas variáveis foi ainda mais óbvia, visto que os três coeficientes apresentaram valores muito próximos a 0.