Para a presente análise, as perguntas respondidas são as de número 1 e 2, e a pergunta elaborada pela equipe será apresentada logo mais.
library(tidyverse)
library(here)
theme_set(theme_bw())
# SEMPRE read_csv NUNCA read.csv
clima_tudo = read_csv(
here("data/tempo-jp-cg-pt.csv"),
col_types = cols(
.default = col_double(),
cidade = col_character(),
semana = col_date(format = ""),
ano = col_integer(),
mes = col_integer()
)
)
clima = clima_tudo %>%
filter(ano == 2019)
clima %>%
slice(1:8)
## # A tibble: 8 x 11
## cidade semana temp_max temp_media temp_min vento_medio vento_max umidade
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina… 2019-01-06 32.1 25.6 19.6 3.57 4.6 74.9
## 2 Campina… 2019-01-13 33.5 27.1 20 3.29 4.5 69
## 3 Campina… 2019-01-20 33.3 26.7 19.6 4.01 6.5 72.5
## 4 Campina… 2019-01-27 32.4 26.4 19.6 3.53 5 75.0
## 5 Campina… 2019-02-03 32.2 25.3 19.5 2.95 4.8 83
## 6 Campina… 2019-02-10 31.1 25.6 20.1 3.17 5 84.1
## 7 Campina… 2019-02-17 31.6 25.9 20.5 2.89 4.1 79.2
## 8 Campina… 2019-02-24 31.1 25.9 20.5 3.63 4.8 76.8
## # … with 3 more variables: chuva <dbl>, ano <int>, mes <int>
Estudar e passar férias em Campina Grande podem ser experiências bem diferentes. Passar apenas um desses períodos na cidade pode significar, talvez, estar perdendo temperaturas mais altas ou mais baixas do que se está acostumado. Para descobrir se é realmente o caso, nossa análise se debruça sobre dados de temperatura média e chuva, analisando aspectos de […] sobre estes.
Para garantir que não estamos lidando com dados faltantes, é importante garantir se há a presença destes no nosso dataset.
sum(is.na(clima_tudo$temp_media))
## [1] 70
sum(is.na(clima_tudo$chuva))
## [1] 0
Agora sabendo que temos 70 dados faltantes em relação à temperatura média e nenhum em relação à chuva, é válido descobrir de quais anos esses dados faltantes se tratam.
clima_tudo %>%
group_by(ano) %>%
filter(is.na(temp_media)) %>%
count(ano)
## # A tibble: 4 x 2
## # Groups: ano [4]
## ano n
## <int> <int>
## 1 2016 1
## 2 2017 2
## 3 2020 41
## 4 2021 26
Considerando que os dados faltantes se concentram nos anos de 2020 e 2021, estes não serão incluídos na nossa análise. 2016 e 2017 seguirão inclusos, pois a falta de dados não afeta consideravelmente a nossa análise.
clima_temp <- clima_tudo %>%
filter(ano <= 2019, ano >= 2010, !is.na(temp_max))
Para entender como a temperatura média se distribui por mês, temos o gráfico de pontos apresentado a seguir, em que os pontos vermelhos em destaque se tratam da mediana dessas temperaturas médias registradas por mês ao longo dos anos.
clima_temp %>%
filter(cidade == "Campina Grande") %>%
ggplot(aes(y = reorder(mes, mes), x = temp_media)) +
geom_jitter(height = .1, color = "turquoise4", alpha = 0.7) +
stat_summary(geom = "point", color = "red", size = 4, fun = median) +
labs(
x = "Temperatura média (°C)",
y = "Meses",
title = "Distribuição da temperatura média por mês ao longo dos anos"
)
Seguindo a mesma lógica, geramos um gráfico de pontos em relação ao registro de chuvas, também com a mediana desses registros apresentada em destaque.
clima_temp %>%
filter(cidade == "Campina Grande") %>%
ggplot(aes(y = reorder(mes, mes), x = chuva)) +
geom_jitter(height = .1, color = "turquoise4", alpha = 0.7) +
stat_summary(geom = "point", color = "red", size = 4, fun = median) +
labs(
x = "Chuva (mm)",
y = "Meses",
title = "Distribuição da chuva por mês ao longo dos anos"
)
A partir dessas visualizações é notável que tanto em relação à temperatura quanto às chuvas, o período das férias de inverno (que seria entre os meses 6 e 7, a depender do calendário da UFCG) é o que mais sofre de baixas temperaturas e chuvas, sendo assimétrico em ambos os gráficos e com a presença de pontos extremos na ocorrência de chuvas, ocasionando em verdadeiros torós na cidade. Com exceção desses pontos extremos, a cidade se concentra com pouca ocorrência de chuvas ao longo de todo ano, então tanto no período de férias quanto de aulas dificilmente se vai pegar uma chuva ao sair de casa para uma festinha ou para a aula. Passar as férias de inverno em Campina pode ser bastante agradável, para quem pretende passar o dia agasalhado aproveitando o friozinho.
Já as férias de verão, que seriam por volta dos meses de Janeiro e Fevereiro, não são muito surpreendentes nas temperaturas e nas chuvas em relação ao período de aulas, mantendo-se por vários meses na mesma faixa.
Agora vamos visualizar como se distribuiu as chuvas nas três cidades durante o período de 2010 a 2019, em que usamos os mesmos dados filtrados por haver dados faltantes de chuva durante os anos de 2020 e 2021.
sumarios = clima_temp %>%
group_by(cidade) %>%
summarise(chuva_max = max(chuva),
chuva_min = min(chuva),
chuva_50perc = quantile(chuva, .5),
.groups = "drop")
TAMANHO = 2.5
clima_temp %>%
ggplot(aes(y = cidade, x = chuva)) +
geom_jitter(height = .1, alpha = .3, color = "turquoise4") +
geom_point(data = sumarios, aes(x = chuva_max), size = TAMANHO, color = "darkblue") +
geom_point(data = sumarios, aes(x = chuva_50perc), size = TAMANHO, color = "red") +
labs(
y = "Cidade",
x = "Chuva (mm)"
)
No gráfico acima, é possível visualizar a distribuição total das chuvas das três cidades ao longo dos anos, a semana em que houve mais incidência de chuva e um ponto percentil de 50%. A partir desse percentil, podemos observar que a distribuição nas três cidades é assimétrica e não temos grande incidência de chuva em nenhuma delas, havendo então uma grande concentração de dados na faixa 0. Porém, dentre as três observadas, João Pessoa é a que apresenta a maior incidência.
clima_temp %>%
group_by(cidade) %>%
count(choveu = chuva == 0) %>%
mutate(diff = lag(n) - n) %>%
filter(!is.na(diff)) %>%
ggplot(mapping = aes(y = reorder(cidade, diff), x = diff)) +
geom_point(size = 4, color = "darkblue") +
labs(
y = "Cidade",
x = "Diferença entre semanas com chuva e semanas sem chuva entre 2010 e 2019"
)
A partir da visualização acima, podemos “comprovar” a liderança de João Pessoa, pois é ilustrada a diferença entre semanas com chuva e sem chuva nas três cidades durante o período. Patos tem a menor diferença dos casos, resultado esse já esperado, pois era a cidade com menor incidência de chuvas dentre as três. Já João Pessoa tem a maior diferença, o que indica que houve bem mais semanas com chuva do que sem.
Para a pergunta elaborada pela equipe, nós buscamos entender a seguinte questão: Como se compara a umidade entre as 3 cidades nos meses de verão e nos meses de inverno? Qual cidade é mais seca no verão e qual é mais úmida no inverno?
Novamente há a necessidade de garantir que não há dados faltantes no nosso dataset, então tratamos de checar isso em relação à umidade.
sum(is.na(clima_tudo$umidade))
## [1] 70
Havendo 70 dados faltantes em relação à umidade, agora temos de entender em quais anos esses dados se encontram faltando.
clima_tudo %>%
group_by(ano) %>%
filter(is.na(umidade)) %>%
count(ano)
## # A tibble: 4 x 2
## # Groups: ano [4]
## ano n
## <int> <int>
## 1 2016 1
## 2 2017 2
## 3 2020 41
## 4 2021 26
Mais uma vez realizamos a limpeza necessária, desconsiderando os anos de 2020 e 2021, porém ainda mantendo os anos de 2016 e 2017. Em seguida, agrupamos os dados por cidade e mês, considerando os meses 1 e 2 (Janeiro e Fevereiro) como o período de verão e os meses 6 e 7 (Junho e Julho) como o período de inverno.
clima_temp <- clima_tudo %>%
filter(ano <= 2019, ano >= 2010, !is.na(umidade))
verao <- clima_temp %>%
filter(mes <= 2) %>%
group_by(cidade, mes) %>%
select(cidade, mes, umidade, ano)
verao
## # A tibble: 254 x 4
## # Groups: cidade, mes [6]
## cidade mes umidade ano
## <chr> <int> <dbl> <int>
## 1 Campina Grande 1 76.2 2010
## 2 Campina Grande 1 76.0 2010
## 3 Campina Grande 1 85.3 2010
## 4 Campina Grande 1 77.8 2010
## 5 Campina Grande 1 76.0 2010
## 6 Campina Grande 2 77.8 2010
## 7 Campina Grande 2 80.4 2010
## 8 Campina Grande 2 76.0 2010
## 9 Campina Grande 2 71 2010
## 10 Campina Grande 1 74.8 2011
## # … with 244 more rows
Para responder à nossa pergunta relacionada tanto ao verão quanto ao inverno, geramos scatterplots com a distribuição da umidade ao longo dos respectivos meses dessas estações do ano, considerando também a mediana desses registros de umidade média por semana.
verao %>%
ggplot(aes(y = reorder(cidade, umidade), x = umidade)) +
geom_jitter(height = .1, color = "salmon", alpha = 0.7) +
stat_summary(geom = "point", color = "royalblue4", size = 4, fun = median) +
labs(
x = "Umidade média por semana (%)",
y = "Cidade",
title = "Distribuição da umidade por cidade nos meses de verão"
)
Diante do gráfico apresentado é possível perceber que a distribuição de umidade ao longo dos anos nos períodos mais quentes do ano é, de certa forma, simétrica, tendo em vista que a mediana das três cidades está localizada de maneira relativamente centralizada. Também a partir dessa visualização pode-se afirmar que Patos é a cidade que mais destoa das demais e a que tem, claramente, o verão mais seco.
inverno <- clima_temp %>%
filter(mes %in% c(6,7)) %>%
group_by(cidade, mes) %>%
select(cidade, mes, umidade, ano)
inverno
## # A tibble: 264 x 4
## # Groups: cidade, mes [6]
## cidade mes umidade ano
## <chr> <int> <dbl> <int>
## 1 Campina Grande 6 76.8 2010
## 2 Campina Grande 6 89.1 2010
## 3 Campina Grande 6 82.2 2010
## 4 Campina Grande 6 84.0 2010
## 5 Campina Grande 7 84.5 2010
## 6 Campina Grande 7 87.6 2010
## 7 Campina Grande 7 82.1 2010
## 8 Campina Grande 7 86.3 2010
## 9 Campina Grande 6 86.5 2011
## 10 Campina Grande 6 88.4 2011
## # … with 254 more rows
inverno %>%
ggplot(aes(y = reorder(cidade, umidade), x = umidade)) +
geom_jitter(height = .1, color = "steelblue", alpha = 0.7) +
stat_summary(geom = "point", color = "red", size = 4, fun = median) +
labs(
x = "Umidade média por semana (%)",
y = "Cidade",
title = "Distribuição da umidade por cidade nos meses de inverno"
)
Agora, em relação aos meses de inverno, é possível perceber que as três cidades continuam apresentando distribuições consideravelmente simétricas, com ressalva para a cidade de João Pessoa, que diverge mais desse padrão visto. Enquanto a mediada da umidade de Patos e João Pessoa parecem variar pouco do verão para o inverno, Campina sofre um aumento de quase 10% em sua umidade. É interessante perceber que Patos mesmo no inverno é bem mais seca que Campina Grande no verão, mostrando a grande diferença de umidade entre as duas cidades.
Para entender de fato como ocorre essa variação de umidade nos períodos de verão e inverno, geramos uma visualização com um gráfico de linhas.
verao_amplitude <- verao %>%
group_by(cidade, ano) %>%
summarise(amplitude = max(umidade, na.rm = TRUE) - min(umidade, na.rm = TRUE),
.groups = "drop")
verao_amplitude %>%
ggplot(aes(x = ano, y = amplitude, color = cidade)) +
geom_point() +
geom_line() +
scale_x_continuous(breaks=c(2010,2011,2012,2013,2014,2015,2016,2017,2018,2019)) +
labs(
x = "Ano",
y = "Amplitude",
color = "Cidade",
title = "Variação da umidade nos meses de verão"
)
inverno_amplitude <- inverno %>%
group_by(cidade, ano) %>%
summarise(amplitude = max(umidade, na.rm = TRUE) - min(umidade, na.rm = TRUE),
.groups = "drop")
inverno_amplitude %>%
ggplot(aes(x = ano, y = amplitude, color = cidade)) +
geom_point() +
geom_line() +
scale_x_continuous(breaks=c(2010,2011,2012,2013,2014,2015,2016,2017,2018,2019)) +
labs(
x = "Ano",
y = "Amplitude",
color = "Cidade",
title = "Variação da umidade nos meses de inverno"
)
Através dos dois gráficos, tanto em relação ao verão quanto ao inverno, é possível perceber que há uma grande variação de umidade anualmente e também em relação de um ano para outro. A variação é mais baixa em João Pessoa no verão, onde os números se mantém abaixo de 15. Essa variação, no entanto, é mais baixa no inverno em Campina Grande, em que se mantém também abaixo de 15, com exceção do ano de 2019, que sofreu um salto de quase 100% (o que possa ter, talvez, um ruído nos dados a ser investigado).