Para a presente análise, será explorada a descrição de relações entre pares de variáveis numéricas.

library(tidyverse)
library(here)
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()
    )
)

clima = clima_tudo %>% 
    filter(ano == 2019)

clima %>% 
    slice(1:8)
## # A tibble: 8 x 11
##   cidade   semana     temp_max temp_media temp_min vento_medio vento_max umidade
##   <chr>    <date>        <dbl>      <dbl>    <dbl>       <dbl>     <dbl>   <dbl>
## 1 Campina… 2019-01-06     32.1       25.6     19.6        3.57       4.6    74.9
## 2 Campina… 2019-01-13     33.5       27.1     20          3.29       4.5    69  
## 3 Campina… 2019-01-20     33.3       26.7     19.6        4.01       6.5    72.5
## 4 Campina… 2019-01-27     32.4       26.4     19.6        3.53       5      75.0
## 5 Campina… 2019-02-03     32.2       25.3     19.5        2.95       4.8    83  
## 6 Campina… 2019-02-10     31.1       25.6     20.1        3.17       5      84.1
## 7 Campina… 2019-02-17     31.6       25.9     20.5        2.89       4.1    79.2
## 8 Campina… 2019-02-24     31.1       25.9     20.5        3.63       4.8    76.8
## # … with 3 more variables: chuva <dbl>, ano <int>, mes <int>

Relação entre a temperatura de uma semana e a temperatura da semana passada nas 3 cidades

Para garantir que não estamos lidando com dados faltantes, é importante garantir se há a presença destes no nosso dataset.

sum(is.na(clima_tudo$temp_media))
## [1] 70
sum(is.na(clima_tudo$chuva))
## [1] 0

Agora sabendo que temos 70 dados faltantes em relação à temperatura média e nenhum em relação à chuva, é válido descobrir de quais anos esses dados faltantes se tratam.

clima_tudo %>% 
  group_by(ano) %>% 
  filter(is.na(temp_media)) %>% 
  count(ano)
## # A tibble: 4 x 2
## # Groups:   ano [4]
##     ano     n
##   <int> <int>
## 1  2016     1
## 2  2017     2
## 3  2020    41
## 4  2021    26

Considerando que os dados faltantes se concentram nos anos de 2020 e 2021, estes não serão incluídos na nossa análise. 2016 e 2017 seguirão inclusos, pois a falta de dados não afeta consideravelmente a nossa análise.

clima_temp <- clima_tudo %>% 
    filter(ano <= 2019, ano >= 2010, !is.na(temp_media)) %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>% 
    filter(!is.na(temp_anterior))

Relação entre a temperatura de uma semana e da semana anterior

O que queremos entender nessa nova análise em relação aos climas das cidades de Campina Grande, João Pessoa e Patos é, inicialmente, a relação entre temperaturas de uma semana e a semana passada. Para tal, representamos essa relação através de um gráfico de dispersão.

clima_temp %>% 
  ggplot(aes(x = temp_media, y = temp_anterior)) +
  geom_point(color = "salmon", alpha = 0.7) +
  facet_wrap(~ cidade, ncol = 1) +
  labs(
    x = "Temperatura média (°C)",
    y = "Temperatura média da semana anterior(°C)"
  ) +
  geom_hline(yintercept = mean(clima_temp$temp_media), color = "gray") +
  geom_vline(xintercept = mean(clima_temp$temp_anterior), color = "gray")

É possível perceber visualmente que a associação entre as duas variáveis de temperatura nas 3 cidades se trata de um formato linear. Por isso, para entendermos mais sobre essa correlação, poderemos trabalhar com o coeficiente de correlação linear de Pearson.

clima_temp %>% 
  summarise(correlacao = cor(temp_media, temp_anterior, method = "pearson"))
## # A tibble: 1 x 1
##   correlacao
##        <dbl>
## 1      0.941

Através desse resultado, temos então uma correlação forte e positiva, dado seu valor de 0.94, muito próximo de 1. É interessante notar que temos somente alguns poucos pontos que fogem à tendência, sendo essas ocorrências mais perceptíveis na cidade de Campina Grande e um ponto mais extremo em Patos.

Relação entre a temperatura e chuvas nas semanas em que choveu

Agora a nossa intenção é a de estudar a relação, nas 3 cidades, entre a temperatura e as chuvas (nas semanas em que ocorreram). Também foi gerado um gráfico de dispersão para o pontapé inicial dessa análise.

clima_temp %>% 
  filter(chuva > 0) %>% 
  ggplot(aes(x = temp_media, y = chuva)) +
  geom_point(color = "steelblue", alpha = 0.7) +
  facet_wrap(~ cidade, ncol = 1) +
  labs(
    x = "Temperatura média (°C)",
    y = "Chuva (mm)" 
  )  +
  geom_hline(yintercept = mean(clima_temp$chuva), color = "gray") +
  geom_vline(xintercept = mean(clima_temp$temp_media), color = "gray")

