climas = read_csv(here::here("data/clima_cg_jp-semanal.csv"), 
                  col_types = "cTdddddd")

glimpse(climas)
## Rows: 2,748
## Columns: 8
## $ cidade <chr> "Campina Grande", "Campina Grande", "Campina Grande", "Campina…
## $ semana <dttm> 1992-12-27, 1993-01-03, 1993-01-10, 1993-01-31, 1993-02-07, 1…
## $ tmedia <dbl> 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26.28571, 26…
## $ tmax   <dbl> 30.4, 32.4, 32.2, 32.0, 32.7, 32.7, 32.3, 32.3, 32.1, 31.2, 32…
## $ tmin   <dbl> 20.7, 19.3, 19.7, 19.9, 19.6, 20.0, 20.4, 21.2, 19.0, 19.0, 19…
## $ chuva  <dbl> 0.0, 0.0, 0.0, 0.4, 0.3, 0.0, 4.9, 0.0, 0.0, 6.1, 0.4, 1.2, 0.…
## $ mes    <dbl> 12, 1, 1, 1, 2, 2, 2, 2, 10, 11, 11, 11, 11, 12, 12, 12, 12, 1…
## $ ano    <dbl> 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 19…

Perguntas:

1 - Quanto chove por semana em JP e CG? Como é a distribuição do volume de chuvas por semana em JP e CG? A chuva varia mais ou menos que a temperatura? O formato da distribuição é igual?

Analisando quanto chove por semana em JP e CG:

climas %>% 
    group_by(cidade) %>% 
    summarise(media = mean(chuva))
## # A tibble: 2 x 2
##   cidade         media
##   <chr>          <dbl>
## 1 Campina Grande  14.0
## 2 João Pessoa     32.6

Vemos ao cacular a média de chuvas por semana para cada uma das cidades que em João Pessoa, em média, chove mais do que em Campina Grande. Entretanto, essa estatística não nos mostra como essas chuvas estão distribuídas e pode ser interessante entender esse aspecto.

p1 <- climas %>% 
    ggplot(aes(x = chuva, fill = cidade)) +
    facet_grid(rows = vars(cidade)) +
    geom_histogram(binwidth = 10) +
    labs(y = "Frequência", x = "Volume de chuva (em mm)", title = "Distribuição do volume de chuvas por cidade", fill = "Cidade") +
    theme(plot.title = element_text(hjust = 0.5))

p2 <- climas %>% 
    ggplot(aes(x = tmedia, fill = cidade)) +
    facet_grid(rows = vars(cidade)) +
    geom_histogram(bins = 20) +
    labs(y = "Frequência", x = "Temperatura média (em °C)", title = "Distribuição da temperatura média por cidade", fill = "Cidade") +
    theme(plot.title = element_text(hjust = 0.5))

grid.arrange(p1, p2)

É possível ver que a distribuição das chuvas, nas duas cidades, possui valores muito concentrados no intervalo de 0 a 20 mílimetros de chuva, portanto a distribuição é assimétrica. Para a temperatura média, vemos que a distribuição é mais simétrica, é diferente do formato da distribuição das chuvas. Dessa forma, podemos dizer que as chuvas possuem uma maior variação em relação temperatura.

climas %>% 
    group_by(cidade) %>% 
    summarise(variacao_chuva = sd(chuva), variacao_temperatura_media = sd(tmedia))
## # A tibble: 2 x 3
##   cidade         variacao_chuva variacao_temperatura_media
##   <chr>                   <dbl>                      <dbl>
## 1 Campina Grande           21.7                       1.53
## 2 João Pessoa              44.5                       1.18

Para confirmar o que foi visto anteriormente, considerou-se o desvio padrão como medida de variação e vemos que tanto em Campina Grande como em João Pessoa a chuva varia mais do que a temperatura média.

2 - Qual a correlação entre a temperatura e a chuva para cada uma das cidades?

Analisando primeiro a correlação entre o volume de chuvas na semana e a temperatura em João Pessoa.

