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))
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()
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.
# 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.
# 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.
# 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.
# 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.