climas = read_csv(here::here("data/clima_cg_jp-semanal.csv"), 
                  col_types = "cTdddddd")
print(climas)
## # A tibble: 2,748 × 8
##    cidade         semana              tmedia  tmax  tmin chuva   mes   ano
##    <chr>          <dttm>               <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1 Campina Grande 1992-12-27 00:00:00   26.1  30.4  20.7   0      12  1992
##  2 Campina Grande 1993-01-03 00:00:00   26.1  32.4  19.3   0       1  1993
##  3 Campina Grande 1993-01-10 00:00:00   25.8  32.2  19.7   0       1  1993
##  4 Campina Grande 1993-01-31 00:00:00   25.7  32    19.9   0.4     1  1993
##  5 Campina Grande 1993-02-07 00:00:00   26.3  32.7  19.6   0.3     2  1993
##  6 Campina Grande 1993-02-14 00:00:00   26.3  32.7  20     0       2  1993
##  7 Campina Grande 1993-02-21 00:00:00   26.5  32.3  20.4   4.9     2  1993
##  8 Campina Grande 1993-02-28 00:00:00   26.6  32.3  21.2   0       2  1993
##  9 Campina Grande 1993-10-31 00:00:00   25.8  32.1  19     0      10  1993
## 10 Campina Grande 1993-11-07 00:00:00   25.2  31.2  19     6.1    11  1993
## # ℹ 2,738 more rows
#glimpse(climas)

Q1: Qual a cidade é mais quente? Isso muda se considerarmos apenas o período de janeiro e fevereiro (pico do verão)?

RESPOSTA

A cidade mais quente é João Pessoa, onde as altas temperaturas são uma constante ao longo do ano, ultrapassando os 27º. Enquanto em Campina Grande, a temperatura média fica abaixo 25º, como podemos observar no primeiro gráfico boxplot, que mostra as temperaturas médias históricas por cidade.

O segundo gráfico mostra as temperaturas ao longo dos meses, destacando que em alguns momentos do ano (especificamente nos meses de outubro a fevereiro), Campina Grande tem máximas mais quentes que João Pessoa, apesar da temperatura média não seguir essa tendência. Observa-se também que a variação de temperatura em Campina Grande é muito maior que em João Pessoa.

O terceiro gráfico mostra a temperatura por década das duas cidades. Percebe-se que a temperatura média tem variado ao longo dos anos para cada cidade. A linha suavizada indica a tendência geral de aumento ou diminuição da temperatura média ao longo do tempo nas duas cidades. Para esse último gráfico, foram removidos o primeiro ano de cada cidade, 1987 de João Pessoa e 1992 de ampina Grande, pois só existia uma medida para cada cidade, que influenciando a media anual e altera a curva do gráfico.

dados <- climas  

# Agrega dados 
dados_agregados <- aggregate(cbind(tmedia, tmax, tmin) ~ cidade + mes, data = dados, FUN = mean)

# Converte o mês para um fator com nome do mês
dados_agregados$mes <- factor(dados_agregados$mes, levels = 1:12, labels = c("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"))

# Gráfico de Boxplot
boxplot <- ggplot(dados, aes(x = cidade, y = tmedia, fill = cidade)) +
  geom_boxplot() +  # Remove os pontos outliers do gráfico
  geom_point(aes(y = tmax[1], color = cidade)) +
  geom_point(aes(y = tmin[2], color = cidade)) +
  labs(x = "Cidade", y = "Temperatura Média", title = "Distribuição da temperatura média por cidade") +
  theme_minimal()

# Gráfico de linha
line <- ggplot(dados_agregados, aes(x = mes, y = tmedia, color = cidade, group = cidade)) +
  geom_line(linewidth = 1.2, show.legend = FALSE) + # Linha média mais grossa
  geom_ribbon(aes(ymin = tmin, ymax = tmax, fill = cidade), alpha = 0.3, show.legend = TRUE) + 
  geom_point(size = 2) + 
  labs(x = "Mês", y = "Temperatura", title = "Temperatura média com máxima e mínima por mês e cidade") +
  theme_minimal()

# Remove os dados dos anos de 1987 e 1992 da cidade de campina grande
dados_filtrados <- dados[!(dados$ano == 1987 | (dados$cidade == "Campina Grande" & dados$ano == 1992)), ]

# Agrega dados do ano 
dados_agregados_ano <- aggregate(cbind(tmedia, tmax, tmin) ~ cidade + ano, data = dados_filtrados, FUN = mean)