jp <- climas %>% filter(cidade == 'João Pessoa') %>% select(tmedia,tmax,tmin,chuva)

jp %>% ggpairs(progress = F)

Podemos ver na imagem acima que a variávei que possui a maior correlação com a chuva é a tmedia(temperatura média), apresentando uma valor de -0.441, utilizando o coeficiente de Pearson. Então veremos como se da assoaciação dos dados entre a chuva e a tmedia em João Pessoa.

jp %>%
    ggplot(aes(x = tmedia, y = chuva)) + 
    geom_point(colour = "darkgray", size = 1) +
    labs(y = "Volume de chuva (em mm)", x = "Temperatura média (em °C)", title = "Relação entre chuva e temperatura média em João Pessoa")

jp %>%
    ggplot(aes(x = tmedia, y = chuva)) + 
    geom_point(colour = "darkgray", size = 1) +
    scale_y_log10()+
    labs(y = "Volume de chuva (em mm)", x = "Temperatura média (em °C)", title = "Relação entre chuva e temperatura média em João Pessoa")
## Warning: Transformation introduced infinite values in continuous y-axis

Podemos ver no primeiro gráfico que parece existir uma relação negativa e moderada, entre a chuva e a temperatura média. Porém, como o valor da quantidade de chuva cresce bem mais que o da temperatura, foi realizado outra análise utilizando uma escala de logarítmica para a variável chuva no segundo gráfico. Analisando a segunda visualização podemos ver com mais clareza que parece existir uma relação negativa entre as variáveis, ou seja, quanto maior a temperatura média, menor o volume de chuva na semana.

Realizando a mesma análise para a cidade de Campina Grande.

cg <- climas %>% filter(cidade == 'Campina Grande') %>% select(tmedia,tmax,tmin,chuva)

cg %>% ggpairs(progress = F)

Podemos perceber que a variável que possui a maior correlação com a chuva é tmedia(temperatura média), com um valor de -0.39, um pouco mais fraca que a de João Pessoa.

cg %>%
    ggplot(aes(x = tmedia, y = chuva)) + 
    geom_point(colour = "darkgray", size = 1) +
    labs(y = "Volume de chuva (em mm)", x = "Temperatura média (em °C)", title = "Relação entre chuva e temperatura média em Campina Grande")

cg %>%
    ggplot(aes(x = tmedia, y = chuva)) + 
    geom_point(colour = "darkgray", size = 1) +
    scale_y_log10() +
    labs(y = "Volume de chuva (em mm)", x = "Temperatura média (em °C)", title = "Relação entre chuva e temperatura média em Campina Grande")
## Warning: Transformation introduced infinite values in continuous y-axis

Semelhante a análise realizada com a cidade de João Pessoa podemos perceber no primeiro gráfico que parece existir uma relação negativa e moderada, entre as variáveis. Utilizando a escala logarítmica para o volume de chuvas, é possível perceber na segunda visualização, com mais clareza, que parece existir uma relação negativa entre as variáveis, ou seja, quanto maior a temperatura média, menor o volume de chuva na semana.

Analisando a mesma relação entre a chuva e a temperatura média, porém agora de um ponto de vista mais estatístico e não visual. Vamos calcular o valor da correlação entre elas utilizando dois métodos: o de Pearson e o de Spearman.

climas %>% group_by(cidade) %>%
  summarise(correlacao = cor(tmedia, chuva, method = "pearson"))
## # A tibble: 2 x 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande     -0.396
## 2 João Pessoa        -0.441
climas %>% group_by(cidade) %>%
  summarise(correlacao = cor(tmedia, chuva, method = "spearman"))
## # A tibble: 2 x 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande     -0.541
## 2 João Pessoa        -0.484

