Leitura e pré-processamento dos dados

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

Calcular a temperatura da semana anterior em cada linha

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

Para que a comparação seja mais justa, filtraremos apenas os anos em que ambas as cidades tiveram observações em pelo menos 50 semanas. Os anos disponíveis após esse filtro foram: 1995-1999, 2002-2018. Para manter a continuidade dos dados iremos filtrá-los entre os anos 2002 e 2018. Totalizando 17 anos.

anos_validos <- climas %>%
  group_by(ano, cidade) %>%
  summarise(n(), .groups = "drop") %>%
  pivot_wider(id_cols = ano, names_from = cidade, values_from = `n()`) %>%
  filter(`João Pessoa` >= 50, `Campina Grande` >= 50) %>%
  pull(ano)
clima_tudo <- climas %>%
  filter(ano %in% anos_validos[-seq(1, 5)])

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

Podemos ver pelo Gráfico I que a cidade mais quente é João Pessoa:

  • a temperatura média de João Pessoa foi em geral acima dos 25 ºC, enquanto que em Campina ela ultrapassa 25 ºC com pouca frequência.
  • a temperatura miníma registrada em Campina Grande costuma estar abaixo dos 20 ºC, enquanto que a temperatura pessoense fica abaixo desse valor em raras ocasiões.
  • entretanto, vale ressaltar que em certos períodos do ano é possível ver que a temperatura máxima campinense supera a da capital.
clima_tudo %>%
  ggplot(aes(x = semana, y = tmedia)) +
  geom_line() +
  geom_ribbon(aes(ymin = tmin, ymax = tmax, alpha = .3)) +
  facet_wrap(~ cidade, ncol = 1) +
  scale_x_datetime(date_breaks = "1 year", date_labels = "%Y") +
  theme(legend.position = "none") +
  labs(title = "Gráfico I - Histórico de temperatura em cidades da PB",
       subtitle = "Para os anos de 2002 a 2018",
       x = "Semana do ano",
       y = "Temperatura (ºC)")

Se observamos apenas o período do verão, as conclusões são iguais. João Pessoa segue a cidade mais quente, com a temperatura média variando entre 26 ºC e 29 ºC, enquanto a de Campina varia entre 24 ºC e 27 ºC. Além disso, Campina Grande é a única cidade a ter temperaturas minímas sempre abaixo dos 22 ºC. Porém, vale a ressalva de que Campina Grande tem temperaturas máximas mais altas, de modo que provavelmente em torno do meio dia a cidade tenha momentos mais quentes que João Pessoa.

clima_tudo %>%
  filter(mes %in% c(1, 2)) %>%
  ggplot(aes(x = lubridate::week(semana), y = tmedia, group = ano)) +
  geom_line() +
  geom_ribbon(aes(ymin = tmin, ymax = tmax, alpha = .3)) +
  facet_grid(cidade ~ ano, scales = "free_x") +
  scale_x_continuous(breaks = c(2, 4, 6, 8)) +
  scale_y_continuous(breaks = seq(18, 36, 2)) +
  theme(legend.position = "none") +
  labs(title = "Gráfico II - Histórico de temperatura do verão em cidades da PB",
       subtitle = "Durante o pico do verão (janeiro e fevereiro), para os anos de 2002 a 2018",
       x = "Semana do ano",
       y = "Temperatura (ºC)") +
  theme(strip.text.x = element_text(size = 8))

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

Ainda pelos gráficos I e II, é possível ver que ambas as medidas de temperatural tem um padrão periódico de picos e vales, em que o meio do ano representa o vale e os extremos os períodos mais quentes. Isso nos leva a ver um padrão de que os meses mais quentes são aqueles de verão (dezembro a fevereiro), enquanto os mais frios são os de inverno (junho a agosto).

O gráfico III abaixo apresenta a distribuição mensal de cada uma dos sumários de temperatura medidos e corrobora a afirmação a acima.

clima_tudo %>%
  pivot_longer(cols = c(tmin, tmax, tmedia), names_to = "measure", values_to = "value") %>%
  mutate(measure = case_when(
    measure == "tmax" ~ "Temp. máxima",
    measure == "tmin" ~ "Temp. mínima",
    measure == "tmedia" ~ "Temp. média",
    TRUE ~ NA
  )) %>%
  ggplot(aes(x = lubridate::month(semana, label = TRUE), y = value, color = cidade)) +
  geom_boxplot() +
  facet_wrap(~ measure, ncol = 1, scales = "free_y") +
  # geom_ribbon(aes(ymin = tmin, ymax = tmax, alpha = .3)) +
  # facet_wrap(~ cidade, ncol = 1) +
  # scale_x_datetime(date_breaks = "1 year", date_labels = "%Y") +
  labs(title = "Gráfico III - Distibruição da temperatura em cidades da PB mensalmente",
       subtitle = "Para os anos de 2002 a 2018",
       x = "Semana do ano",
       y = "Temperatura (ºC)")

Podemos ver, pelo Gráfico IV, que no período junino o clima de Campina Grande é mais ameno com a máxima superando 28 ºC em raras ocasiões, enquanto que a temperatura mínima fica sempre abaixo de 20 ºC, atingindo valores abaixo de 18 ºC com certa frequência. Já o clima de João Pessoa, apesar de mais frio que no restante do ano, ainda é mais quente que Campina e atinge máximas de 30 ºC com certa frequência, com média que gira em torno dos 26 ºC (frente aos 23 ºC de Campina Grande), e uma mínima que vai abaixo de 20 ºC em poquíssimos anos.

