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))
glimpse(climas)
## Rows: 2,748
## Columns: 9
## $ cidade <chr> "Campina Grande", "Campina Grande", "Campina Grande", "C…
## $ semana <dttm> 1992-12-27, 1993-01-03, 1993-01-10, 1993-01-31, 1993-02…
## $ tmedia <dbl> 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26.285…
## $ tmax <dbl> 30.4, 32.4, 32.2, 32.0, 32.7, 32.7, 32.3, 32.3, 32.1, 31…
## $ tmin <dbl> 20.7, 19.3, 19.7, 19.9, 19.6, 20.0, 20.4, 21.2, 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…
## $ mes <dbl> 12, 1, 1, 1, 2, 2, 2, 2, 10, 11, 11, 11, 11, 12, 12, 12,…
## $ ano <dbl> 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 19…
## $ temp_anterior <dbl> NA, 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26…
# Calcula a temperatura média anual por cidade
media_anual_por_cidade <- climas %>%
group_by(cidade) %>%
summarise(temperatura_media_anual = mean(tmedia, na.rm = TRUE))
# Filtra apenas os meses de janeiro e fevereiro e calcula a média do verão por cidade
media_verao_por_cidade <- climas %>%
filter(mes %in% c(1, 2)) %>%
group_by(cidade) %>%
summarise(temperatura_media_verao = mean(tmedia, na.rm = TRUE))
# Geração de estatísticas descritivas para a temperatura média anual por cidade
resumo_anual <- climas %>%
group_by(cidade) %>%
summarise(
Temperatura_Minima = min(tmedia, na.rm = TRUE),
Primeiro_Quartil = quantile(tmedia, probs = 0.25, na.rm = TRUE),
Mediana = median(tmedia, na.rm = TRUE),
Media = mean(tmedia, na.rm = TRUE),
Terceiro_Quartil = quantile(tmedia, probs = 0.75, na.rm = TRUE),
Temperatura_Maxima = max(tmedia, na.rm = TRUE)
)
print(resumo_anual)
## # A tibble: 2 × 7
## cidade Temperatura_Minima Primeiro_Quartil Mediana Media Terceiro_Quartil
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Gr… 20.8 23.5 25.0 24.7 25.9
## 2 João Pessoa 24.0 26.8 27.8 27.7 28.6
## # ℹ 1 more variable: Temperatura_Maxima <dbl>
# Estatísticas descritivas para os meses de verão (janeiro e fevereiro)
resumo_verao <- climas %>%
filter(mes %in% c(1, 2)) %>%
group_by(cidade) %>%
summarise(
Temperatura_Minima = min(tmedia, na.rm = TRUE),
Primeiro_Quartil = quantile(tmedia, probs = 0.25, na.rm = TRUE),
Mediana = median(tmedia, na.rm = TRUE),
Media = mean(tmedia, na.rm = TRUE),
Terceiro_Quartil = quantile(tmedia, probs = 0.75, na.rm = TRUE),
Temperatura_Maxima = max(tmedia, na.rm = TRUE)
)
print(resumo_verao)
## # A tibble: 2 × 7
## cidade Temperatura_Minima Primeiro_Quartil Mediana Media Terceiro_Quartil
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Gr… 23.0 25.3 25.9 25.9 26.5
## 2 João Pessoa 26.6 28.3 28.7 28.7 29.0
## # ℹ 1 more variable: Temperatura_Maxima <dbl>
# Junta os dados de temperatura média anual com os de verão, por cidade
tabela_temperaturas <- left_join(media_anual_por_cidade, media_verao_por_cidade, by = "cidade")
# Prepara os dados em formato longo para visualização com ggplot2
dados_para_grafico <- tabela_temperaturas %>%
pivot_longer(cols = c(temperatura_media_anual, temperatura_media_verao),
names_to = "periodo",
values_to = "temperatura")
# Criação do gráfico de barras comparando as temperaturas médias
grafico_comparativo <- dados_para_grafico %>%
ggplot(aes(x = cidade, y = temperatura, fill = periodo)) +
geom_bar(stat = "identity", position = "dodge", color = "black") + # barras lado a lado
geom_text(aes(label = round(temperatura, 1)),
vjust = 1.8, position = position_dodge(0.9)) + # rótulos nas barras
labs(
x = "Cidade",
y = "Temperatura Média (°C)",
title = "Comparativo de Temperaturas Médias Anual e no Verão"
) +
scale_fill_discrete(
labels = c("Anual", "Verão")
) +
theme_minimal()
# Exibe o gráfico
print(grafico_comparativo)
Observa-se que João Pessoa apresenta as maiores médias de temperatura tanto anualmente (27.7°C) quanto no verão (28.7°C). Em contraste, Campina Grande registra médias de 24.7°C e 25.9°C, respectivamente. A utilização da média como métrica climática permite considerar o comportamento geral das temperaturas ao longo do tempo.
# Adiciona o nome dos meses aos dados
clima_formatado <- climas %>%
mutate(nome_mes = month(mes, label = TRUE))
# Calcula a temperatura média mensal por cidade
media_mensal_por_cidade <- clima_formatado %>%
group_by(cidade, nome_mes) %>%
summarise(temp_media = mean(tmedia, na.rm = TRUE), .groups = "drop")
# Ordena as temperaturas médias do mês do maior ao menor para cada cidade
meses_mais_quentes <- media_mensal_por_cidade %>%
arrange(cidade, desc(temp_media))
# Ordena do menor ao maior para obter os meses mais frios
meses_mais_frios <- media_mensal_por_cidade %>%
arrange(cidade, temp_media)
# Filtros específicos para Campina Grande e João Pessoa
quentes_cg <- meses_mais_quentes %>% filter(cidade == "Campina Grande")
quentes_jp <- meses_mais_quentes %>% filter(cidade == "João Pessoa")
frios_cg <- meses_mais_frios %>% filter(cidade == "Campina Grande")
frios_jp <- meses_mais_frios %>% filter(cidade == "João Pessoa")
# Visualização das listagens de meses mais quentes/frios por cidade
quentes_cg
quentes_jp
frios_cg
frios_jp
# Estatísticas descritivas para o mês de junho (festas juninas)
resumo_junho <- climas %>%
filter(mes == 6) %>%
group_by(cidade) %>%
summarise(
Min = min(tmedia, na.rm = TRUE),
Q1 = quantile(tmedia, 0.25, na.rm = TRUE),
Mediana = median(tmedia, na.rm = TRUE),
Media = mean(tmedia, na.rm = TRUE),
Q3 = quantile(tmedia, 0.75, na.rm = TRUE),
Max = max(tmedia, na.rm = TRUE),
.groups = "drop"
)
print(resumo_junho)
## # A tibble: 2 × 7
## cidade Min Q1 Mediana Media Q3 Max
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Grande 21.3 22.2 22.8 22.8 23.3 24.9
## 2 João Pessoa 24.0 25.8 26.4 26.4 26.9 28.3
# Temperatura média por mês para cada cidade
media_mensal <- climas %>%
group_by(mes, cidade) %>%
summarise(temp_media = mean(tmedia, na.rm = TRUE), .groups = "drop")
# Gráfico linha: temperatura média ao longo dos meses
grafico_temporal_mensal <- media_mensal %>%
ggplot(aes(x = mes, y = temp_media, color = cidade)) +
geom_line() +
geom_point() +
geom_text(aes(label = round(temp_media, 1)),
vjust = 1.8, size = 3, position = position_dodge(0.9)) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mês",
y = "Temperatura Média (°C)",
title = "Temperatura Média Mensal por Cidade",
color = "Cidade"
) +
theme_minimal() +
theme(legend.position = "bottom")
print(grafico_temporal_mensal)
# Temperatura média anual por cidade
media_anual <- climas %>%
group_by(ano, cidade) %>%
summarise(temp_media = mean(tmedia, na.rm = TRUE), .groups = "drop")
# Gráfico linha: temperatura média ao longo dos anos
grafico_temporal_anual <- media_anual %>%
ggplot(aes(x = ano, y = temp_media, color = cidade)) +
geom_line() +
geom_point() +
geom_text(aes(label = round(temp_media, 1)),
vjust = 1.5, size = 2.5, position = position_dodge(0.9)) +
scale_x_continuous(breaks = seq(min(climas$ano), max(climas$ano), by = 1)) +
labs(
x = "Ano",
y = "Temperatura Média (°C)",
title = "Temperatura Média Anual por Cidade",
color = "Cidade"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
legend.position = "bottom"
)
print(grafico_temporal_anual)
# Retorna o tema padrão do ggplot2
theme_set(theme_gray())
A análise das temperaturas médias mensais mostrou diferenças claras entre Campina Grande e João Pessoa. Em Campina Grande, os meses mais quentes foram dezembro, fevereiro e março. Já em João Pessoa, os meses com maior temperatura média foram março, fevereiro e janeiro. Os meses mais frios foram os mesmos nas duas cidades: julho, agosto e junho, o que indica uma estabilidade maior no inverno.
Durante o mês de junho, época das festas juninas, Campina Grande teve temperatura média de 22,84°C, com mínima de 21,34°C e máxima de 24,85°C. Em João Pessoa, as temperaturas foram mais altas: média de 26,36°C, mínima de 23,99°C e máxima de 28,28°C.
Usar a temperatura média é útil porque dá uma ideia geral do clima, sem focar só nos extremos. Observar como essas médias mudam ao longo dos meses e dos anos ajuda a entender padrões sazonais e possíveis mudanças climáticas — algo importante para o planejamento urbano, o turismo e a adaptação às mudanças no clima regional.
# Total de chuva semanal por cidade
chuva_por_semana <- climas %>%
group_by(cidade, semana) %>%
summarise(total_chuva_mm = sum(chuva, na.rm = TRUE), .groups = "drop")
# Estatísticas básicas (média, mediana, desvio padrão e variância) da chuva semanal por cidade
estatisticas_chuva <- chuva_por_semana %>%
group_by(cidade) %>%
summarise(
media_mm = mean(total_chuva_mm, na.rm = TRUE),
mediana_mm = median(total_chuva_mm, na.rm = TRUE),
desvio_mm = sd(total_chuva_mm, na.rm = TRUE),
variancia_mm = var(total_chuva_mm, na.rm = TRUE),
.groups = "drop"
)
estatisticas_chuva
# Resumo descritivo da chuva semanal (valores extremos e quartis)
resumo_chuva <- chuva_por_semana %>%
group_by(cidade) %>%
summarise(
Min = min(total_chuva_mm, na.rm = TRUE),
Q1 = quantile(total_chuva_mm, 0.25, na.rm = TRUE),
Mediana = median(total_chuva_mm, na.rm = TRUE),
Media = mean(total_chuva_mm, na.rm = TRUE),
Q3 = quantile(total_chuva_mm, 0.75, na.rm = TRUE),
Max = max(total_chuva_mm, na.rm = TRUE),
.groups = "drop"
)
resumo_chuva
# Boxplot comparando a distribuição da chuva semanal entre as cidades
ggplot(chuva_por_semana, aes(x = cidade, y = total_chuva_mm)) +
geom_boxplot(fill = "skyblue") +
labs(
title = "Distribuição da Chuva Semanal por Cidade",
x = "Cidade",
y = "Total de Chuva (mm)"
)
# Histograma sobreposto da chuva semanal para cada cidade
ggplot(chuva_por_semana, aes(x = total_chuva_mm, fill = cidade)) +
geom_histogram(bins = 30, alpha = 0.5, position = "identity") +
labs(
title = "Distribuição da Frequência de Chuvas Semanais",
x = "Total de Chuva por Semana (mm)",
y = "Número de Semanas",
fill = "Cidade"
)
# Dispersão temporal da chuva por semana, com separação por cidade
ggplot(chuva_por_semana, aes(x = semana, y = total_chuva_mm)) +
geom_point(color = "#1F77B4", alpha = 0.7) +
facet_wrap(~ cidade) +
labs(
title = "Chuva Semanal ao Longo do Tempo",
x = "Semana do Ano",
y = "Total de Chuva (mm)"
)
A análise da precipitação semanal mostra diferenças claras entre Campina Grande e João Pessoa. João Pessoa tem, em média, 32,65 mm de chuva por semana, mais que o dobro dos 13,99 mm observados em Campina Grande.
A mediana também reforça essa diferença: 14,1 mm em João Pessoa contra 4,9 mm em Campina Grande. Isso indica que João Pessoa tem chuvas mais frequentes e intensas ao longo do ano.
A variabilidade das chuvas é maior em João Pessoa, com desvio padrão e variância mais altos. Isso mostra que a cidade litorânea passa por semanas muito chuvosas e outras mais secas, o que é comum em climas tropicais.
Gráficos como boxplots, histogramas e séries temporais ajudam a visualizar essas diferenças, sendo úteis para entender padrões sazonais e identificar extremos que afetam áreas como agricultura, saneamento e planejamento urbano.
# Correlação de Pearson entre a temperatura média semanal e a da semana anterior
pearson_por_cidade <- climas %>%
group_by(cidade) %>%
summarise(
correlacao_pearson = cor(temp_anterior, tmedia, method = "pearson", use = "pairwise.complete.obs"),
.groups = "drop"
)
pearson_por_cidade
# Correlação de Spearman (não paramétrica, baseada em rankings)
spearman_por_cidade <- climas %>%
group_by(cidade) %>%
summarise(
correlacao_spearman = cor(temp_anterior, tmedia, method = "spearman", use = "pairwise.complete.obs"),
.groups = "drop"
)
spearman_por_cidade
# Correlação de Kendall (não paramétrica, baseada em pares ordenados)
kendall_por_cidade <- climas %>%
group_by(cidade) %>%
summarise(
correlacao_kendall = cor(temp_anterior, tmedia, method = "kendall", use = "pairwise.complete.obs"),
.groups = "drop"
)
kendall_por_cidade
# Gráfico
grafico_correlacao_temporal <- climas %>%
ggplot(aes(x = temp_anterior, y = tmedia)) +
geom_point(alpha = 0.6, color = "#2c7fb8") +
geom_smooth(method = "lm", se = FALSE, color = "#f03b20") +
facet_wrap(~ cidade) +
labs(
title = "Variação da Temperatura: Semana Atual vs. Semana Anterior",
x = "Temperatura da Semana Anterior (°C)",
y = "Temperatura Média da Semana Atual (°C)"
)
print(grafico_correlacao_temporal)
## `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()`).
A análise dos coeficientes de correlação entre a temperatura média semanal e a da semana anterior mostra uma forte relação nas duas cidades: Campina Grande e João Pessoa.
Usando as três métricas — Pearson, Spearman e Kendall — os valores foram altos em todos os casos, indicando uma associação positiva consistente. Isso quer dizer que semanas quentes tendem a ser seguidas por outras também quentes, e o mesmo vale para semanas frias.
Esse tipo de estabilidade é comum em regiões tropicais e subtropicais, onde as variações semanais de temperatura costumam ser suaves.
Os gráficos confirmam essa tendência: a linha de regressão mostra que os pontos seguem um padrão bem definido. Esse comportamento pode ser útil para construir modelos de previsão com base nos dados das semanas anteriores.
# Separando os dados por cidade
climas_cg = climas %>% filter(cidade == "Campina Grande")
climas_jp = climas %>% filter(cidade == "João Pessoa")
# Calculando as correlações para Campina Grande
correlacao_pearson_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "pearson", use = "pairwise.complete.obs")
correlacao_spearman_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "spearman", use = "pairwise.complete.obs")
correlacao_kendall_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "kendall", use = "pairwise.complete.obs")
cat(paste("Correlações para Campina Grande:\nPearson:", correlacao_pearson_cg, "\nSpearman:", correlacao_spearman_cg, "\nKendall:", correlacao_kendall_cg))
## Correlações para Campina Grande:
## Pearson: -0.395831070013836
## Spearman: -0.541074266715462
## Kendall: -0.376791296740262
# Gráfico para Campina Grande
ggplot(climas_cg, aes(x = tmedia, y = chuva)) +
geom_point(color = "#1F77B4") +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(title = "Relação entre temperatura e chuvas em Campina Grande",
x = "Temperatura média da semana (°C)",
y = "Chuva (mm)")
## `geom_smooth()` using formula = 'y ~ x'
## Correlações para Campina Grande: ## Pearson: -0.395831070013836 ##
Spearman: -0.541074266715462 ## Kendall: -0.376791296740262
# Gráfico para Campina Grande
ggplot(climas_cg, aes(x = tmedia, y = chuva)) +
geom_point(color = "#1F77B4") +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(title = "Relação entre temperatura e chuvas em Campina Grande",
x = "Temperatura média da semana (°C)",
y = "Chuva (mm)")
## `geom_smooth()` using formula = 'y ~ x'
# Calculando as correlações para João Pessoa
correlacao_pearson_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "pearson", use = "pairwise.complete.obs")
correlacao_spearman_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "spearman", use = "pairwise.complete.obs")
correlacao_kendall_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "kendall", use = "pairwise.complete.obs")
cat(paste("Correlações para João Pessoa\nPearson:", correlacao_pearson_jp, "\nSpearman:", correlacao_spearman_jp, "\nKendall:", correlacao_kendall_jp))
## Correlações para João Pessoa
## Pearson: -0.441130867729121
## Spearman: -0.483612482663624
## Kendall: -0.328018102300212
# Gráfico para João Pessoa
ggplot(climas_jp, aes(x = tmedia, y = chuva)) +
geom_point(color = "#1F77B4") +
geom_smooth(method = "lm", se = FALSE, color = "black") +
labs(title = "Relação entre temperatura e chuvas em João Pessoa",
x = "Temperatura média da semana (°C)",
y = "Chuva (mm)")
## `geom_smooth()` using formula = 'y ~ x'
Com base nos resultados, podemos observar que existe uma correlação negativa moderada entre a temperatura e a quantidade de chuvas nas semanas em que choveu para ambas as cidades, Campina Grande e João Pessoa. Isso é evidenciado pelos coeficientes de correlação de Pearson, Spearman e Kendall, que são todos negativos.