A justificativa para utilização do método de Spearman é que ele é mais robusto e resistente à outliers que possam existir nos nossos dados e se adequa melhor à relações não lineares e com valores extremos, que é o caso desses dados. Como podemos perceber nos valores acima, ambos mostraram que existe uma relação negativa e moderada entre a chuva e a temperatura média, porém o método de Spearman teve um valor maior, justamente por ser o método mais adequado para o conjunto de dados analisados. Por fim, podemos ver que existe uma relação negativa e moderada entre a temperatura média e o volume de chuvas, nas duas cidades.

3 - Para o ano mais frio de cada cidade, como foi a distribuição de chuvas?

Para responder essa pergunta, temos que primeiro entender qual ano foi mais frio, em cada uma das cidades, e depois analisar a distribuição das chuvas nelas. Primeiramente, para definir qual é o ano mais frio, podemos seguir por duas abordagens: escolher mais frio com base na média das temperaturas ou na mediana das temperaturas - e neste caso temperatura é definida pela variável tmedia. Entretanto, a opção de definir o ano mais frio por meio da média das temperaturas pode ser problemática, pois essa estatística é muito suscetível a valores outliers e pode ser pouco representativa quando possui muita variação em seus dados. Nesse caso, será feita a escolha pela mediana, pois é mais robusta e forcene uma descreve melhor dos dados para essa situa, já que é um valor que divide o conjunto dos dados e, por isso, é menos sensível a outliers.

climas %>% 
  group_by(cidade, ano) %>% 
  summarise(median = median(tmedia)) %>% 
  slice(which.min(median)) -> mais_frio

climas %>% 
  ggplot(aes(x = as.factor(ano), y = tmedia)) +
  geom_boxplot() +
  geom_boxplot(data = mais_frio, aes(x = as.factor(ano), y = median, colour = "red")) +
  facet_grid(rows = vars(cidade)) +
  labs(title = "Comparação de temperatura dos anos por cidade", x = "Ano", y = "Temperatura") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5), legend.position = "none")

Pela visualização acima, é possível observar que a variação de temperatura em João Pessoa foi menor, visto que a diferença de range entre o 1º quartil e 3º quartil (tamanho da caixa) é menor entre cada boxplot consecutivo - logo elas não estão tão dispersas quanto as temperaturas de Campina Grande. Além disso, podemos responder ao questionamento inicial e indicar os anos mais frios em cada cidade. Campina teve 2018 como ano mais frio, com cerca de 25°C e em João Pessoa, esse ano foi 1991 - com uma temperatura próxima de 27,5°C. Isso está indicado pela marcação em vermelho na caixa do ano mais frio, para cada cidade.
A partir disso, precisamos entender como se deu a distribuição das chuvas em cada cidade para esses anos.

climas %>% 
  filter(cidade == "Campina Grande", ano == 2018) %>% 
  ggplot(aes(x = cidade, y = chuva)) +
  geom_boxplot(width = 0.1, outlier.shape = NA) +
  geom_quasirandom() +
  labs(title = "Distribuição das chuvas em Campina Grande no ano de 2018", y = "Volume de chuva") +
  theme(plot.title = element_text(hjust = 0.5), axis.title.x = element_blank()) -> p1

climas %>% 
  filter(cidade == "João Pessoa", ano == 1991) %>% 
  ggplot(aes(x = cidade, y = chuva)) +
  geom_boxplot(width = 0.1, outlier.shape = NA) +
  geom_quasirandom() +
  labs(title = "Distribuição das chuvas em João Pessoa no ano de 1991", y = "Volume de chuva") +
  theme(plot.title = element_text(hjust = 0.5), axis.title.x = element_blank()) -> p2

grid.arrange(p1, p2, ncol = 2)

Verifica-se que para Campina Grande, a chuva no ano mais frio (2018) esteve muito concentrada em valores próximos de 0, indicado pela mediana próxima a esse valor. Isso pode indicar que, ao longo desse ano, a chuva foi pouco frequente. Em constraste a isso, João Pessoa teve uma quantidade maior de chuva, choveram em quase todas as semanas, no seu ano mais frio, em oposição a outra cidade. Diante disso, não é possível verificar uma relação clara entre frio/baixas temperaturas com o volume de chuvas.