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, 19…
## $ 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.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, 199…

Calcular a temperatura da semana anterior em cada linha

climas = climas %>% 
  mutate(temp_anterior = lag(tmedia, n = 1)) 

Q1: Qual a cidade é mais quente? Isso muda se considerarmos apenas o período de janeiro e fevereiro (pico do verão)?

comp_cidades <- climas %>%
  group_by(cidade) %>%
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
comp_cidades
## # A tibble: 2 × 2
##   cidade         tmedia
##   <chr>           <dbl>
## 1 Campina Grande   24.7
## 2 João Pessoa      27.7

Tirando a média das médias a Cidade mais quente, no geral, é João Pessoa com 27.65 Cº em comparação com Campina Grande que aponta 24.69 Cº como média da média da temperatura.

verao <- climas %>%
  filter(mes %in% c(1,2)) %>%
  group_by(cidade) %>%
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
verao
## # A tibble: 2 × 2
##   cidade         tmedia
##   <chr>           <dbl>
## 1 Campina Grande   25.9
## 2 João Pessoa      28.7

No período do verão, Janeiro e Fevereiro, João Pessoa e Campina Grande se demonstram mais quentes (esperado pelo período de verão), com 28.65 Cº e 25.86 Cº respectivamente.

hi <- climas %>%
  select(cidade, tmedia, mes) %>%
  group_by(cidade, mes) %>%
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
ggplot(hi, aes(x = mes, y = tmedia, color=cidade)) +
  geom_line() +
  geom_point() +
  geom_text(aes(label = round(tmedia, 1)), vjust = 1.8, size = 3, position = position_dodge(0.9)) +
  scale_x_continuous(breaks = 1:12) +
  labs(title = "Temperatura Média Mensal", x = "Mês", y = "Temperatura (°C)")

Em média, João Pessoa se demonstra mais quente que Campina Grande, inclusive no verão. A medida de média pode ser apropriada pela baixa probabilidade de grandes outliers, tendo em vista que seria improvável que Campina Grande salte para 50 Cº ou que João Pessoa desça para -5 Cº. O gráfico também mostra que a menor temperatura é 22.3 Cº para Campina Grande, que não é distante do máximo de 25.9 Cº, o mesmo é visto para João Pessoa, com 25.9 Cº e 28.8 Cº como mínimo e máximo respectivamente.

Q2: Quais os meses mais quentes e mais frios? Como você descreveria a temperatura das festas juninas das cidades nos últimos anos?

Ao longo dos anos, para ambas as cidades, o período de médias mais quente vai do mês 11 (Novembro) até o mês 3 (Março). Os mais frios estão entre os meses 6 e 8 (Junho a Agosto) para ambas as cidades.

juninas <- climas %>%
  filter(mes==6) %>%
  select(cidade, tmedia, ano) %>%
  #filter(ano >= 2008) %>%
  group_by(cidade, ano) %>%
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
ggplot(juninas, aes(x = ano, y = tmedia, color=cidade)) +
  geom_line() +
  geom_point() +
  scale_x_continuous(breaks = seq(min(juninas$ano), max(juninas$ano), by = 2)) +
  geom_text(aes(label = round(tmedia, 1)), vjust = 1.8, size = 3, position = position_dodge(0.9)) +
  labs(title = "Temperatura Média Mensal", x = "Ano", y = "Temperatura (°C)")

Nos últimos anos, Campina Grande tem sido consistentemente mais fria do que João Pessoa, tendo sua menor temperatura em 2004, com 22.1 Cº. Ademais, o maior pico de temperatura em Campina Grande ainda é inferior a menor temperatura de Junho em João Pessoa. Campina Grande possui mais oscilações, enquanto João Pessoa manteve uma tendência crescente entre 2011 a 2016.

Q3: Quanto chove por semana em JP e CG? Descreva a distribuição do volume de chuvas para as cidades?

