library(tidyverse)
library(here)
library(gridExtra)
library(grid)
theme_set(theme_bw())

Configuração Inicial

# 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()
    )
)

Dados utilizados

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:

Clima Universitário de Campina Grande - PB

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…

Clima Geral

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?

Feriado Universitário

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).

Feriado Universitário - Temperatura

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.

Feriado Universitário - Umidade

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.

Feriado Universitário - Precipitação de chuva

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.

Conclusão

Com as análises feitas, observamos que:

  • O periodo de férias do começo e do final ano é o periodo com uma temperatura média um pouco acima da temperatura do periodo letivo.
  • O periodo de férias do começo e do final ano é o periodo com umidade menor que a do periodo letivo.
  • O periodo de férias de julho é o periodo com a temperatura média mais baixa e com a maior umidade.
  • Mesmo com uma umidade maior que as dos outros, o periodo de férias de julho não possui uma precipitação de chuva tão elevada quanto.
  • O periodo de São João e o periodo de férias do meio do ano possuem precipitações de chuva similares.

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.


Entre verões patenses e invernos campinenses

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))

Variação da temperatura no mês

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

Temperatura ao londo do ano

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!

Extremos: temperaturas máximas e mínimas

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.


Comportarmento do vento na paraiba ao longo dos anos

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.

Comparativo

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:

  • Campina Grande tem um vento médio com uma mediana maior que João Pessoa e , além disso, possui uma baixa variação dos ventos médio durante o ano. Quando comparada com Patos, podemos ver que 75% da amostra Campinense ainda tem uma média menor que 50% da sua amostra;
  • João Pessoa possui a menor mediana em relação as outras cidades, assim como a menor variação;
  • Patos é a cidade, entre as 3, que possui a maior mediana de vento médio e uma alta variação dos ventos médios, com alguns pontos possuindo vento médio menor que João Pessoa, enquanto os 25% maiores valores de ponto médio são bem proximos, formando um conglomerando distantes das metricas das outras cidades.
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.

Conclusão

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.