library(tidyverse)
library(here)
library(gridExtra)
library(grid)
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()
)
)
Para essas analises usaremos dados obtidos do BDMEP. A partir disso, extraimos os dados das 3 cidades durante o periodo de 2010 até atualidade.
Alguns dados extraídos que iremos referenciar durante a análise são:
Cidade: cidade da medição feita.
Semana: O primeiro dia da semana à qual a medição se refere.
Temperatura Média: A média das temperaturas médias diárias da semana, em Celsius.
Umidade: Média da umidade diária na semana, em %.
Como polo universitário, Campina Grande se destaca por ter, além de otimos cursos, um custo de vida baixo e sediar um dos maiores São Joãos do mundo. Mas será quem além disso, o clima campinense também poderia ajudar na escolha dos novos universitários? é isso que iremos analisar nesse relatório.
clima_cg = clima_tudo %>%
filter(cidade == 'Campina Grande', ano > 2009)
glimpse(clima_cg)
## Rows: 600
## Columns: 11
## $ cidade <chr> "Campina Grande", "Campina Grande", "Campina Grande", "Cam…
## $ semana <date> 2010-01-03, 2010-01-10, 2010-01-17, 2010-01-24, 2010-01-3…
## $ temp_max <dbl> 31.4, 32.1, 31.0, 31.2, 32.1, 32.2, 31.3, 32.9, 34.1, 34.6…
## $ temp_media <dbl> 25.53333, 25.60952, 24.20952, 26.06190, 26.02381, 26.04286…
## $ temp_min <dbl> 21.2, 21.3, 20.5, 21.2, 21.4, 20.4, 21.5, 22.1, 22.0, 21.9…
## $ vento_medio <dbl> 4.080952, 3.952381, 2.860000, 3.690476, 3.971429, 3.404762…
## $ vento_max <dbl> 5.3, 6.6, 5.0, 5.5, 6.5, 6.3, 5.5, 5.5, 4.0, 5.0, 7.8, 5.6…
## $ umidade <dbl> 76.23810, 75.95238, 85.33333, 77.80952, 76.04762, 77.76190…
## $ chuva <dbl> 4.7, 0.2, 69.3, 3.8, 1.2, 10.9, 2.5, 0.0, 0.0, 0.0, 0.2, 1…
## $ ano <int> 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010…
## $ mes <int> 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5…
Para iniciar o relatório, iremos analisar a média das temperaturas durante a semana no periodo de 2010 até 2021.
clima_cg %>%
ggplot(aes(x = temp_media)) +
facet_wrap(~ ano)+
geom_histogram(binwidth = .5, fill = "coral", color = "black") +
xlab("Temperatura média semanal") +
geom_rug()
## Warning: Removed 3 rows containing non-finite values (stat_bin).
Ao analisarmos o grafico de temperatura média semanal, podemos identificar a presença, em maior escala, de temperaturas no intervalo de 22° a 26°, com uma maior frequência em 26°.
Porém, além da temperatura, outra variavel que influência um bom clima é a umidade, e é isso que vamos analisar agora.
clima_cg %>%
ggplot(aes(x = mes, y = umidade)) +
facet_wrap(~ ano)+
scale_x_continuous(breaks=seq(1, 12, 1)) +
geom_point(color = "blue")
## Warning: Removed 3 rows containing missing values (geom_point).
Analisando o grafico acima, podemos observar que a umidade de campina Grande no decorrer do ano fica entre 60% e 80%, com exceção dos meses de junho e julho, que ultrapassam os 80% e chegando proximo dos 90%. Segundo a OMS, a umidade relativa do ar ideal para saúde é entre 50% e 80%, com o seu ideal a 60%. Mostrando que Campina Grande possui uma otima umidade para se conviver. Em adição a isso, nossos periodos de maior umidade são durante a execução do maior São João do mundo e os feriados acadêmicos, o que nos faz perguntar: como será o clima no periodo de ferias nas universidades?
Durante essa analise, procuramos utilizar meses fixos, logo periodos que foram desorganizados por algum motivo pode acabar alterando os periodos de ferias. Para essa analise, escolhemos os meses de Janeiro, Fevereiro, Julho e dezembro como os periodos de ferias, uma vez que eles são os meses com maior frequência de ferias na Universidade Federal de Campina Grande (UFCG).
Para começaemos essa análise sobre o clima do feriado universitário em Campina Grande, vamos começar com uma comparação da temperatura média dos meses de feriado com os do periodo letivo.
clima_cg %>%
ggplot(aes(x = mes, y = temp_media, col = ifelse(mes == 1 | mes == 2 | mes == 7 | mes == 12,'Feriado','Periodo Letivo'))) +
xlab("Mês") +
ylab("Temperatura média") +
labs(colour="Periodos do Ano") +
scale_x_continuous(breaks=seq(1, 12, 1)) +
geom_jitter(alpha= .7, width = .2)
## Warning: Removed 3 rows containing missing values (geom_point).
Com base na análise acima podemos observar que os feriados do começo e do fim do ano se assemelham com o do periodo letivo em sua temperatura média, podendo até ter temperaturas mais elevadas. Porém, a análise também destaca o mês de julho, o feriado do meio do ano, como o mês com a menor temperatura média dentre todos os outros.
para essa proxima análise, vamos observar a umidade nos periodos de feriado campinense.
clima_cg %>%
ggplot(aes(x = mes, y = umidade , col = ifelse(mes == 1 | mes == 2 | mes == 7 | mes == 12,'Feriado','Periodo Letivo'))) +
xlab("Mês") +
ylab("% de umidade") +
labs(colour="Periodos do Ano") +
scale_x_continuous(breaks=seq(1, 12, 1)) +
#geom_point() +
geom_jitter(alpha= .7, width = .2)
## Warning: Removed 3 rows containing missing values (geom_point).
Com essa análise podemos ver que os periodos de menor umidade vão de encontro com os periodos das férias de começo e fim do ano. Em contrapartida o periodo de maior umidade é no periodo de férias de julho, como informado anteriormente.
Após uma análise da umidade, se faz necessária uma análise da precipitações de chuva, uma vez que a alta quantidade de vapor de água na atmosfera favorece a ocorrência de chuvas
clima_cg %>%
ggplot(aes(x = mes, y = chuva , col = ifelse(mes == 1 | mes == 2 | mes == 7 | mes == 12,'Feriado','Periodo Letivo'))) +
xlab("Mês") +
ylab("Precipitação") +
labs(colour="Periodos do Ano") +
scale_x_continuous(breaks=seq(1, 12, 1)) +
facet_wrap(~ ano) +
geom_point()
Com os dados acima, podemos ver que mesmo com uma umidade acima de média, o periodo de férias de julho possui uma precipitação similar as dos meses de periodo letivo. A análise também mostra um leve espelhamento nos meses de junho e julho, o que significa que geralmente se chove no São João pode ser que ocorram chuvas no seu periodo de férias.
Com as análises feitas, observamos que:
Com esses pontos, podemos concluir que mesmo os feriados de começo e fim de ano sejam um pouco mais quente e menos umido que todo o periodo letivo, o periodo de férias de julho é mais frio e mais umido, o que é um clima perfeito para descansar entre um periodo e outro e até mesmo um São João que ocorre em Junho.
Vamos investigar agora quais são os meses mais extremos em relação a suas temperaturas médias para as 3 cidades do estudo. Queremos entender quais são os meses com as menores e maiores temperaturas, se são os mesmos para todas as cidades, qual a variação da temperatura do mais frio para o mais quente, entre outras perguntas!
Antes de tudo, devemos localizar dados de temperatura faltantes. Vamos ver quantas observações temos por ano para as 3 cidades.
clima_tudo %>%
filter(!is.na(temp_media)) %>%
group_by(cidade, ano) %>%
mutate(obs_ano = n()) %>%
distinct(cidade, ano, obs_ano) %>%
ggplot(aes(x = ano, y=obs_ano, color=cidade)) +
geom_point(size = 3) +
labs(y = "Observações por ano", title = "Número de observações (para cada ano e cidade)") +
facet_grid(. ~ cidade) +
theme(legend.position = "none")
Vemos que somente os anos de 2009 e 2021 possuem muitos dados em falta e então vamos descarta-los quando agruparmos as temperaturas por mês. Além disso, precisamos descartar observações cuja temperatura média não é definida.
clima_temp <- clima_tudo %>%
filter(ano > 2009 & ano < 2021 & !is.na(temp_media))
Agora vamos visualizar as distribuições das temperatuas para cada mês e cidade, agrupando todos os anos.
clima_temp %>%
ggplot(aes(x=temp_media)) +
geom_density(color="black", fill = "steelblue", boundary = 0) +
labs(x = "Temperatura média (C)", title = "Distribuição das temperaturas médias (para cada mês e cidade)") +
facet_grid(mes ~ cidade) +
scale_y_continuous(breaks=seq(0, 1, 0.5))
## Warning: Ignoring unknown parameters: boundary
Podemos ver que o comportamento das temperaturas tem similaridades entre cidades: Todas esfriam entre maio e julho e esquentam no final/começo do ano. Isso, claro, se deve as estações do ano. As distribuições, porém, tem diferenças significativas. Patos possui uma curva de distribuição mais achatada em cada mês, com uma dispersão e variação maior de temperaturas médias. Além disso as temperaturas de Patos são distribuídas em valores bem maiores que Campina Grande, com João pessoa entre as duas. Vamos observar melhor esse comportamento analisando a média das temperaturas médias ao londo dos meses:
clima_media_mes <- clima_temp %>%
filter(!is.na(temp_max) & !is.na(temp_min)) %>%
group_by(mes, cidade) %>%
mutate(temp_media_mes = mean(temp_media)) %>%
mutate(temp_media_max_mes = mean(temp_max)) %>%
mutate(temp_media_min_mes = mean(temp_min)) %>%
distinct(temp_media_mes, cidade, mes, temp_media_max_mes, temp_media_min_mes)
clima_media_mes %>%
ggplot(aes(x=mes, y=temp_media_mes, color=cidade)) +
geom_line() +
geom_label(data = . %>% group_by(cidade) %>% filter(temp_media_mes == max(temp_media_mes)), aes(label = sprintf('max = %0.2f', temp_media_mes)), hjust = 0.5, vjust=1.5, size = 3.5) +
geom_label(data = . %>% group_by(cidade) %>% filter(temp_media_mes == min(temp_media_mes)), aes(label = sprintf('min = %0.2f', temp_media_mes)), hjust = -0.1, vjust=0.5, size = 3.5) +
labs(y = "Temperatura média do mês (C)", x = "Mês", title = "Temperatura média ao longo do ano") +
scale_x_continuous(breaks=seq(1, 12, 1))
Como vemos acima, a médias das temperaturas nessas cidades sempre é menor no meio da ano, entre os meses de Junho e Julho. Podemos observar as diferenças entre os máximos e mínimos para destacar a variação das temperaturas ao longo do ano: enquanto Campinha Grande e João Pessoa variam aproximadamente 3 graus, Patos varia mais de 4 graus entre seu máximo e mínimo. Por último, o mês do pico de temperatura é diferente em Patos. João Pessoa e Campina Grande atingem seus maiores valores em Março, já Patos, Novembro!
Falando em extremos, vamos ver como as temperaturas máximas e mínimas se comportam durante o ano usando um gráfico similar. Faremos a média dos máximas e mínimos para cada mês:
clima_media_mes %>%
ggplot(aes(x=mes, y=temp_media_min_mes, color=cidade)) +
geom_line() +
geom_label(data = . %>% group_by(cidade) %>% filter(temp_media_min_mes == min(temp_media_min_mes)), aes(label = sprintf('min = %0.2f', temp_media_min_mes)), hjust = 1.1, vjust=0.2, size = 3.5) +
labs(x = "Mês", y = "Média da temperatura mínima do mês (C)", title = "Média da temperatura mínima ao longo do ano") +
scale_x_continuous(breaks=seq(1, 12, 1))
clima_media_mes %>%
ggplot(aes(x=mes, y=temp_media_max_mes, color=cidade)) +
geom_line() +
geom_label(data = . %>% group_by(cidade) %>% filter(temp_media_max_mes == max(temp_media_max_mes)), aes(label = sprintf('max = %0.2f', temp_media_max_mes)), hjust = 1.1, vjust=0.2, size = 3.5) +
labs(x = "Mês", y = "Média da temperatura máxima do mês (C)", title = "Média da temperatura máxima ao longo do ano") +
scale_x_continuous(breaks=seq(1, 12, 1))
Uau, Patos alcança incríveis 37 graus na média de suas temperaturas máximas do mês de novembro! Assim como em gráficos anteriores, as curvas crescem no final ano e se mantém nas maiores temperaturas até decrescer no meio do ano, atingindo seus valores mínimos. Apesar de haver uma clara distinção entre as trẽs cidades para as temperaturas mínimas, nas temperaturas máximas as curvas de Campina Grande e João Pessoa se cruzam, com Campina Grande ultrapassando as temperaturas de João Pessoa no final de outubro.
Após analisarmos a temperatura das cidades de Campina Grande, João Pessoa e Patos, um questionamento também surgiu sobre como é o comportamento do vento durante o ano nas 3 cidades e as diferenças entre cada uma.
Ao obsevarmos como é o comportamento do vento durante o ano nas 3 cidades, agora queremos fazer uma análise para descobrir a diferença entre cada uma delas, desde a média do vento até a sua variação.
clima_tudo %>%
filter(ano < 2020) %>%
ggplot(aes(x = cidade, y = vento_medio, color = cidade)) +
xlab("Cidades") +
ylab("Vento médio (m/s)") +
theme(legend.position = "none") +
geom_boxplot(alpha = .5)
## Warning: Removed 3 rows containing non-finite values (stat_boxplot).
Com o gráfico acima podemos observar que as 3 cidades apresentam um comportamento diferente quando se trata de vento, onde podem variar desde a mediana da média dos ventos até a variação dos ventos médios que ocorrem durante o ano:
summ <- clima_tudo %>%
filter(!is.na(vento_medio) & !is.na(vento_max)) %>%
group_by(cidade) %>%
summarize(
Mediana = median(vento_medio),
Desvio_Padrão = sd(vento_medio)
)
grid.arrange(
tableGrob(summ),
top = textGrob("Estatísticas do vento médio para cada cidade", gp=gpar(fontsize=16,font=3))
)
O vento médio das 3 cidades apresenta uma clara distinção entre medianas, com diferenças de ~1ms entre cidades, porém devemos levar em conta que estamos agrupando diversos anos de dados para cada cidade. Por isso, olhamos também para o desvio padrão, que indica a dispersão dessas observações. A cidade de Patos, assim como na temperatura, apresenta o maior desvio padrão das 3 cidades, chegando a mais que o dobro de Campina Grande e João Pessoa. Na prática, os ventos de Patos são mais fortes que as outras cidades, mas variando bastante durante o ano.
Ao obsevarmos e analisarmos os graficos apresentados anteriormente, podemos que, mesmo presente no litoral, João Pessoa apresentou ventos abaixo do esperado e com uma baixa variação. Enquanto Patos demonstrou uma variação de ventos alta e com médias acima das outras 2 cidades. Por fim, Campina Grande ficou no centro com uma média de ventos entre Patos e João Pessoa, e com pouca variação.
José Amândio e Gabriel Tavares.