Nesta análise avaliaremos dados de temperatura e precipitação. Os dados se referem às cidades de João Pessoa (capital da Paraíba), e Campina Grande (centro regional na Paraíba). Os dados englobam o período indo de 1989 até 2019.
library(here)
library(lubridate)
library(ggbeeswarm)
library(tidyverse)
theme_set(theme_bw())
read_csv(here::here("data/clima_cg_jp-semanal.csv"),
col_types = "cTdddddd") -> climas
climas %>%
glimpse()
## Observations: 2,748
## Variables: 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, 1…
## $ 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.…
## $ 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, 19…
climas %>%
ggplot(aes(tmax, ..density..,
group=cidade,
fill=cidade)) +
geom_histogram(binwidth = 0.25,
color="black",
alpha=.4,
position="identity") +
scale_x_continuous(breaks = seq(0, max(climas$tmax) + 5, 1)) +
labs(x="Temperatura Máxima (°C)", y="Densidade de Frequência")
climas %>%
ggplot(aes(tmin, ..density..,
group=cidade,
fill=cidade)) +
geom_histogram(binwidth = 0.5,
color="black",
alpha=.4,
position="identity") +
scale_x_continuous(breaks = seq(0, max(climas$tmin) + 5, 1)) +
labs(x="Temperatura Minima (°C)", y="Densidade de Frequência")
climas %>%
ggplot(aes(tmedia, ..density..,
group=cidade,
fill=cidade)) +
geom_histogram(binwidth = 0.5,
color="black",
alpha=.4,
position="identity") +
scale_x_continuous(breaks = seq(0, max(climas$tmedia) + 5, 1)) +
labs(x="Temperatura Média (°C)", y="Densidade de Frequência")
Em geral, podemos dizer que João Pessoa é mais quente que Campina Grande.
climas %>%
select(tmax, tmedia, semana, cidade) %>%
pivot_longer(c("tmax", "tmedia"),
names_to = "metric") %>%
ggplot(aes(value, ..density..,
group=metric,
fill=metric)) +
geom_histogram(binwidth = .5,
color="black",
alpha=.4,
position="identity") +
facet_wrap(~ cidade) +
scale_x_continuous(breaks = round(seq(20,
max(climas$tmax),
1), 1)) +
labs(x = "Temperatura (°Celsius)", y="Densidade de Frequência") +
coord_flip()
Em termos de curva as máximas se distribuem similarmente às médias, porém em uma escala mais alta
climas %>%
mutate(month = month(semana)) %>%
mutate(month = as.factor(month))%>%
ggplot(aes(month, tmedia)) +
geom_boxplot() +
facet_wrap(~ cidade) +
labs(x="Mês do Ano", y="Temperatura Média (°C)")
climas %>%
mutate(month = month(semana)) %>%
mutate(month = as.factor(month)) %>%
filter(month %in% c(1, 2, 3, 11, 12)) %>%
ggplot(aes(month, tmedia)) +
geom_boxplot() +
facet_wrap(~ cidade) +
labs(x="Mês do Ano", y="Temperatura Média (°C)")
Em Campina Grande:
Os valores mais altos estão no mês 3, assim os dias mais quentes do período aconteceram em Março.
Em João Pessoa:
Os valores mais altos estão no mês 2, assim o dias mais quentes do período aconteceu em Fevereiro.
climas %>%
mutate(month = month(semana)) %>%
mutate(month = as.factor(month)) %>%
filter(month %in% c(6, 7, 8)) %>%
ggplot(aes(month, tmedia)) +
geom_boxplot() +
facet_wrap(~ cidade) +
labs(x="Mês do Ano", y="Temperatura Média (°C)")
climas %>%
filter(cidade == "Campina Grande") %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) -> climas_sj
climas_sj %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
group_by(ano) %>%
summarise(median_tmin = median(tmin)) %>%
ungroup() %>%
inner_join(climas_sj, by= c("ano")) %>%
ggplot(aes(reorder(ano, median_tmin), tmin)) +
geom_boxplot() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(x="Ano", y="Temperatura Mínima (°C)")
climas_sj %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
group_by(ano) %>%
summarise(median_tmax = median(tmax)) %>%
ungroup() %>%
inner_join(climas_sj, by= c("ano")) %>%
ggplot(aes(reorder(ano,median_tmax), tmax)) +
geom_boxplot() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(x="Ano", y="Temperatura Máxima (°C)")
climas_sj %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
group_by(ano) %>%
summarise(median_tmedia = median(tmedia)) %>%
ungroup() %>%
inner_join(climas_sj, by= c("ano")) %>%
ggplot(aes(reorder(ano,median_tmedia), tmedia)) +
geom_boxplot() +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
labs(x="Ano", y="Temperatura Média (°C)")
climas %>%
filter(cidade == "Campina Grande") %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
filter(ano %in% c(2003, 2004, 2008, 2018)) %>%
ggplot(aes(x=tmin, fill=ano)) +
geom_density(alpha=.4) +
labs(x = "Temperatura Mínima (°C)", y="Densidade de Frequência")
climas %>%
filter(cidade == "Campina Grande") %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
filter(ano %in% c(2003, 2004, 2008, 2018)) %>%
ggplot(aes(x=tmax, fill=ano)) +
geom_density(alpha=.4) +
labs(x = "Temperatura Máxima (°C)", y="Densidade de Frequência")
climas %>%
filter(cidade == "Campina Grande") %>%
mutate(month = month(semana),
day = day(semana)) %>%
filter((day <= 8 & month == 7) |
(month == 6)) %>%
mutate(month = as.factor(month),
day = as.factor(day),
ano = as.factor(ano)) %>%
filter(ano %in% c(2003, 2004, 2008, 2018)) %>%
ggplot(aes(x=tmedia, fill=ano)) +
geom_density(alpha=.4) +
labs(x = "Temperatura Média (°C)", y="Densidade de Frequência")
Se avaliarmos apenas temperaturas mínimas 2018 seria o ano mais frio. Se levarmos as três métricas em consideração 2014 seria o melhor candidato para ano do São João mais frio
Como é a distribuição do volume de chuvas por semana em JP e CG? A chuva varia mais ou menos que a temperatura? O formato da distribuição é igual?
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano) %>%
summarise(num = n()) %>%
ungroup() %$%
num %>%
unique()
## [1] 1 2
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_tmin = mean(tmin),
mean_tmax = mean(tmax),
mean_tmedia = mean(tmedia),
mean_chuva = mean(chuva)) %>%
ungroup() %>%
mutate(mean_tmin = scale(mean_tmin), # applying z-score
mean_tmax = scale(mean_tmax),
mean_tmedia = scale(mean_tmedia),
mean_chuva = scale(mean_chuva)) %>%
pivot_longer(c("mean_tmax", "mean_tmedia",
"mean_chuva", "mean_tmin"),
names_to = "metric") %>%
ggplot(aes(x=value, fill=metric)) +
geom_density(alpha=.4) +
facet_wrap(~ cidade)
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_tmin = mean(tmin),
mean_tmax = mean(tmax),
mean_tmedia = mean(tmedia),
mean_chuva = mean(chuva)) %>%
ungroup() %>%
mutate(mean_tmin = scale(mean_tmin), # applying z-score
mean_tmax = scale(mean_tmax),
mean_tmedia = scale(mean_tmedia),
mean_chuva = scale(mean_chuva)) %>%
pivot_longer(c("mean_tmax", "mean_tmedia",
"mean_chuva", "mean_tmin"),
names_to = "metric") %>%
ggplot(aes(x=metric, y=value)) +
geom_boxplot() +
facet_wrap(~ cidade) +
labs(x="", y="z-score") +
coord_flip()
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_chuva = mean(chuva)) %>%
ungroup() %>%
ggplot(aes(mean_chuva, (..count..)/sum(..count..),
group=cidade,
fill=cidade)) +
geom_histogram(binwidth = 10,
color="black",
position="dodge2") +
scale_x_continuous(breaks = seq(0, 500, 20)) +
coord_flip() +
labs(x="Chuva média semanal", y="Frequência Relativa")
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_chuva = mean(chuva)) %>%
ungroup() %>%
ggplot(aes(x=mean_chuva, color=cidade)) +
stat_ecdf(geom = "step") +
labs(x="Chuva média semanal", y="Frequência Relativa") +
scale_x_continuous(breaks = seq(0, 500, 25)) +
coord_flip()
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_chuva = mean(chuva)) %>%
ungroup() %>%
ggplot(aes(mean_chuva, x=cidade,
fill=cidade)) +
geom_boxplot() +
scale_y_continuous(breaks = seq(0, 500, 20)) +
labs(x="Chuva média semanal", y="Frequência Relativa")
climas %>%
mutate(week_in_year = week(semana)) %>%
group_by(week_in_year, ano, cidade) %>%
summarise(mean_chuva = mean(chuva)) %>%
ungroup() %>%
ggplot(aes(mean_chuva, (..count..)/sum(..count..),
group=cidade,
fill=cidade)) +
geom_histogram(binwidth = 10, position = "dodge2") +
labs(x="Chuva média semanal", y="Frequência Relativa")
climas %>%
ggplot(aes(cidade, chuva)) +
geom_boxplot() +
labs(x="Cidade", y="Nível de precipitação")
climas %>%
ggplot(aes(x=chuva, fill=cidade)) +
geom_density(alpha=.4) +
labs(y="Densidade de Frequência", x="Nível de precipitação")
climas %>%
mutate(month = month(semana),
week_in_year = week(semana)) %>%
group_by(week_in_year, ano, month, cidade) %>%
summarise(mean_chuva = mean(chuva)) %>%
ungroup() %>%
group_by(ano, month, cidade) %>%
summarise(mean_chuva = mean(mean_chuva)) %>%
ungroup() %>%
mutate(month = as.factor(month)) %>%
ggplot(aes(month, mean_chuva, fill=cidade)) +
geom_boxplot() +
labs(x="Mês do ano", y="Chuva média semanal")