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…
cidade_quente <- climas %>%
group_by(cidade) %>%
summarise(tmedia = mean(tmedia, na.rm = TRUE))
cidade_quente_verao <- climas %>%
filter(mes %in% c(1, 2)) %>%
group_by(cidade) %>%
summarise(tmedia_verao = mean(tmedia, na.rm = TRUE))
# Calculando as estatísticas para a questão 1
estatisticas_cidade <- climas %>%
group_by(cidade) %>%
summarise(Min = min(tmedia, na.rm = TRUE),
`1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
Median = median(tmedia, na.rm = TRUE),
Mean = mean(tmedia, na.rm = TRUE),
`3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
Max = max(tmedia, na.rm = TRUE))
print(estatisticas_cidade)
## # A tibble: 2 × 7
## cidade Min `1st Qu.` Median Mean `3rd Qu.` Max
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Grande 20.8 23.5 25.0 24.7 25.9 28.6
## 2 João Pessoa 24.0 26.8 27.8 27.7 28.6 30.1
estatisticas_cidade_verao <- climas %>%
filter(mes %in% c(1, 2)) %>%
group_by(cidade) %>%
summarise(Min = min(tmedia, na.rm = TRUE),
`1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
Median = median(tmedia, na.rm = TRUE),
Mean = mean(tmedia, na.rm = TRUE),
`3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
Max = max(tmedia, na.rm = TRUE))
print(estatisticas_cidade_verao)
## # A tibble: 2 × 7
## cidade Min `1st Qu.` Median Mean `3rd Qu.` Max
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Grande 23.0 25.3 25.9 25.9 26.5 28.0
## 2 João Pessoa 26.6 28.3 28.7 28.7 29.0 30.1
cidade_quente <- left_join(cidade_quente, cidade_quente_verao, by = "cidade")
cidade_quente_graf <- cidade_quente %>%
gather(key = "periodo", value = "tmedia", -cidade) %>%
ggplot(aes(x = cidade, y = tmedia, fill = periodo)) +
geom_bar(stat = "identity", position = "dodge", color = "black") +
geom_text(aes(label = round(tmedia, 1)), vjust = 1.8, position = position_dodge(0.9)) +
labs(x = "Cidade", y = "Temperatura Média",
title = "Comparação da Temperatura Média entre as Cidades") +
scale_fill_discrete(labels = c("Temperatura Média", "Temperatura Média no Verão")) +
theme_minimal()
print(cidade_quente_graf)
Com base nos resultados, podemos observar que João Pessoa é a cidade mais quente, tanto em termos de temperatura média anual quanto de temperatura média no verão. A temperatura média anual em João Pessoa é de 27.7°C, enquanto em Campina Grande é de 24.7°C. Durante o pico do verão (janeiro e fevereiro), a temperatura média aumenta para 28.7°C em João Pessoa e 25.9°C em Campina Grande.
A escolha da temperatura média como métrica é justificada pelo fato de que ela fornece uma medida geral do clima de uma cidade, levando em consideração tanto as altas quanto as baixas temperaturas.
climas = climas %>%
mutate(nome_mes = month(mes, label = TRUE))
temp_mes = climas %>%
group_by(cidade, nome_mes) %>%
summarise(temp_media_mes = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Listagem para cada cidade com as temperaturas ordenadas do maior para o menor
temp_mes_quentes = temp_mes %>%
arrange(cidade, desc(temp_media_mes))
# Listagem para cada cidade com as temperaturas ordenadas do menor para o maior
temp_mes_frios = temp_mes %>%
arrange(cidade, temp_media_mes)
# Separa a listagem de temperaturas quentes por cidade
temp_mes_quentes_cg = temp_mes_quentes %>%
filter(cidade == "Campina Grande")
temp_mes_quentes_jp = temp_mes_quentes %>%
filter(cidade == "João Pessoa")
# Separa a listagem de temperaturas frias por cidade
temp_mes_frios_cg = temp_mes_frios %>%
filter(cidade == "Campina Grande")
temp_mes_frios_jp = temp_mes_frios %>%
filter(cidade == "João Pessoa")
temp_mes_quentes_cg
## # A tibble: 12 × 3
## # Groups: cidade [1]
## cidade nome_mes temp_media_mes
## <chr> <ord> <dbl>
## 1 Campina Grande dez 25.9
## 2 Campina Grande fev 25.9
## 3 Campina Grande mar 25.9
## 4 Campina Grande jan 25.8
## 5 Campina Grande nov 25.7
## 6 Campina Grande abr 25.3
## 7 Campina Grande out 25.1
## 8 Campina Grande mai 24.3
## 9 Campina Grande set 24.0
## 10 Campina Grande jun 22.8
## 11 Campina Grande ago 22.7
## 12 Campina Grande jul 22.3
temp_mes_quentes_jp
## # A tibble: 12 × 3
## # Groups: cidade [1]
## cidade nome_mes temp_media_mes
## <chr> <ord> <dbl>
## 1 João Pessoa mar 28.8
## 2 João Pessoa fev 28.8
## 3 João Pessoa jan 28.5
## 4 João Pessoa dez 28.5
## 5 João Pessoa abr 28.3
## 6 João Pessoa nov 28.2
## 7 João Pessoa out 27.7
## 8 João Pessoa mai 27.6
## 9 João Pessoa set 27.0
## 10 João Pessoa jun 26.4
## 11 João Pessoa ago 26.2
## 12 João Pessoa jul 25.9
temp_mes_frios_cg
## # A tibble: 12 × 3
## # Groups: cidade [1]
## cidade nome_mes temp_media_mes
## <chr> <ord> <dbl>
## 1 Campina Grande jul 22.3
## 2 Campina Grande ago 22.7
## 3 Campina Grande jun 22.8
## 4 Campina Grande set 24.0
## 5 Campina Grande mai 24.3
## 6 Campina Grande out 25.1
## 7 Campina Grande abr 25.3
## 8 Campina Grande nov 25.7
## 9 Campina Grande jan 25.8
## 10 Campina Grande mar 25.9
## 11 Campina Grande fev 25.9
## 12 Campina Grande dez 25.9
temp_mes_frios_jp
## # A tibble: 12 × 3
## # Groups: cidade [1]
## cidade nome_mes temp_media_mes
## <chr> <ord> <dbl>
## 1 João Pessoa jul 25.9
## 2 João Pessoa ago 26.2
## 3 João Pessoa jun 26.4
## 4 João Pessoa set 27.0
## 5 João Pessoa mai 27.6
## 6 João Pessoa out 27.7
## 7 João Pessoa nov 28.2
## 8 João Pessoa abr 28.3
## 9 João Pessoa dez 28.5
## 10 João Pessoa jan 28.5
## 11 João Pessoa fev 28.8
## 12 João Pessoa mar 28.8
# Calculando as estatísticas para as festas juninas
estatisticas_juninas <- climas %>%
filter(mes == 6) %>%
group_by(cidade) %>%
summarise(Min = min(tmedia, na.rm = TRUE),
`1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
Median = median(tmedia, na.rm = TRUE),
Mean = mean(tmedia, na.rm = TRUE),
`3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
Max = max(tmedia, na.rm = TRUE))
print(estatisticas_juninas)
## # A tibble: 2 × 7
## cidade Min `1st Qu.` Median Mean `3rd Qu.` 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
climas_mes_cidade <- climas %>%
group_by(mes, cidade) %>%
summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'mes'. You can override using the `.groups`
## argument.
# Gerando o gráfico
graf_mes_cidade <- climas_mes_cidade %>%
ggplot(aes(x = mes, y = tmedia, color = cidade)) +
geom_line() +
geom_point() +
geom_text(aes(label = round(tmedia, 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",
title = "Temperatura Média por Mês e Cidade",
color = "Cidade") +
theme_minimal() +
theme(legend.position = "bottom")
print(graf_mes_cidade)
climas_ano_cidade <- climas %>%
group_by(ano, cidade) %>%
summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
# Gerando o gráfico
graf_ano_cidade <- climas_ano_cidade %>%
ggplot(aes(x = ano, y = tmedia, color = cidade)) +
geom_line() +
geom_point() +
geom_text(aes(label = round(tmedia, 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",
title = "Temperatura Média por Ano e Cidade",
color = "Cidade") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
legend.position = "bottom")
print(graf_ano_cidade)
theme_set(theme_gray())
Com base nos resultados, podemos observar que os meses mais quentes em Campina Grande são dezembro, fevereiro e março, enquanto em João Pessoa são março, fevereiro e janeiro. Por outro lado, os meses mais frios em Campina Grande são julho, agosto e junho, e em João Pessoa são julho, agosto e junho.
Durante as festas juninas (mês de junho), a temperatura média em Campina Grande é de 22.84°C, com uma mínima de 21.34°C e uma máxima de 24.85°C. Em João Pessoa, a temperatura média é um pouco mais alta, sendo 26.36°C, com uma mínima de 23.99°C e uma máxima de 28.28°C.
A escolha da temperatura média como métrica é justificada pelo fato de que ela fornece uma medida geral do clima de uma cidade, levando em consideração tanto as altas quanto as baixas temperaturas. Além disso, ao considerar a temperatura média por mês e por ano, podemos obter uma visão mais específica das condições climáticas durante diferentes períodos de tempo. Isso é particularmente relevante em regiões onde o clima varia significativamente ao longo do ano.
chuva_semanal = climas %>%
group_by(cidade, semana) %>%
summarise(chuva_total = sum(chuva, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Calculando a média, mediana, desvio padrão e variância da chuva semanal para cada cidade
chuva_semanal_stats <- chuva_semanal %>%
group_by(cidade) %>%
summarise(
media = mean(chuva_total, na.rm = TRUE),
mediana = median(chuva_total, na.rm = TRUE),
desvio_padrao = sd(chuva_total, na.rm = TRUE),
variancia = var(chuva_total, na.rm = TRUE)
)
chuva_semanal_stats
## # A tibble: 2 × 5
## cidade media mediana desvio_padrao variancia
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Grande 14.0 4.9 21.7 469.
## 2 João Pessoa 32.6 14.1 44.5 1978.
# Sumário dos dados de chuva semanal para cada cidade
chuva_semanal_sumario <- chuva_semanal %>%
group_by(cidade) %>%
summarise(
Min = min(chuva_total, na.rm = TRUE),
`1st Qu.` = quantile(chuva_total, 0.25, na.rm = TRUE),
Median = median(chuva_total, na.rm = TRUE),
Mean = mean(chuva_total, na.rm = TRUE),
`3rd Qu.` = quantile(chuva_total, 0.75, na.rm = TRUE),
Max = max(chuva_total, na.rm = TRUE)
)
chuva_semanal_sumario
## # A tibble: 2 × 7
## cidade Min `1st Qu.` Median Mean `3rd Qu.` Max
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina Grande 0 0.4 4.9 14.0 18.7 192.
## 2 João Pessoa 0 3 14.1 32.6 46.4 352.
# Boxplot para cada cidade
ggplot(chuva_semanal, aes(x = cidade, y = chuva_total)) +
geom_boxplot() +
labs(title = "Boxplot do volume de chuvas por semana em JP e CG",
x = "Cidade",
y = "Chuva total (mm)")
# Histograma para cada cidade
ggplot(chuva_semanal, aes(x = chuva_total, fill = cidade)) +
geom_histogram(bins = 30, alpha = 0.5, position = 'identity') +
labs(title = "Histograma do volume de chuvas por semana em JP e CG",
x = "Chuva total (mm)",
y = "Frequência",
fill = "Cidade")
# Gráfico de dispersão para cada cidade
ggplot(chuva_semanal, aes(x = semana, y = chuva_total)) +
geom_point(color = "#1F77B4") +
facet_grid(~cidade) +
labs(title = "Gráfico de dispersão do volume de chuvas por semana em JP e CG",
x = "Semana",
y = "Chuva total (mm)")
Com base nos resultados, podemos observar que a quantidade de chuva por semana varia significativamente entre as cidades de Campina Grande e João Pessoa.
Em média, João Pessoa recebe mais chuva por semana (32.65 mm) do que Campina Grande (13.99 mm). A mediana da chuva semanal também é maior em João Pessoa (14.1 mm) em comparação com Campina Grande (4.9 mm). Isso sugere que, em geral, João Pessoa tende a ter mais chuva semanalmente do que Campina Grande.
Além disso, a variância e o desvio padrão da chuva semanal são maiores em João Pessoa, indicando que a quantidade de chuva por semana em João Pessoa varia mais amplamente do que em Campina Grande.
# Calculando o coeficiente de correlação de Pearson
correlacao_pearson = climas %>%
group_by(cidade) %>%
summarise(correlacao = cor(temp_anterior, tmedia, method = "pearson", use = "pairwise.complete.obs"))
correlacao_pearson
## # A tibble: 2 × 2
## cidade correlacao
## <chr> <dbl>
## 1 Campina Grande 0.880
## 2 João Pessoa 0.859
# Calculando o coeficiente de correlação de Spearman
correlacao_spearman = climas %>%
group_by(cidade) %>%
summarise(correlacao = cor(temp_anterior, tmedia, method = "spearman", use = "pairwise.complete.obs"))
correlacao_spearman
## # A tibble: 2 × 2
## cidade correlacao
## <chr> <dbl>
## 1 Campina Grande 0.856
## 2 João Pessoa 0.860
# Calculando o coeficiente de correlação de Kendall
correlacao_kendall = climas %>%
group_by(cidade) %>%
summarise(correlacao = cor(temp_anterior, tmedia, method = "kendall", use = "pairwise.complete.obs"))
correlacao_kendall
## # A tibble: 2 × 2
## cidade correlacao
## <chr> <dbl>
## 1 Campina Grande 0.669
## 2 João Pessoa 0.683
temp_relacao <- climas %>%
ggplot(aes(x = temp_anterior, y = tmedia)) +
geom_point() +
geom_smooth(method = "lm") +
facet_wrap(~cidade) +
labs(title = "Relação entre a temperatura de uma semana e a semana anterior",
x = "Temperatura da semana anterior (°C)",
y = "Temperatura média da semana atual (°C)")
temp_relacao
## `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()`).
Com base nos resultados, podemos observar que existe uma forte correlação positiva entre a temperatura de uma semana e a temperatura da semana anterior 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 significativamente altos.
# 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'
# 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.