Diante desse gráfico, vemos uma grande concentração de pontos nos valores muito próximos a 0 (zero), não sendo possível observar tão claramente uma relação linear. Tendo isso em vista, outros coeficientes de correlação serão considerados: os de Spearman e Kendall. Abaixo, o gráfico gerado com a escala de log para o eixo de chuva, para conseguirmos visualizar melhor esses pontos que se concentraram nos valores mais baixos.

clima_temp %>% 
  filter(chuva > 0) %>% 
  ggplot(aes(x = temp_media, y = chuva)) +
  geom_point(color = "steelblue", alpha = 0.7) +
  facet_wrap(~ cidade, ncol = 1) +
  labs(
    x = "Temperatura média (°C)",
    y = "Chuva (mm)" 
  )  +
  geom_hline(yintercept = mean(clima_temp$chuva), color = "gray") +
  geom_vline(xintercept = mean(clima_temp$temp_media), color = "gray") +
  scale_y_log10()

Pouco podemos inferir a partir dessa visualização, dado que não há um formato claro e nem mesmo pontos que fogem à tendência, dado que não existe uma tendência. O que podemos visualizar é que, nos casos de João Pessoa e Patos, a pouca ocorrência de chuvas se concentra em valores mais altos de temperatura (acima dos 25°C) em comparação à Campina Grande (abaixo dos 25°C).

clima_temp %>%
  filter(chuva > 0) %>%
  summarise(spearman = cor(temp_media, chuva, method = "spearman"), 
            kendall = cor(temp_media, chuva, method = "kendall"), )
## # A tibble: 1 x 2
##   spearman kendall
##      <dbl>   <dbl>
## 1  -0.0823 -0.0562

Agora, considerando os coeficientes de correlação de Spearman e Kendall, temos que a correlação é negativa e fraca, dado seus valores mais próximos de 0 que de -1.

Relação entre a chuva de uma semana e da semana anterior

Nessa seção bônus, buscamos fazer o mesmo tipo de análise da primeira seção, buscando estudar a relação entre uma semana e a semana anterior, mas dessa vez em relação às chuvas.

clima_temp <- clima_temp %>% 
    mutate(chuva_anterior = lag(chuva, n = 1)) %>% 
    filter(!is.na(chuva_anterior))
clima_temp %>%
  ggplot(aes(x = chuva, y = chuva_anterior)) +
  geom_point(color = "palevioletred2", alpha = 0.7) +
  facet_wrap(~ cidade, ncol = 1) +
  labs(
    x = "Chuva (mm)",
    y = "Chuva da semana anterior (mm)"
  ) +
  geom_hline(yintercept = mean(clima_temp$chuva), color = "gray") +
  geom_vline(xintercept = mean(clima_temp$chuva_anterior), color = "gray")

Lembrando que, por estarmos lidando com os baixos valores de chuvas, os pontos se concentram muito próximos de 0 (zero) e, por isso, será gerado o gráfico em escala de log para os eixos X e Y. Visualmente temos um formato não-linear, logo os coeficientes trabalhados serão os de Spearman e Kendall.

clima_temp %>%
  ggplot(aes(x = chuva, y = chuva_anterior)) +
  geom_point(color = "palevioletred2", alpha = 0.7) +
  facet_wrap(~ cidade, ncol = 1) +
  labs(
    x = "Chuva (mm)",
    y = "Chuva da semana anterior (mm)"
  ) +
  scale_x_log10() +
  scale_y_log10() +
  geom_hline(yintercept = mean(clima_temp$chuva), color = "gray") +
  geom_vline(xintercept = mean(clima_temp$chuva_anterior), color = "gray")
## Warning: Transformation introduced infinite values in continuous x-axis
## Warning: Transformation introduced infinite values in continuous y-axis

Nesse novo gráfico, temos mais uma vez a certeza de não estarmos lidando com um formato linear. Não temos pontos extremos, considerando o quanto eles estão espalhados. É interessante perceber que, enquanto na primeira seção observamos uma forte correlação entre as temperaturas da semana e da semana anterior, em relação à chuva já não temos o mesmo tipo de observação.

clima_temp %>% 
  summarise(spearman = cor(chuva, chuva_anterior, method = "spearman"), 
            kendall = cor(chuva, chuva_anterior, method = "kendall"), )
## # A tibble: 1 x 2
##   spearman kendall
##      <dbl>   <dbl>
## 1    0.561   0.411

Diante dos resultados dos coeficientes de Spearman e Kendall, temos uma correlação positiva e fraca, dado que seus valores estão mais próximos de 0 (zero) do que de 1.