# Gráfico de linha
grafico_aumento_temperatura <- ggplot(dados_agregados_ano, aes(x = ano, y = tmedia, color = cidade, group = cidade)) +
  geom_smooth(method = "loess") +
  labs(x = "Ano", y = "Temperatura Média", title = "Aumento da temperatura ao longo dos anos por cidade") +
  theme_minimal()

# Exibe os gráficos
print(boxplot)

print(line)

print(grafico_aumento_temperatura)
## `geom_smooth()` using formula = 'y ~ x'

Q2: Quais os meses mais quentes e mais frios? Como você descreveria a temperatura das festas juninas das cidades nos últimos anos?

RESPOSTA

Os meses mais quentes em Campina Grande vão de setembro a abril e esfria entre maio e agosto.

Em relação a João Pessoa, os meses mais quentes vão de janeiro a maio, e a temperatura começa a esfriar a partir de junho até setembro. Posteriormente, volta a esquentar no mês de outubro.

A temperatura nos últimos anos, de 2010 a 2019, em Campina Grande e João Pessoa, especificamente no mês de julho (o mais frio), permaneceu com a mesma média dos anos anteriores: 22º em Campina Grande e 27º em João Pessoa.

# Filtro das temperaturas mensais
climas %>%
  pivot_longer(cols = c(tmin, tmax, tmedia), names_to = "measure", values_to = "value") %>%
  mutate(measure = case_when(
    measure == "tmax" ~ "Temp. máxima",
    measure == "tmin" ~ "Temp. mínima",
    measure == "tmedia" ~ "Temp. média",
    TRUE ~ NA
  )) %>%
    
# Gráfico da distribuição mensal 
  ggplot(aes(x = month(semana, label = TRUE), y = value, fill = measure)) +
  geom_boxplot(width = 0.5, outlier.shape = NA) +
  scale_fill_manual(values = c("#BA55D3", "#00BFFF", "#00FF7F")) + 
  facet_wrap(~ cidade, ncol = 1) +
  labs(title = "Temperatura mensal em Campina Grande e João Pessoa",
       x = "Mês",
       y = "Temperatura (ºC)",
       fill = "Variável") +
  theme_minimal()

# Filtro das temperaturas nas cidades a partir de 2010 até 2019
climas %>%
  filter(ano > 2010) %>%
  pivot_longer(cols = c(tmin, tmax, tmedia), names_to = "measure", values_to = "value") %>%
  mutate(measure = case_when(
    measure == "tmax" ~ "Temp. máxima",
    measure == "tmin" ~ "Temp. mínima",
    measure == "tmedia" ~ "Temp. média",
    TRUE ~ NA
  )) %>%
    
# Gráfico mensal da temperatura nas cidades a partir de 2010 até 2019
  ggplot(aes(x = month(semana, label = TRUE), y = value, fill = measure)) +
  geom_boxplot(width = 0.5, outlier.shape = NA) +
  scale_fill_manual(values = c("#FF9999", "#99CCFF", "#99FF99")) + 
  facet_wrap(~ cidade, ncol = 1) +
  labs(title = "Temperatura mensal em CG e JP nos anos 2010 a 2019",
       x = "Mês",
       y = "Temperatura (ºC)",
       fill = "Variável") +
  theme_minimal()

Q3: Quanto chove por semana em JP e CG? Descreva a distribuição do volume de chuvas para as cidades?

RESPOSTA

Em João Pessoa, a quantidade de chuva durante as semanas 14 a 30 ultrapassa os 50 milímetros. Enquanto isso, em Campina Grande, essa quantidade varia entre 23 e 30 milímetros por semana. Observa-se que chove bem mais em João Pessoa que em Campina Grande, apesar da temperatura ser maior. Com poucas excessões, a média de chuva semanal em joão pessoa ultrapassa Campina Grande.

dados <- climas

# Extrai o número da semana do ano de cada data na coluna semana
dados$semana_ano <- week(dados$semana)

# Calcula a média semanal de chuva para cada cidade em cada semana do ano
media_chuva_semanal <- dados %>%
  group_by(cidade, semana_ano, .drop = FALSE) %>%
  summarise(media_chuva = mean(chuva, na.rm = TRUE), .groups = "drop")