clima_tudo %>%
  filter(mes == 6) %>%
  ggplot(aes(x = lubridate::week(semana), y = tmedia, group = ano)) +
  geom_line() +
  geom_ribbon(aes(ymin = tmin, ymax = tmax, alpha = .3)) +
  facet_grid(cidade ~ ano, scales = "free_x") +
  scale_x_continuous(breaks = c(23, 25)) +
  scale_y_continuous(breaks = seq(18, 36, 2)) +
  theme(legend.position = "none") +
  labs(title = "Gráfico IV - Histórico de temperatura do período junino em cidades da PB",
       x = "Semana do ano",
       y = "Temperatura (ºC)") +
  theme(strip.text.x = element_text(size = 8), axis.text.x = element_text(angle = 90))

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

Pelo Gráfico V, podemos ver que em ambas as cidades a distribuição de chuva se concentra em valores abaixo dos 100 mm com uma cauda que pode chegar a 200 mm no caso de Campina Grande e em mais de 300 mm em João Pessoa. Entretando cabe ressaltar que chuvas acima de 100 mm são raras em Campina Grande enquanto que em João Pessoa elas acontecem com certa frequência. Além disso, Campina apresenta mais semanas sem chuva que João Pessoa.

clima_tudo %>%
  ggplot(aes(x = chuva)) +
  geom_histogram(binwidth = 10, boundary = 0, fill = 'lightblue') +
  geom_rug(data = clima_tudo %>% filter(chuva > 80), color = '#3a9fbf') +
  facet_wrap(~ cidade, ncol = 1) +
  scale_x_continuous(breaks = seq(0, 400, 20)) +
  theme(legend.position = "none") +
  labs(title = "Gráfico V - Histórico de chuva em cidades da PB",
       subtitle = "Para os anos de 2002 a 2018",
       x = "Chuva (mm)",
       y = "# Semanas")

Na tabela abaixo é possível ver alguns sumários estatísticos para a chuva em ambas as cidades. É possível ver que João Pessoa tem média e medianas significativamente maiores que Campina Grande.

clima_tudo %>%
  group_by(cidade) %>%
  summarise(mean = mean(chuva),
            median = median(chuva),
            mean_no_zero = sum(chuva)/length(chuva[chuva>0])) %>%
  knitr::kable(col.names = c("Cidade", "Média (mm)", "Mediana (mm)", "Média dos dias de chuva (mm)"))
Cidade Média (mm) Mediana (mm) Média dos dias de chuva (mm)
Campina Grande 15.01362 5.5 18.26934
João Pessoa 35.36045 15.2 37.70361

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

Pelo Gráfico VI, vemos que existe uma correlação positiva, a temperatura na semana subsequente tende a alta quando a da semana corrente também o for.

clima_tudo %>%
  ggplot(aes(y = tmedia, x = temp_anterior)) +
  geom_point(alpha = .6) +
  facet_wrap(~ cidade, ncol = 1, strip.position = "right", scales = "free") +
  labs(
    title = "Gráfico VI - Autocorrelação em dados de temperatura média para cidades da Paraíba",
    subtitle = "Intervalo de 1 semana",
    y = "Temperatura média (ºC)",
    x = "Temperatura média anterior (ºC)"
  )

A tabela a seguir apresenta os coeficientes de correlação para cada cidade. E podemos ver que uma correlação forte e positiva.

clima_tudo %>%
  group_by(cidade) %>%
  summarise(cor_pear = cor(tmedia, temp_anterior),
            cor_spea = cor(tmedia, temp_anterior, method = "s"),
            cor_ken = cor(tmedia, temp_anterior, method = "k")) %>%
  knitr::kable(col.names = c("Cidade", "Pearson", "Spearman", "Kendall"))
Cidade Pearson Spearman Kendall
Campina Grande 0.8756388 0.8524464 0.6631075
João Pessoa 0.8406016 0.8428357 0.6607710

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

Pelo Gráfico VI, vemos que existe uma correlação negativa fraca, entre a temperatura da semana e o log da pluviosidade. De modo que semanas mais quentes se correlacionam com semanas menos chuvosas.

clima_tudo %>%
  filter(chuva > 0) %>%
  ggplot(aes(y = chuva, x = tmedia)) +
  geom_point(alpha = .6) +
  facet_wrap(~ cidade, ncol = 1, strip.position = "right", scales = "free") +
  scale_y_log10() +
  labs(title = "Gráfico VII - Dispersão temperatura média por chuva em cidades da PB",
       x = "Temperatura média (ºC)",
       y = "log10(Chuva (mm))")

A tabela a seguir apresenta os coeficientes de correlação para cada cidade. Vemos que de fato temos uma correlação fraca negativa ou nenhuma correlação entre as variavéis.

clima_tudo %>%
  filter(chuva > 0) %>%
  group_by(cidade) %>%
  summarise(cor_pear = cor(tmedia, log10(chuva)),
            cor_spea = cor(tmedia, log10(chuva), method = "s"),
            cor_ken = cor(tmedia, log10(chuva), method = "k")) %>%
  knitr::kable(col.names = c("Cidade", "Pearson", "Spearman", "Kendall"))
Cidade Pearson Spearman Kendall
Campina Grande -0.4264086 -0.4344552 -0.2944796
João Pessoa -0.4795151 -0.4873115 -0.3304496