dados <- read.csv("fpcc2-lab-2-K010TE/data/clima_cg_jp-semanal.csv")
# Convertendo a coluna semana para data
dados$semana <- as.Date(dados$semana)
# Criando coluna de mês para facilitar a análise
dados$mes_nome <- month(dados$semana, label = TRUE, abbr = TRUE)
# Calculando médias por cidade
medias_gerais <- dados %>%
group_by(cidade) %>%
summarise(
temp_media = mean(tmedia),
temp_max_media = mean(tmax),
temp_min_media = mean(tmin)
)
knitr::kable(medias_gerais, caption = "Médias gerais por cidade")
| cidade | temp_media | temp_max_media | temp_min_media |
|---|---|---|---|
| Campina Grande | 24.69077 | 30.31691 | 19.32794 |
| João Pessoa | 27.65318 | 30.67349 | 22.50144 |
# Visualização das temperaturas médias
ggplot(dados, aes(x = semana, y = tmedia, color = cidade)) +
geom_line() +
labs(
title = "Temperatura Média ao Longo do Tempo",
x = "Data",
y = "Temperatura Média (°C)",
color = "Cidade"
) +
theme_minimal()
# Filtrando dados de janeiro e fevereiro
dados_verao <- dados %>%
filter(month(semana) %in% c(1, 2))
# Calculando médias do verão por cidade
medias_verao <- dados_verao %>%
group_by(cidade) %>%
summarise(
temp_media_verao = mean(tmedia),
temp_max_media_verao = mean(tmax),
temp_min_media_verao = mean(tmin)
)
knitr::kable(medias_verao, caption = "Médias do verão por cidade")
| cidade | temp_media_verao | temp_max_media_verao | temp_min_media_verao |
|---|---|---|---|
| Campina Grande | 25.85547 | 31.86959 | 20.43871 |
| João Pessoa | 28.65027 | 31.50787 | 23.57677 |
# Visualização das temperaturas médias no verão
ggplot(dados_verao, aes(x = semana, y = tmedia, color = cidade)) +
geom_line() +
labs(
title = "Temperatura Média no Verão (Jan-Fev)",
x = "Data",
y = "Temperatura Média (°C)",
color = "Cidade"
) +
theme_minimal()
Para responder à questão sobre qual cidade é mais quente entre Campina Grande e João Pessoa e se essa resposta muda ao considerarmos apenas o período de janeiro e fevereiro (pico do verão), foram analisadas as seguintes métricas: temperatura média semanal, temperatura máxima média e temperatura mínima média. Essas métricas foram avaliadas tanto para o período geral (todo o ano) quanto especificamente para os meses de janeiro e fevereiro.
Justificativa para as métricas escolhidas: - Temperatura média semanal: É a principal métrica para comparar o “calor” sentido em cada cidade, pois reflete o valor médio das temperaturas ao longo do tempo, suavizando variações extremas e fornecendo uma visão geral do clima local. - Temperatura máxima média: Indica o potencial de calor extremo em cada cidade, importante para avaliar os dias mais quentes e o desconforto térmico. - Temperatura mínima média: Mostra o comportamento das noites e madrugadas, sendo relevante para entender o resfriamento noturno e o conforto térmico durante o sono.
Essas três métricas, em conjunto, fornecem uma visão abrangente do perfil térmico de cada cidade, permitindo uma comparação justa e detalhada.
Resultados:
Conclusão:
Com base nas métricas analisadas, conclui-se que João Pessoa é consistentemente mais quente que Campina Grande, tanto ao longo do ano quanto durante o pico do verão. A diferença é observada principalmente nas temperaturas médias e mínimas, indicando que João Pessoa tem noites e madrugadas mais quentes, além de dias mais quentes em média.
Essa diferença pode ser atribuída, principalmente, à localização geográfica e à altitude: João Pessoa está ao nível do mar, enquanto Campina Grande está situada em uma região de maior altitude, o que favorece temperaturas mais amenas.
A diferença nas temperaturas entre as duas cidades pode ser explicada por fatores como: - Altitude - Proximidade com o mar - Urbanização - Vegetação local
# Calcular a média mensal de temperatura para cada cidade
medias_mensais <- dados %>%
group_by(cidade, mes_nome) %>%
summarise(
temp_media_mes = mean(tmedia),
.groups = "drop"
)
knitr::kable(medias_mensais, caption = "Temperatura média mensal por cidade")
| cidade | mes_nome | temp_media_mes |
|---|---|---|
| Campina Grande | jan | 25.82805 |
| Campina Grande | fev | 25.88525 |
| Campina Grande | mar | 25.85823 |
| Campina Grande | abr | 25.26170 |
| Campina Grande | mai | 24.33872 |
| Campina Grande | jun | 22.84400 |
| Campina Grande | jul | 22.27385 |
| Campina Grande | ago | 22.74874 |
| Campina Grande | set | 23.95660 |
| Campina Grande | out | 25.05619 |
| Campina Grande | nov | 25.66563 |
| Campina Grande | dez | 25.94398 |
| João Pessoa | jan | 28.52795 |
| João Pessoa | fev | 28.78472 |
| João Pessoa | mar | 28.84232 |
| João Pessoa | abr | 28.29965 |
| João Pessoa | mai | 27.61150 |
| João Pessoa | jun | 26.36247 |
| João Pessoa | jul | 25.87912 |
| João Pessoa | ago | 26.24036 |
| João Pessoa | set | 27.02709 |
| João Pessoa | out | 27.71443 |
| João Pessoa | nov | 28.16459 |
| João Pessoa | dez | 28.46335 |
# Gráfico das médias mensais
ggplot(medias_mensais, aes(x = mes_nome, y = temp_media_mes, fill = cidade)) +
geom_col(position = "dodge") +
labs(
title = "Temperatura Média Mensal por Cidade",
x = "Mês",
y = "Temperatura Média (°C)",
fill = "Cidade"
) +
theme_minimal()
# Verifique os valores únicos para depuração
print(unique(dados$mes_nome))
## [1] dez jan fev out nov mar abr mai jun jul ago set
## 12 Levels: jan < fev < mar < abr < mai < jun < jul < ago < set < ... < dez
print(unique(dados$ano))
## [1] 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
## [16] 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 1987 1988
## [31] 1990 1991
anos_recentes <- sort(unique(dados$ano), decreasing = TRUE)[1:10]
# Filtro seguro para junho
junho_ultimos_anos <- dados %>%
filter(month(semana) == 6, ano %in% anos_recentes)
# Calcular médias de junho por cidade e ano
medias_junho <- junho_ultimos_anos %>%
group_by(cidade, ano) %>%
summarise(
temp_media_junho = mean(tmedia),
temp_max_junho = mean(tmax),
temp_min_junho = mean(tmin),
.groups = "drop"
)
knitr::kable(medias_junho, caption = "Temperaturas médias de junho nos últimos anos")
| cidade | ano | temp_media_junho | temp_max_junho | temp_min_junho |
|---|---|---|---|---|
| Campina Grande | 2010 | 23.36071 | 27.650 | 18.850 |
| Campina Grande | 2011 | 22.66667 | 27.175 | 18.350 |
| Campina Grande | 2012 | 22.99524 | 28.750 | 18.650 |
| Campina Grande | 2013 | 22.89921 | 27.640 | 18.760 |
| Campina Grande | 2014 | 23.04476 | 28.240 | 17.780 |
| Campina Grande | 2015 | 22.62024 | 28.200 | 18.400 |
| Campina Grande | 2016 | 23.79405 | 28.825 | 18.025 |
| Campina Grande | 2017 | 22.90714 | 27.850 | 18.775 |
| Campina Grande | 2018 | 22.81214 | 27.375 | 17.400 |
| João Pessoa | 2010 | 27.02302 | 31.100 | 19.725 |
| João Pessoa | 2011 | 26.15675 | 30.100 | 22.200 |
| João Pessoa | 2012 | 26.41905 | 30.175 | 21.350 |
| João Pessoa | 2013 | 26.48190 | 30.380 | 22.060 |
| João Pessoa | 2014 | 26.65905 | 30.280 | 20.420 |
| João Pessoa | 2015 | 26.81667 | 30.400 | 21.675 |
| João Pessoa | 2016 | 27.05119 | 30.400 | 20.975 |
| João Pessoa | 2017 | 26.91786 | 31.150 | 21.925 |
| João Pessoa | 2018 | 26.88571 | 30.800 | 21.150 |
print(medias_junho) # Para depuração
## # A tibble: 18 × 5
## cidade ano temp_media_junho temp_max_junho temp_min_junho
## <chr> <int> <dbl> <dbl> <dbl>
## 1 Campina Grande 2010 23.4 27.6 18.8
## 2 Campina Grande 2011 22.7 27.2 18.4
## 3 Campina Grande 2012 23.0 28.8 18.6
## 4 Campina Grande 2013 22.9 27.6 18.8
## 5 Campina Grande 2014 23.0 28.2 17.8
## 6 Campina Grande 2015 22.6 28.2 18.4
## 7 Campina Grande 2016 23.8 28.8 18.0
## 8 Campina Grande 2017 22.9 27.8 18.8
## 9 Campina Grande 2018 22.8 27.4 17.4
## 10 João Pessoa 2010 27.0 31.1 19.7
## 11 João Pessoa 2011 26.2 30.1 22.2
## 12 João Pessoa 2012 26.4 30.2 21.4
## 13 João Pessoa 2013 26.5 30.4 22.1
## 14 João Pessoa 2014 26.7 30.3 20.4
## 15 João Pessoa 2015 26.8 30.4 21.7
## 16 João Pessoa 2016 27.1 30.4 21.0
## 17 João Pessoa 2017 26.9 31.2 21.9
## 18 João Pessoa 2018 26.9 30.8 21.2
ggplot(medias_junho, aes(x = as.numeric(ano), y = temp_media_junho, color = cidade)) +
geom_line(linewidth = 1.2) +
geom_point(size = 2) +
labs(
title = "Temperatura Média de Junho (Festas Juninas) nos Últimos Anos",
x = "Ano",
y = "Temperatura Média (°C)",
color = "Cidade"
) +
theme_minimal()
Para responder à questão sobre quais são os meses mais quentes e mais frios, e como se comportam as temperaturas durante as festas juninas nas cidades de Campina Grande e João Pessoa, foram analisadas as médias mensais de temperatura e a evolução das médias de junho nos últimos anos.
Justificativa para as métricas escolhidas: - Temperatura média mensal: Permite identificar padrões sazonais e comparar o comportamento térmico ao longo do ano em cada cidade. - Temperatura média de junho ao longo dos anos: Foca especificamente no mês das festas juninas, possibilitando avaliar se há tendência de aquecimento ou resfriamento e comparar o clima das festividades entre as cidades.
Resultados:
Conclusão:
Com base nas análises, conclui-se que os meses mais quentes são janeiro, fevereiro e março, enquanto junho e julho são os mais frios. Durante as festas juninas, Campina Grande apresenta temperaturas significativamente mais baixas do que João Pessoa, proporcionando um clima mais ameno e típico do São Joaõ da cidade. Em João Pessoa, as festas ocorrem em ambiente mais quente, com pouca variação em relação ao restante do ano.
# Calcular a média, mediana e desvio padrão da chuva semanal por cidade
chuva_stats <- dados %>%
group_by(cidade) %>%
summarise(
media_chuva = mean(chuva),
mediana_chuva = median(chuva),
desvio_chuva = sd(chuva),
max_chuva = max(chuva),
min_chuva = min(chuva),
.groups = "drop"
)
knitr::kable(chuva_stats, caption = "Estatísticas do volume de chuva semanal por cidade")
| cidade | media_chuva | mediana_chuva | desvio_chuva | max_chuva | min_chuva |
|---|---|---|---|---|---|
| Campina Grande | 13.99730 | 4.9 | 21.65174 | 191.9 | 0 |
| João Pessoa | 32.64849 | 14.1 | 44.47010 | 351.6 | 0 |
# Histograma e boxplot da distribuição do volume de chuvas
library(ggplot2)
# Histograma
p1 <- ggplot(dados, aes(x = chuva, fill = cidade)) +
geom_histogram(position = "identity", alpha = 0.6, bins = 30) +
facet_wrap(~cidade, scales = "free_y") +
labs(
title = "Distribuição do Volume de Chuvas Semanais",
x = "Chuva semanal (mm)",
y = "Frequência"
) +
theme_minimal()
# Boxplot
p2 <- ggplot(dados, aes(x = cidade, y = chuva, fill = cidade)) +
geom_boxplot(alpha = 0.7) +
labs(
title = "Boxplot do Volume de Chuvas Semanais por Cidade",
x = "Cidade",
y = "Chuva semanal (mm)"
) +
theme_minimal()
# Mostrar ambos os gráficos
library(gridExtra)
gridExtra::grid.arrange(p1, p2, nrow = 2)
Para responder à questão sobre quanto chove por semana em João Pessoa e Campina Grande, e descrever a distribuição do volume de chuvas, foram analisadas estatísticas descritivas e visualizações da variável de chuva semanal para cada cidade.
Justificativa para as métricas escolhidas:
- Média, mediana e desvio padrão: Permitem comparar o
volume típico de chuvas, a tendência central e a variabilidade entre as
cidades. - Boxplot e histograma: Facilitam a
visualização da distribuição, presença de extremos (chuvas intensas) e
assimetrias.
Resultados:
Conclusão:
João Pessoa recebe, em média, mais que o dobro do volume de chuvas
semanais de Campina Grande e apresenta maior variabilidade, com
episódios de chuvas intensas mais frequentes. Campina Grande, por sua
vez, tem uma distribuição de chuvas mais concentrada em baixos volumes,
com poucas semanas de chuva significativa ao longo do ano.
# Organizar os dados por cidade e semana
library(dplyr)
dados_ord <- dados %>% arrange(cidade, semana)
# Calcular a temperatura da semana anterior para cada cidade
library(dplyr)
dados_ord <- dados_ord %>%
group_by(cidade) %>%
mutate(tmedia_lag1 = lag(tmedia, 1)) %>%
ungroup()
# Remover linhas com NA (primeira semana de cada cidade)
dados_lag <- dados_ord %>% filter(!is.na(tmedia_lag1))
# Calcular correlação para cada cidade
temp_cor <- dados_lag %>%
group_by(cidade) %>%
summarise(correlacao = cor(tmedia, tmedia_lag1))
knitr::kable(temp_cor, caption = "Correlação entre a temperatura média semanal e a da semana anterior")
| cidade | correlacao |
|---|---|
| Campina Grande | 0.8801680 |
| João Pessoa | 0.8593719 |
# Visualização: gráfico de dispersão
library(ggplot2)
ggplot(dados_lag, aes(x = tmedia_lag1, y = tmedia, color = cidade)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~cidade) +
labs(
title = "Relação entre Temperatura de uma Semana e da Semana Anterior",
x = "Temperatura Média da Semana Anterior (°C)",
y = "Temperatura Média da Semana (°C)",
color = "Cidade"
) +
theme_minimal()
Para responder à questão sobre a relação entre a temperatura de uma semana e a temperatura da semana anterior, foi calculada a correlação entre essas variáveis para cada cidade e visualizada a relação por meio de gráficos de dispersão.
Justificativa para as métricas escolhidas:
- Correlação de Pearson: Mede a força e a direção da
relação linear entre a temperatura média de uma semana e a da semana
anterior. - Gráfico de dispersão com linha de
tendência: Permite visualizar a relação e identificar padrões
ou desvios.
Resultados: - A correlação entre a temperatura média semanal e a da semana anterior é alta e positiva em ambas as cidades, indicando que semanas quentes tendem a ser seguidas por semanas também quentes, e o mesmo ocorre para semanas mais frias. - Os gráficos de dispersão mostram uma relação linear clara, com poucos desvios, reforçando a persistência do padrão térmico semanal.
Conclusão:
Existe uma forte relação entre a temperatura de uma semana e a da semana
anterior tanto em Campina Grande quanto em João Pessoa. Isso reflete a
persistência das condições climáticas semanais, ou seja, períodos
quentes ou frios tendem a se manter por várias semanas consecutivas em
ambas as cidades.
# Filtrar apenas semanas com chuva > 0
semanas_chuva <- dados %>% filter(chuva > 0)
# Calcular correlação entre temperatura média e chuva por cidade
cor_temp_chuva <- semanas_chuva %>%
group_by(cidade) %>%
summarise(correlacao = cor(tmedia, chuva))
knitr::kable(cor_temp_chuva, caption = "Correlação entre temperatura média semanal e volume de chuva nas semanas chuvosas")
| cidade | correlacao |
|---|---|
| Campina Grande | -0.3354837 |
| João Pessoa | -0.4244459 |
# Gráfico de dispersão com escala logarítmica no eixo de chuva
library(ggplot2)
ggplot(semanas_chuva, aes(x = chuva, y = tmedia, color = cidade)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~cidade) +
scale_x_log10() +
labs(
title = "Relação entre Temperatura Média e Volume de Chuva (escala log) nas Semanas Chuvosas",
x = "Chuva semanal (mm, escala log)",
y = "Temperatura Média (°C)",
color = "Cidade"
) +
theme_minimal()
Para responder à questão sobre a relação entre temperatura e chuvas nas semanas em que choveu, foi calculada a correlação entre essas variáveis para cada cidade e visualizada a relação por meio de gráficos de dispersão.
Justificativa para as métricas escolhidas:
- Correlação de Pearson: Mede a força e a direção da
relação linear entre temperatura média e volume de chuva nas semanas
chuvosas. - Gráfico de dispersão com linha de
tendência: Permite visualizar a relação e identificar padrões
ou desvios. - Escala logarítmica no eixo de chuva: Foi
utilizada a transformação logarítmica no eixo de chuva para melhorar a
visualização, pois a distribuição do volume de chuvas é bastante
assimétrica, com muitos valores baixos e poucos valores muito altos. O
uso do log permite observar melhor a relação entre temperatura e chuva,
especialmente para semanas com volumes extremos de precipitação.
Resultados: - A correlação entre temperatura média e volume de chuva nas semanas chuvosas tende a ser negativa em ambas as cidades, indicando que, em geral, semanas com maior volume de chuva apresentam temperaturas médias mais baixas. - Os gráficos de dispersão (com escala logarítmica no eixo de chuva) mostram uma tendência de queda na temperatura média conforme o volume de chuva aumenta, especialmente em João Pessoa, onde a relação negativa é mais evidente.
Conclusão:
Existe uma relação inversa entre temperatura média e volume de chuva nas
semanas chuvosas em Campina Grande e João Pessoa. Ou seja, semanas mais
chuvosas tendem a ser mais amenas, principalmente em João Pessoa, onde o
efeito é mais pronunciado. O uso da escala logarítmica no gráfico
permitiu visualizar melhor essa relação, tornando mais clara a tendência
mesmo em semanas com volumes extremos de chuva.