library(tidyverse)
library(here)
library(lubridate)
library(ggbeeswarm)
library(hrbrthemes)
library(ggchicklet)
library(e1071)
library(kableExtra)
theme_set(theme_ipsum_ps())Os dados utilizados neste relatório são refentes à medições semanais de temperatura e volume de chuvas para os municípios de Campina Grande e João Pessoa, disponibilzados pelo Instituto Nacional de Metereologia (INMET) e coletados através do pacote inmetr.
Vejamos, inicialmente, como se comportam os dados das temperaturas médias para cada cidade.
climas %>%
ggplot(aes(x = tmedia,
fill = cidade)) +
geom_density() +
guides(fill = F) +
scale_fill_manual(values = c("royalblue", "tomato")) +
facet_grid(~cidade)É possível identificar pequenas “caudas” nas distribuições para cada cidade, indicando assimetria nas distribuições. Essa assimetria pode ser quantificada, como podemos verificar na tabela a seguir.
assimetria_cg <- climas %>% filter(cidade == 'Campina Grande') %>% pull(tmedia) %>% skewness() %>% round(., 3)
assimetria_jp <- climas %>% filter(cidade == 'João Pessoa') %>% pull(tmedia) %>% skewness() %>% round(., 3)
assimetria_geral <- climas %>% pull(tmedia) %>% skewness() %>% round(., 3)
assimetrias_df <- tibble(`Cidade` = c('Campina Grande', 'João Pessoa'),
`Assimetria` = c(assimetria_cg, assimetria_jp))
assimetrias_df %>%
kable(align = 'c') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'responsive'))| Cidade | Assimetria |
|---|---|
| Campina Grande | -0.385 |
| João Pessoa | -0.373 |
Por estarem entre -0.5 e 0.5, verificamos que as distribuições para cada cidade são moderadamente simétricas. A assimetria, considerando as temperaturas médias como um todo, é de -0.466, no mesmo intervalo que a assimetria específica para cada cidade. Desta forma, podemos utilizar a média como medida de tendência central para responder à pergunta.
climas %>%
group_by(cidade) %>%
summarise(media_max = mean(tmedia)) %>%
ggplot(aes(x = cidade,
y = media_max,
label = paste(round(media_max, 2), "ºC"))) +
geom_point(size = 3) +
geom_segment(aes(x = cidade,
xend = cidade,
y = 0,
yend = media_max)) +
geom_text(position = position_stack(vjust = 1.1)) +
labs(title = "Temperatura média por cidade",
x = "Cidade",
y = "Temperatura (ºC)")A cidade mais quente, ou seja, com a temperatura média mais alta, é a cidade de João Pessoa.
temperatura.labs <- c("Máxima", "Média")
names(temperatura.labs) <- c("tmax", "tmedia")
climas %>%
gather(temperatura,
valor,
tmax,
tmedia) %>%
ggplot(aes(x = valor,
fill = cidade)) +
geom_density() +
facet_wrap(temperatura ~ cidade,
labeller = labeller(temperatura = temperatura.labs)) +
guides(fill = F) +
labs(subtitle = 'Temperaturas médias e máximas por cidade',
x = 'Temperatura (ªC)',
y = 'Densidade') +
scale_fill_manual(values = c("royalblue", "tomato"))As temperaturas médias e máximas semanais diferem, por cidade, tanto em relação a assimetria da distribuição quanto ao intervalo onde os valores mais frequentes estão concentrados. Essas assimetrias estão quantificadas na tabela a seguir.
climas %>%
group_by(cidade) %>%
summarise(`Assimetria - tmax` = round(skewness(tmax), 3),
`Assimetria - tmedia` = round(skewness(tmedia), 3)) %>%
kable(align = 'c') %>%
kable_styling(bootstrap_options = c('striped', 'hover', 'responsive'))| cidade | Assimetria - tmax | Assimetria - tmedia |
|---|---|---|
| Campina Grande | -0.375 | -0.385 |
| João Pessoa | 0.043 | -0.373 |
Pelos valores de assimetria, todas as distribuições podem sem classificadas como moderadamente simétricas, já que todos estão no intervalo entre -0.5 e 0.5. Podemos ver, inclusive, que a assimetria para as temperaturas máximas de João Pessoa é próxima a 0.
climas %>%
ggplot(aes(x = month.abb[mes],
y = tmedia,
fill = cidade)) +
geom_boxplot() +
scale_x_discrete(limits = month.abb) +
scale_fill_manual(values = c("royalblue", "tomato")) +
facet_grid(~cidade) +
guides(fill = F) +
labs(subtitle = "Temperaturas médias por mês",
x = "Mês",
y = "Temperatura (ºC)")Os meses mais quentes são os meses de Fevereiro e Março, e os mais frios os de Junho, Julho e Agosto.
minimas_sj <- climas %>%
filter(cidade == 'Campina Grande',
mes == 6) %>%
group_by(ano) %>%
summarise(temperatura = mean(tmin)) %>%
mutate(minimo = if_else(ano == 2008, T, F),
label_min = if_else(ano == 2008, paste(temperatura, 'ºC'), ''))
minimas_sj %>%
ggplot(aes(x = reorder(ano, -temperatura),
y = temperatura,
colour = minimo,
label = label_min)) +
geom_point(size = 3) +
geom_segment(aes(x = reorder(ano, -temperatura),
xend = reorder(ano, -temperatura),
y = 0,
yend = temperatura)) +
geom_text(position = position_nudge(y = 1.5)) +
scale_color_manual(values = c('grey', 'royalblue')) +
guides(colour = F) +
labs(subtitle = "Média das temperaturas mínimas durante o mês de Junho",
y = "Temperatura (ºC)",
x = "Ano") +
coord_flip() O São João mais frio, de acordo com os dados, foi o de 2008, cuja temperatura mínima foi, em média, 17.24 ºC.
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 %>%
ggplot(aes(x = chuva,
fill = cidade)) +
geom_density() +
facet_wrap(~cidade,
nrow = 2) +
guides(fill = F) +
scale_fill_manual(values = c("royalblue", "tomato")) +
labs(subtitle = "Distribuição do volume de chuvas",
x = "Volume de chuvas (mm)",
y = "Densidade")A distribuição do volume de chuvas é assimétrica à direita para ambas as cidades, e varia menos que a temperatura. Em ambas as distribuições os valores mais frequentes concentram-se em intervalos semelhantes, e diferem dos formatos das distribuições de temperatura, principalmente pelo intervalo onde os valores mais frequentes estão concentratos.
climas %>%
group_by(cidade) %>%
summarise(mediana = median(chuva)) %>%
ggplot(aes(x = cidade,
y = mediana,
fill = cidade,
label = paste(round(mediana, 2), "mm"))) +
geom_chicklet(width = .5) +
geom_text(position = position_nudge(y = 1)) +
scale_fill_manual(values = c("royalblue", "tomato")) +
guides(fill = F) +
labs(subtitle = "Volume de chuva geral por cidade",
x = "Cidade",
y = "Volume de chuvas (mm)")Utilizando a mediana como medida de tendência central, dada a assimetria das distribuições dos valores de chuva, a cidade onde mais chove é João Pessoa.
climas %>%
ggplot(aes(x = month.abb[mes],
y = chuva,
fill = cidade)) +
geom_boxplot() +
scale_x_discrete(limits = month.abb) +
facet_wrap(~cidade) +
scale_fill_manual(values = c("royalblue", "tomato")) +
guides(fill = F) +
labs(subtitle = "Distribuição do volume de chuvas por mês",
x = "Mês",
y = "Volume de chuva (mm)")Sim. É possível verificar o volume baixo de chuvas durante os meses de Setembro até Janeiro em Campina Grande, e de Outubro até Dezembro em João Pessoa.