chuva_semanal = climas %>% 
  group_by(cidade, semana) %>% 
  summarise(chuva_total = sum(chuva, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
chuva_semanal
## # A tibble: 2,748 × 3
## # Groups:   cidade [2]
##    cidade         semana              chuva_total
##    <chr>          <dttm>                    <dbl>
##  1 Campina Grande 1992-12-27 00:00:00         0  
##  2 Campina Grande 1993-01-03 00:00:00         0  
##  3 Campina Grande 1993-01-10 00:00:00         0  
##  4 Campina Grande 1993-01-31 00:00:00         0.4
##  5 Campina Grande 1993-02-07 00:00:00         0.3
##  6 Campina Grande 1993-02-14 00:00:00         0  
##  7 Campina Grande 1993-02-21 00:00:00         4.9
##  8 Campina Grande 1993-02-28 00:00:00         0  
##  9 Campina Grande 1993-10-31 00:00:00         0  
## 10 Campina Grande 1993-11-07 00:00:00         6.1
## # ℹ 2,738 more rows
chuva_semanal_stats <- chuva_semanal %>% 
  group_by(cidade) %>% 
  summarise(
    media = mean(chuva_total, na.rm = TRUE),
    mediana = median(chuva_total, na.rm = TRUE),
    desvio_padrao = sd(chuva_total, na.rm = TRUE),
    variancia = var(chuva_total, na.rm = TRUE)
  )
chuva_semanal_stats
## # A tibble: 2 × 5
##   cidade         media mediana desvio_padrao variancia
##   <chr>          <dbl>   <dbl>         <dbl>     <dbl>
## 1 Campina Grande  14.0     4.9          21.7      469.
## 2 João Pessoa     32.6    14.1          44.5     1978.

Em média, chove 14mm por semana em Campina Grande, enquanto chove 32.65mm em João Pessoa.

outlier_max <- chuva_semanal %>% filter(chuva_total == max(chuva_total))
ggplot(chuva_semanal, aes(x = semana, y = chuva_total, color=cidade)) +
  geom_boxplot() +
  scale_y_continuous(breaks = seq(min(chuva_semanal$chuva_total), max(chuva_semanal$chuva_total), by = 50)) +
  labs(title = "Distribuição da chuva semanal", x = "Semana", y = "Quantidade (mm)")

outlier_max <- chuva_semanal %>% filter(chuva_total == max(chuva_total))
ggplot(chuva_semanal, aes(x = semana, y = chuva_total, color=cidade)) +
  geom_point() +
  scale_y_continuous(breaks = seq(min(chuva_semanal$chuva_total), max(chuva_semanal$chuva_total), by = 50)) +
  labs(title = "Distribuição da chuva semanal", x = "Semana", y = "Quantidade (mm)")

João Pessoa possui dados de chuva mais dispersos, dando a ideia de que as chuvas ocorrem em intensidades extremamente variadas (maior variância e desvio padrão). O boxplot sugere que João Pessoa possui mais dados no segundo quartil, pois a caixa abaixo dos \(50%\) dos dados é expressivamente menor do que a caixa do terceiro quartil, dando a entender que acima da mediana, os valores são mais dispersos, tal comportamento é visto para ambas as cidades. Campina possui menos registros de chuva e seu máximo não supera a faixa de 200mm, valor superado em várias ocasiões em João Pessoa.

Q4: Qual a relação entre a temperatura de uma semana e a temperatura da semana anterior (descreva para as duas cidades)?

climas %>%
  group_by(cidade) %>%
  summarise(corr = cor(tmedia, temp_anterior, method="pearson", use = "pairwise.complete.obs"))
## # A tibble: 2 × 2
##   cidade          corr
##   <chr>          <dbl>
## 1 Campina Grande 0.880
## 2 João Pessoa    0.859

Há indícios de uma correlação positiva e forte para a argumentação de que quando a temperatura da semana x é semelhante à temperatura da semana x-1.

temp_relacao <- climas %>% 
  ggplot(aes(x = temp_anterior, y = tmedia)) +
  geom_point() +
  geom_smooth(method = "lm") +
  facet_wrap(~cidade) +
  labs(title = "Relação entre a temperatura de uma semana e a semana anterior",
       x = "Temperatura da semana anterior (°C)",
       y = "Temperatura média da semana atual (°C)")

temp_relacao
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

João Pessoa apresenta dados mais dispersos, apesar do cálculo de correlação apontar fortes indícios da temperatura de semanas seguidas serem dependentes. Para Campina Grande os dados são estão mais concentrados na linha de correlação, o que corrobora com o cálculo do método de pearson visto anteriormente.

Q5: Qual a relação entre temperatura e chuvas nas semanas em que choveu (descreva para as duas cidades)?

yep <- climas %>%
  filter(chuva > 0) %>%
  select(cidade, chuva, tmedia)

temp_relacao <- yep %>% 
  ggplot(aes(x = tmedia, y = chuva)) +
  geom_point() +
  geom_smooth(method = "lm") +
  facet_wrap(~cidade) +
  labs(title = "Relação entre a temperatura e chuva",
       x = "Temperatura média da semana atual (°C)",
       y = "Chuva na semana (mm)")

temp_relacao
## `geom_smooth()` using formula = 'y ~ x'

yep %>%
  group_by(cidade) %>%
  summarise(corr_p = cor(tmedia, chuva, method="pearson", use = "pairwise.complete.obs"),
            corr_s = cor(tmedia, chuva, method="spearman", use = "pairwise.complete.obs"),
            corr_k = cor(tmedia, chuva, method="kendall", use = "pairwise.complete.obs"))
## # A tibble: 2 × 4
##   cidade         corr_p corr_s corr_k
##   <chr>           <dbl>  <dbl>  <dbl>
## 1 Campina Grande -0.335 -0.448 -0.305
## 2 João Pessoa    -0.424 -0.459 -0.310

Tanto João Pessoa como Campina Grande apresentam correlação fraca e negativa para a comparação entre chuva e temperatura média, podendo extrair a ideia de que a temperatura média do dia não diminui ou aumenta somente por conta da presença ou falta de chuva. Os gráficos demonstram esse comportamento ao revelar que a maior parte dos pontos não transladam em torno da linha de correlção. Apesar de no gráfico João Pessoa possuir a dispersão mais aparente, Campina Grande consistentemente carrega coeficientes menores de correlação.