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)?

library(ggplot2)

# Preparar os dados agrupados
medias_temp <- climas %>%
  mutate(periodo = if_else(mes %in% c(1, 2), "Somente Verão", "Ano Todo")) %>%
  group_by(cidade, periodo) %>%
  summarise(temp_media = mean(tmedia, na.rm = TRUE), .groups = "drop")

# Corrigir para ter uma linha por cidade e por período
medias_temp <- bind_rows(
  climas %>% 
    group_by(cidade) %>% 
    summarise(temp_media = mean(tmedia, na.rm = TRUE)) %>% 
    mutate(periodo = "Ano Todo"),
  
  climas %>% 
    filter(mes %in% c(1, 2)) %>% 
    group_by(cidade) %>% 
    summarise(temp_media = mean(tmedia, na.rm = TRUE)) %>% 
    mutate(periodo = "Somente Verão")
)

# Criar gráfico
ggplot(medias_temp, aes(x = cidade, y = temp_media, fill = periodo)) +
  geom_col(position = "dodge", width = 0.6) +
  geom_text(aes(label = round(temp_media, 1)), 
            position = position_dodge(width = 0.6), 
            vjust = -0.5, size = 4) +
  labs(title = "Comparação da Temperatura Média",
       subtitle = "Ano Todo vs Somente Verão (Jan/Fev)",
       y = "Temperatura Média (°C)",
       fill = "Período") +
  scale_fill_manual(values = c("Ano Todo" = "#F8766D", "Somente Verão" = "#00BFC4")) +
  theme_minimal()

Q1: Conclusão

João Pessoa apresenta temperaturas médias mais altas do que Campina Grande tanto ao longo do ano quanto no verão (janeiro e fevereiro). Isso se justifica por sua localização litorânea, onde a presença do oceano contribui para manter temperaturas elevadas de forma constante. A diferença é ligeiramente maior no verão, sugerindo que os efeitos sazonais são mais intensos nesse período. A métrica usada foi a temperatura média semanal (tmedia), agrupada por cidade e por período.

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

# Agrupar por mês e calcular a média de temperatura
media_mensal <- climas %>%
  group_by(mes) %>%
  summarise(temp_media = mean(tmedia, na.rm = TRUE), .groups = "drop")

# Gráfico
ggplot(media_mensal, aes(x = mes, y = temp_media, fill = temp_media)) +
  geom_col() +
  geom_text(aes(label = round(temp_media, 1)), vjust = -0.5, size = 4) +
  scale_fill_gradient(low = "cyan", high = "red", name = "Temp. Média") +
  labs(title = "Temperatura Média por Mês",
       y = "Temperatura Média (°C)",
       x = "Mês") +
  theme_minimal()

### Q2: Conclusão Os meses mais quentes são janeiro, fevereiro e março, com temperaturas médias acima de 27 °C. Os meses mais frios são junho e julho, com temperaturas em torno de 24,4–24,8 °C. As festas juninas, que ocorrem majoritariamente em junho, coincidem com o período de menor temperatura do ano, o que pode contribuir para uma sensação mais amena e agradável nas celebrações. A análise se baseia na temperatura média mensal, calculada com base na variável tmedia.

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

# Histograma da variável chuva com facet por cidade
ggplot(climas, aes(x = chuva)) +
  geom_histogram(binwidth = 10, fill = "tomato", color = "black") +
  facet_wrap(~ cidade) +
  labs(title = "Distribuição da Chuva por Cidade",
       x = "chuva (mm)",
       y = "Frequência") +
  theme_minimal()

### Q3: Conclusão A maioria das semanas em ambas as cidades tem volumes de chuva abaixo de 50 mm. No entanto, João Pessoa apresenta uma cauda mais longa no gráfico, indicando semanas com chuvas mais intensas e frequentes. Isso reflete o clima tropical úmido da capital paraibana, enquanto Campina Grande, no agreste, possui um padrão de chuvas mais concentrado e menos frequente. A métrica escolhida foi o volume de chuva semanal, visualizado com histogramas por cidade.

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

# Calcular correlação por cidade
corrs <- climas %>%
  group_by(cidade) %>%
  summarise(r = cor(temp_anterior, tmedia, use = "complete.obs"))

# Criar gráfico
ggplot(climas, aes(x = temp_anterior, y = tmedia)) +
  geom_point(alpha = 0.3) +
  geom_smooth(method = "lm", se = FALSE) +
  facet_wrap(~ cidade) +
  labs(
    title = "Correlação entre Temperatura de uma Semana e da Semana Anterior",
    x = "Temperatura da Semana Anterior (°C)",
    y = "Temperatura da Semana Atual (°C)"
  ) +
  geom_text(
    data = corrs,
    aes(x = Inf, y = Inf, label = paste0("r = ", round(r, 2))),
    hjust = 1.1,
    vjust = 1.5,
    inherit.aes = FALSE
  )
## `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()`).

### Q4: Conclusão Há uma forte correlação positiva entre a temperatura de uma semana e a da semana anterior em ambas as cidades (r = 0.88 para Campina Grande e r = 0.86 para João Pessoa). Isso indica uma persistência térmica nas séries temporais, o que é comum em regiões tropicais. A métrica usada foi o coeficiente de correlação de Pearson, comparando tmedia com temp_anterior, ou seja, a temperatura da semana anterior.

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

# Filtrar semanas com chuva (> 0 mm)
chuvas_semana <- climas %>%
  filter(chuva > 0)

# Calcular correlação de Spearman por cidade
corrs <- chuvas_semana %>%
  group_by(cidade) %>%
  summarise(r = cor(tmedia, chuva, method = "spearman", use = "complete.obs"))

# Gráfico com facet para cada cidade e linha de tendência
ggplot(chuvas_semana, aes(x = chuva, y = tmedia)) +
  geom_point(alpha = 0.4, color = "#008B8B") +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  facet_wrap(~ cidade) +
  labs(
    title = "Correlação (Spearman) entre Temperatura Média e Chuva",
    subtitle = "Semanas com chuva (> 0 mm)",
    x = "Volume da chuva (mm)",
    y = "Temperatura Média (°C)"
  ) +
  theme_minimal(base_size = 14) +
  geom_text(
    data = corrs,
    aes(x = Inf, y = Inf, label = paste0("ρ = ", round(r, 2))),
    hjust = 1.1,
    vjust = 1.5,
    inherit.aes = FALSE
  )
## `geom_smooth()` using formula = 'y ~ x'

### Q5: Conclusão Nas semanas em que choveu (chuva > 0), observamos uma correlação negativa moderada entre o volume de chuva e a temperatura média: -0.45 em Campina Grande e -0.46 em João Pessoa. Isso sugere que, quando chove mais, a temperatura tende a ser menor, possivelmente devido à cobertura de nuvens e à redução da radiação solar. Utilizamos a correlação de Spearman para capturar relações monotônicas mesmo que não lineares, filtrando apenas semanas com registros positivos de chuva.