# Gráfico de chuvas semanais das duas cidades
ggplot(media_chuva_semanal, aes(x = as.factor(semana_ano), y = media_chuva, fill = cidade)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(x = "Semana do ano", y = "Volume médio de chuva", fill = "Cidade") +
  ggtitle("Volume médio de chuva por semana do ano") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
  scale_x_discrete(breaks = seq(1, 52, by = 4))

Q4: Qual a relação entre a temperatura de uma semana e a temperatura da semana anterior (descreva para as duas cidades)?

RESPOSTA

Com base nos gráficos das cidades de Campina Grande e João Pessoa, observa-se uma correlação positiva entre as temperaturas. Quando a temperatura na semana corrente é alta, tende a ser alta também na próxima semana. O coeficiente de correlação para cada cidade evidencia uma correlação forte e positiva, sendo ainda mais forte em Campina Grande.

# Filtra e processar os dados para Campina Grande
temperatura_cg <- climas %>%
  filter(cidade == "Campina Grande") %>% 
  arrange(semana) %>%
  mutate(tmedia_anterior = lag(tmedia, n = 1)) %>%
  na.omit()

# Filtra e processar os dados para João Pessoa
temperatura_jp <- climas %>%
  filter(cidade == "João Pessoa") %>% 
  arrange(semana) %>%
  mutate(tmedia_anterior = lag(tmedia, n = 1)) %>%
  na.omit()

# Calcula a correlação entre as temperaturas médias da semana anterior para cada cidade
correlacao_cg <- cor(temperatura_cg$tmedia, temperatura_cg$tmedia_anterior)
correlacao_jp <- cor(temperatura_jp$tmedia, temperatura_jp$tmedia_anterior)
cat("Correlação entre CG:", correlacao_cg, "\n")
## Correlação entre CG: 0.880168
cat("Correlação entre JP:", correlacao_jp, "\n")
## Correlação entre JP: 0.8593719
# Visualiza a relação entre as temperaturas para Campina Grande
ggplot(temperatura_cg, aes(x = tmedia, y = tmedia_anterior)) +
  geom_point(color = "#FF1493") +
  labs(title = "Correlação entre temperatura atual e da semana anterior - Campina Grande",
       x = "Temperatura Atual",
       y = "Temperatura da Semana Anterior") +
  theme_minimal()

# Visualiza a relação entre as temperaturas para João Pessoa
ggplot(temperatura_jp, aes(x = tmedia, y = tmedia_anterior)) +
  geom_point(color = "#8A2BE2") +
  labs(title = "Correlação entre temperatura atual e da semana anterior - João Pessoa",
       x = "Temperatura Atual",
       y = "Temperatura da Semana Anterior") +
  theme_minimal()

Q5: Qual a relação entre temperatura e chuvas nas semanas em que choveu (descreva para as duas cidades)?

RESPOSTA

A correlação entre a temperatura média e a densidade de chuva em ambas as cidades são negativos, indicando uma relação fraca entre essas variáveis. Contudo, acredito que isso acontece pois as observações foram feitas semanalmente, o que abre uma possibilidade de disperção de dados, por se tratar de um intervalo de tempo muito longo, onde muitas variações climáticas acontecem. Certamente, caso, houvesse dados de mediações diárias ou a cada hora, a correlação seria bem maior.

#Remove linhas não chuvosos
dados_chuva_cg <- subset(climas, cidade == "Campina Grande" & chuva > 0)
dados_chuva_jp <- subset(climas, cidade == "João Pessoa" & chuva > 0)

# Gráfico de Campina Grande
ggplot(dados_chuva_cg, aes(x = tmedia, y = chuva)) +
    geom_point() + 
    geom_point(color = "#008000") +
    labs(x = "Temperatura Média", y = "Densidade de Chuva") + 
    ggtitle("Correlação entre Temperatura Média e Densidade de Chuva em Campina Grande") + 
    theme_minimal() 

# Gráfico de João Pessoa
ggplot(dados_chuva_jp, aes(x = tmedia, y = chuva)) +
    geom_point() + 
    geom_point(color = "#000080") +
    labs(x = "Temperatura Média", y = "Densidade de Chuva") + 
    ggtitle("Correlação entre Temperatura Média e Densidade de Chuva em João Pessoa") + 
    theme_minimal() 

# Calcula a correlação entre as temperaturas médias para cada cidade
correlacao_cg <- cor(dados_chuva_cg$chuva, dados_chuva_cg$tmedia)
correlacao_jp <- cor(dados_chuva_jp$chuva, dados_chuva_jp$tmedia)
cat("Correlação entre CG:", correlacao_cg, "\n")
## Correlação entre CG: -0.3354837
cat("Correlação entre JP:", correlacao_jp, "\n")
## Correlação entre JP: -0.4244459