Carregar pacotes antes de começar a explorar dados no R, as bibliotecas que fornecem funções e ferramentas para realizar diversas tarefas, como importar e exportar dados, realizar análises estatísticas, criar gráficos, entre outras.

Leitura dos dados, para permitir que o acesso e organização das informações que serão utilizadas no estudo. Os dados estão em formato CSV.

climas = read_csv(here::here("data/clima_cg_jp-semanal.csv"), 
                  col_types = "cTdddddd")

glimpse(climas)
## Rows: 2,748
## Columns: 8
## $ cidade <chr> "Campina Grande", "Campina Grande", "Campina Grande", "Campina …
## $ semana <dttm> 1992-12-27, 1993-01-03, 1993-01-10, 1993-01-31, 1993-02-07, 19…
## $ tmedia <dbl> 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26.28571, 26.…
## $ tmax   <dbl> 30.4, 32.4, 32.2, 32.0, 32.7, 32.7, 32.3, 32.3, 32.1, 31.2, 32.…
## $ tmin   <dbl> 20.7, 19.3, 19.7, 19.9, 19.6, 20.0, 20.4, 21.2, 19.0, 19.0, 19.…
## $ chuva  <dbl> 0.0, 0.0, 0.0, 0.4, 0.3, 0.0, 4.9, 0.0, 0.0, 6.1, 0.4, 1.2, 0.0…
## $ mes    <dbl> 12, 1, 1, 1, 2, 2, 2, 2, 10, 11, 11, 11, 11, 12, 12, 12, 12, 1,…
## $ ano    <dbl> 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 199…

Cidade Campina Grande: Resumo estatístico permitindo obter uma visão geral das informações semanais climaticas da cidade, como a média, a mediana, o mínimo e o máximo

# filtrar apenas a cidade de Campina Grande
campina_grande <- climas %>% filter(cidade == "Campina Grande")

# agrupar por semana e resumir estatísticas
campina_grande_semanal <- campina_grande %>%
  group_by(semana) %>%
  summarize(
    media_semanal = mean(tmedia, na.rm = TRUE),
    max_semanal = max(tmax, na.rm = TRUE),
    min_semanal = min(tmin, na.rm = TRUE),
    mediana = median(tmedia, na.rm = TRUE),
    quartil_1 = quantile(tmedia, 0.25, na.rm = TRUE),
    quartil_3 = quantile(tmedia, 0.75, na.rm = TRUE))
campina_grande_semanal
## # A tibble: 1,224 × 7
##    semana              media_semanal max_semanal min_semanal mediana quartil_1
##    <dttm>                      <dbl>       <dbl>       <dbl>   <dbl>     <dbl>
##  1 1992-12-27 00:00:00          26.1        30.4        20.7    26.1      26.1
##  2 1993-01-03 00:00:00          26.1        32.4        19.3    26.1      26.1
##  3 1993-01-10 00:00:00          25.8        32.2        19.7    25.8      25.8
##  4 1993-01-31 00:00:00          25.7        32          19.9    25.7      25.7
##  5 1993-02-07 00:00:00          26.3        32.7        19.6    26.3      26.3
##  6 1993-02-14 00:00:00          26.3        32.7        20      26.3      26.3
##  7 1993-02-21 00:00:00          26.5        32.3        20.4    26.5      26.5
##  8 1993-02-28 00:00:00          26.6        32.3        21.2    26.6      26.6
##  9 1993-10-31 00:00:00          25.8        32.1        19      25.8      25.8
## 10 1993-11-07 00:00:00          25.2        31.2        19      25.2      25.2
## # ℹ 1,214 more rows
## # ℹ 1 more variable: quartil_3 <dbl>

Cidade de Joao Pesso: Resumo estatístico permitindo obter uma visão geral das informações semanais climaticas da cidade, como a média, a mediana, o mínimo e o máximo

# filtrar apenas a cidade de Joao Pessoa
joao_pessoa <- climas %>% filter(cidade == "João Pessoa")

# agrupar por semana e resumir estatísticas
joao_pessoa_semanal <- joao_pessoa %>%
  group_by(semana) %>%
  summarize(
    media_semanal = mean(tmedia, na.rm = TRUE),
    max_semanal = max(tmax, na.rm = TRUE),
    min_semanal = min(tmin, na.rm = TRUE),
    mediana = median(tmedia, na.rm = TRUE),
    quartil_1 = quantile(tmedia, 0.25, na.rm = TRUE),
    quartil_3 = quantile(tmedia, 0.75, na.rm = TRUE))

joao_pessoa_semanal
## # A tibble: 1,524 × 7
##    semana              media_semanal max_semanal min_semanal mediana quartil_1
##    <dttm>                      <dbl>       <dbl>       <dbl>   <dbl>     <dbl>
##  1 1987-12-27 00:00:00          29.1        31.4        24.6    29.1      29.1
##  2 1988-01-03 00:00:00          28.8        31.6        24      28.8      28.8
##  3 1988-01-10 00:00:00          28.2        31.6        22      28.2      28.2
##  4 1988-01-17 00:00:00          28.6        31.2        24.4    28.6      28.6
##  5 1988-01-24 00:00:00          28.7        32          21.9    28.7      28.7
##  6 1988-01-31 00:00:00          28.9        32          23.9    28.9      28.9
##  7 1988-02-07 00:00:00          29.0        32          21.9    29.0      29.0
##  8 1988-02-14 00:00:00          28.9        31.2        23.6    28.9      28.9
##  9 1988-02-21 00:00:00          28.7        31.7        23      28.7      28.7
## 10 1988-02-28 00:00:00          29.0        31.8        23.2    29.0      29.0
## # ℹ 1,514 more rows
## # ℹ 1 more variable: quartil_3 <dbl>
# Campina Grande

campina_grande <- climas %>% filter(cidade == "Campina Grande")
meses_por_ano_CG <- aggregate(campina_grande$mes, by = list(campina_grande$ano), FUN = function(x) length(unique(x)))
names(meses_por_ano_CG) <- c("ano", "meses_com_dados")
meses_por_ano_CG$meses_faltantes <- 12 - meses_por_ano_CG$meses_com_dados

meses_por_ano_CG
##     ano meses_com_dados meses_faltantes
## 1  1992               1              11
## 2  1993               5               7
## 3  1994               4               8
## 4  1995              12               0
## 5  1996              12               0
## 6  1997              12               0
## 7  1998              12               0
## 8  1999              12               0
## 9  2000               5               7
## 10 2001               4               8
## 11 2002              12               0
## 12 2003              12               0
## 13 2004              12               0
## 14 2005              12               0
## 15 2006              12               0
## 16 2007              12               0
## 17 2008              12               0
## 18 2009              12               0
## 19 2010              12               0
## 20 2011              12               0
## 21 2012              12               0
## 22 2013              12               0
## 23 2014              12               0
## 24 2015              12               0
## 25 2016              12               0
## 26 2017              12               0
## 27 2018              12               0
## 28 2019               3               9

Para a cidade de Campina Grande, a análise de dados faltantes indica que os anos de 1992, 1993, 1994, 2000 e 2001 apresentam alguns meses com dados faltantes. Especificamente, o ano de 1992 possui apenas um mês com dados, enquanto os anos de 1993 e 1994 possuem apenas cinco e quatro meses com dados, respectivamente. Já os anos de 2000 e 2001 apresentam apenas cinco e quatro meses com dados, respectivamente, e os demais anos possuem os doze meses com dados disponíveis. Portanto, será necessário tratar esses anos incompletos antes de realizar qualquer análise que envolva a série temporal desses dados

# Joao Pessoa

joao_pessoa <- climas %>% filter(cidade == "João Pessoa")
meses_por_ano_jp <- aggregate(joao_pessoa$mes, by = list(joao_pessoa$ano), FUN = function(x) length(unique(x)))
names(meses_por_ano_jp) <- c("ano", "meses_com_dados")
meses_por_ano_jp$meses_faltantes <- 12 - meses_por_ano_jp$meses_com_dados

meses_por_ano_jp
##     ano meses_com_dados meses_faltantes
## 1  1987               1              11
## 2  1988               9               3
## 3  1990               9               3
## 4  1991              12               0
## 5  1992              12               0
## 6  1993              12               0
## 7  1994              10               2
## 8  1995              12               0
## 9  1996              12               0
## 10 1997              12               0
## 11 1998              12               0
## 12 1999              12               0
## 13 2000              12               0
## 14 2001              12               0
## 15 2002              12               0
## 16 2003              12               0
## 17 2004              12               0
## 18 2005              12               0
## 19 2006              12               0
## 20 2007              12               0
## 21 2008              12               0
## 22 2009              12               0
## 23 2010              12               0
## 24 2011              12               0
## 25 2012              12               0
## 26 2013              12               0
## 27 2014              12               0
## 28 2015              12               0
## 29 2016              12               0
## 30 2017              12               0
## 31 2018              12               0
## 32 2019               3               9

O resultado mostra três colunas: “ano” representa o ano correspondente, “meses_com_dados” representa o número de meses que contém dados e “meses_faltantes” representa o número de meses que faltam para completar o ano. A tabela mostra que há anos com dados incompletos, como em 1988, 1990 e 1994. Já nos anos de 1991, 1992, 1993, 1995, 1996 e 1997 há dados completos para todos os meses do ano.

Agora filtrando a base com anos validos

climas <- climas %>% 
  filter(ano > 1994 & ano < 2019 & ano != 2000 & ano != 2001)

Gráfico de linhas para as temperaturas semanais da cidade João Pessoa, com uso da biblioteca ggplot2. O gráfico mostra as temperaturas máximas, médias e mínimas semanais da cidade de João Pessoa ao longo do tempo (semanas)

ggplot(climas %>% filter(cidade == "João Pessoa"), aes(x = semana)) +
  geom_line(aes(y = tmax, color = "Temperatura Máxima"), size = 1.5) +
  geom_line(aes(y = tmedia, color = "Temperatura Média"), size = 1.5) +
  geom_line(aes(y = tmin, color = "Temperatura Mínima"), size = 1.5) +
  scale_color_manual(values = c("blue", "red", "green")) +
  labs(x = "Semana", y = "Temperatura (°C)", title = "Temperaturas Semanais em João Pessoa")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Gráfico de linhas para as temperaturas semanais em Campina Grande,com uso da biblioteca ggplot2. O gráfico mostra as temperaturas máximas, médias e mínimas semanais da cidade de Campina Grande ao longo do tempo (semanas).

ggplot(climas %>% filter(cidade == "Campina Grande"), aes(x = semana)) +
  geom_line(aes(y = tmax, color = "Temperatura Máxima"), size = 1.5) +
  geom_line(aes(y = tmedia, color = "Temperatura Média"), size = 1.5) +
  geom_line(aes(y = tmin, color = "Temperatura Mínima"), size = 1.5) +
  scale_color_manual(values = c("blue", "red", "green")) +
  labs(x = "Semana", y = "Temperatura (°C)", title = "Temperaturas Semanais em Campina Grande")

Histograma da temperatura média

ggplot(climas, aes(x = tmedia)) +
  geom_histogram(binwidth = 1, color = "black", fill ="darkorange") +
  labs(x = "Temperatura Média (°C)", y = "Frequência", title = "Histograma da Temperatura Média")

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

# agrupar por cidade e resumir estatísticas de temperatura média
clima_medio_cidade <- climas %>% 
  group_by(cidade) %>% 
  summarise(clima_medio = mean(tmedia))

# criar gráfico de barras com clima médio por cidade
ggplot(clima_medio_cidade, aes(x = cidade, y = clima_medio, fill = cidade)) +
  geom_bar(stat="identity") +
  theme_minimal() +
  xlab("Cidade") + 
  ylab("Clima Médio") +
  labs(fill = "Cidade", title = "Temperaturas médias e máximas - JP x CG") +
  scale_fill_manual(values = c("#1f77b4", "#ff7f0e")) 

### O gráfico que foi gerado mostra que a cidade de João Pessoa apresentou temperaturas mais elevadas em comparação com Campina Grande, em média, durante o período de tempo analisado. É importante destacar que existem diversos fatores que podem influenciar nas temperaturas observadas, como a localização geográfica das duas cidades, altitude, ventos, umidade do ar, entre outros. Vamos calcular a correlações existem entre as duas variaveis da temperatura.

# Selecionando apenas as colunas de interesse
temp_data <- climas %>% 
  filter(cidade %in% c("João Pessoa", "Campina Grande")) %>% 
  select(cidade, tmax, tmedia)

# Calculando as três correlações
correlations <- temp_data %>%
  group_by(cidade) %>%
  summarise(
    pearson = cor(tmax, tmedia, method = "pearson"),
    spearman = cor(tmax, tmedia, method = "spearman"),
    kendall = cor(tmax, tmedia, method = "kendall")
  )

# Exibindo as correlações
correlations
## # A tibble: 2 × 4
##   cidade         pearson spearman kendall
##   <chr>            <dbl>    <dbl>   <dbl>
## 1 Campina Grande   0.938    0.928   0.775
## 2 João Pessoa      0.847    0.859   0.685

No caso das correlações calculadas para as temperaturas máximas e médias semanais nas cidades de Campina Grande e João Pessoa, todas elas apresentaram valores positivos e altos, indicando uma forte correlação positiva entre as variáveis. Ou seja, quando uma das temperaturas aumenta, a outra também tende a aumentar. O valor mais alto foi encontrado na correlação de Pearson em Campina Grande, indicando uma relação linear mais forte entre as variáveis da cidade. Já o valor mais baixo foi encontrado na correlação de Kendall em João Pessoa, indicando que a relação entre as variáveis não é tão linear na cidade.

# Define as cores que serão utilizadas na legenda
color_cg_jp <- c("#0072B2", "#E69F00")

# Filtra os dados apenas para os meses de janeiro e fevereiro
clima_jan_fev <- climas %>%
  filter(!is.na(tmedia), mes %in% c(1, 2))

# Cria o histograma
histograma <- clima_jan_fev %>% 
  ggplot(aes(x = mes, y = ..count../sum(..count..), fill = cidade)) +
  geom_histogram(position = "dodge", alpha = 0.7, bins = 10) +
  scale_fill_manual(values = color_cg_jp, name = "Cidade") +
  scale_x_continuous(breaks = c(1, 2), labels = c("Janeiro", "Fevereiro")) +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  labs(title = "Histograma da Temperatura Média de CG e JP em Janeiro e Fevereiro", 
       x = "Mês",
       y = "Porcentagem") +
  theme_bw()

# Salva o gráfico em um arquivo PNG
ggsave(plot = histograma, filename = "histograma_jan_fev.png", width = 8, height = 6, dpi = 300)
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
print(histograma)

### Nesse gráfico a análise foi feita considerando os dois meses janeiro e Fevereiro, e o resultado é que João Pessoa tem ´percentual elevado elevado em relação a Campina Grande nos dois meses (janeiro e fevereiro) pode ser explicado pela localização geográfica das cidades. João Pessoa é uma cidade litorânea, o que faz com que tenha uma influência maior da temperatura do oceano, o que pode resultar em temperaturas mais alta.

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

# Filtra os dados de temperatura média
climas_temp <- climas %>%
  select(cidade, tmedia, tmax, tmin, mes, ano) %>%
  filter(!is.na(tmedia)) %>%
  group_by(cidade, mes) %>%
  summarise(MediaTemper = mean(tmedia))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Cria um gráfico de barras com a média das temperaturas por mês
p1 <- climas_temp %>%
  ggplot(aes(x = mes, y = MediaTemper, fill = cidade)) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("#0072B2", "#E69F00"), name = "Cidade") +
  labs(title = "Média das Temperaturas por Mês",
       y = "Média da Temperatura (°C)",
       x = "Mês") +
  theme_bw()

# Filtra os dados de temperatura média no mês de junho entre 2016 e 2018
climas_junho <- climas %>%
  filter(!is.na(tmedia), mes == 6, ano >= 2016, ano <= 2018)

# Cria um gráfico de caixa com a temperatura média no mês de junho por cidade
p2 <- climas_junho %>%
  ggplot(aes(x = cidade, y = tmedia, fill = cidade)) +
  geom_boxplot() +
  scale_fill_manual(values = c("#0072B2", "#E69F00"), name = "Cidade") +
  labs(title = "Temperatura Média no Mês de Junho",
       y = "Temperatura Média (°C)",
       x = "Cidade") +
  theme_bw()

# Combina os gráficos em uma única plotagem
grid.arrange(p1, p2, nrow = 2)

### O resultado do gráfico de barras com a média das temperaturas por mês em Campina Grande e João Pessoa e um gráfico de caixa com a temperatura média no mês de junho em cada uma das cidades entre 2016 e 2018. Com base nesses gráficos, podemos observar que os meses mais quentes em ambas as cidades são dezembro e janeiro, enquanto os meses mais frios são julho e agosto. Quanto às festas juninas, podemos observar que a temperatura média em Campina Grande durante o mês de junho nos anos de 2016, 2017 e 2018 foi de aproximadamente 22°C, enquanto em João Pessoa foi de cerca de 26°C. Podemos dizer que, apesar de serem cidades com temperaturas médias elevadas, João Pessoa apresenta temperaturas mais altas do que Campina Grande, especialmente no mês de junho.

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

# Filtra os dados de chuva
climas_chuva <- climas %>%
  select(cidade, chuva, semana) %>%
  filter(!is.na(chuva))

# Agrupa os dados por semana para cada cidade e calcula a soma da chuva em cada semana
climas_chuva_semana <- climas_chuva %>%
  mutate(semana = lubridate::week(semana)) %>%
  group_by(cidade, semana) %>%
  summarise(SomaChuva = sum(chuva)) 
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Cria um gráfico de densidade para descrever a distribuição do volume de chuvas para cada cidade
ggplot(climas_chuva_semana, aes(x = SomaChuva, fill = cidade)) +
  geom_density(alpha = 0.5) +
  labs(title = "Distribuição do Volume de Chuvas por Semana",
       y = "Densidade da distribuição",
       x = "Volume de Chuva (ml)") +
  scale_fill_manual(values = c("#0072B2", "#E69F00"), name = "Cidade") +
  theme_bw()

### No gráfico de densidade para João Pessoa, observa-se que a curva começa em um nível alto no eixo y e diminui ao longo do eixo x, indicando que há semanas com maiores volumes de chuva do que outras. Essa distribuição é assimétrica à direita, também conhecida como assimétrica positiva, o que significa que a curva possui uma cauda longa estendendo-se para a direita. Já para Campina Grande, a curva apresenta duas elevações distintas ao longo do eixo x, indicando que há semanas com menores volumes de chuva do que outras. A diferença na forma das curvas pode indicar diferenças na distribuição da chuva entre as duas cidades.

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

# Cria um novo data frame com as temperaturas da semana atual e da semana anterior
climas_temp_semana_anterior <- climas %>%
  select(cidade, tmedia, semana) %>%
  mutate(semana_anterior = lag(semana)) %>%
  mutate(temp_anterior = lag(tmedia)) %>%
  filter(!is.na(temp_anterior))

# Agrupa os dados por cidade e calcula a correlação entre as temperaturas da semana atual e da semana anterior
correlacao_temp_semana_anterior <- climas_temp_semana_anterior %>%
  group_by(cidade) %>%
  summarise(correlacao = cor(temp_anterior, tmedia))

# Exibe o resultado
correlacao_temp_semana_anterior
## # A tibble: 2 × 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande      0.882
## 2 João Pessoa         0.853

O resultado da correlação entre a temperatura de uma semana e a temperatura da semana anterior para as duas cidades é: Campina Grande: 0.8823579 & João Pessoa: 0.8529658 com uso de correlação de Pearson, que é um coeficiente de correlação que mede a relação linear entre duas variáveis contínuas. Isso indica que há uma forte correlação positiva entre a temperatura de uma semana e a temperatura da semana anterior em ambas as cidades. Ou seja, se a temperatura na semana anterior foi alta, é provável que a temperatura na próxima semana também seja alta, e vice-versa.`

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

# Filtra os dados de chuva
climas_chuva <- climas %>%
  select(cidade, chuva, tmedia, semana) %>%
  filter(!is.na(chuva))

# Cria um gráfico de dispersão para analisar a relação entre temperatura e chuva nas semanas em que houve registro de chuva para cada cidade
ggplot(climas_chuva, aes(x = tmedia, y = chuva, color = cidade)) +
  geom_point() +
  facet_wrap(~cidade) +
  labs(title = "Relação entre Temperatura e Chuva nas Semanas de Chuva",
       y = "Volume de Chuva (ml)",
       x = "Temperatura Média (C°)") +
  scale_color_manual(values = c("#0072B2", "#E69F00"), name = "Cidade") +
  theme_bw()

### Esse trecho de resultado de gráfico está descrevendo a análise feita em relação à relação entre temperatura e chuva em semanas com precipitação. A observação é que não há uma relação entre essas duas variáveis, ou seja, não há uma correspondência direta entre aumento ou diminuição da temperatura e aumento ou diminuição da quantidade de chuva. O gráfico apresentado mostra que há uma grande quantidade de chuva tanto em temperaturas baixas quanto em temperaturas altas, e também que há períodos sem chuva em ambas as situações de temperatura. Isso sugere que outros fatores podem estar influenciando a quantidade de chuva em determinado período, e não apenas a temperatura.

correlacao_temp_chuva <- climas %>% 
  filter(cidade %in% c("João Pessoa", "Campina Grande")) %>% 
  select(cidade, tmedia, chuva)

# Calculando as três correlações
correlations <- correlacao_temp_chuva %>%
  group_by(cidade) %>%
  summarise(
    pearson = cor(tmedia, chuva, method = "pearson"),
    spearman = cor(tmedia, chuva, method = "spearman"),
    kendall = cor(tmedia, chuva, method = "kendall")
  )

# Exibindo as correlações

correlations
## # A tibble: 2 × 4
##   cidade         pearson spearman kendall
##   <chr>            <dbl>    <dbl>   <dbl>
## 1 Campina Grande  -0.394   -0.541  -0.377
## 2 João Pessoa     -0.452   -0.492  -0.334

Com base no cálculo das correlações entre chuva e tmedia para Campina Grande, pode-se observar que não há uma correlação forte entre as duas variáveis. Os valores das correlações são negativos, o que sugere que há uma tendência de que quando uma variável aumenta, a outra tende a diminuir, mas essa relação não é forte o suficiente para ser considerada significativa. As correlações de Pearson, Spearman e Kendall apresentam valores semelhantes, com a correlação de Spearman sendo a mais forte dentre elas. No entanto, em todos os casos, os valores são baixos, o que indica que as duas variáveis não estão fortemente relacionadas

Com relação a João Pessoa, as correlações entre “chuva” e “tmedia” também são negativas, apresentando valores um pouco mais fortes do que os encontrados para Campina Grande. Os valores das correlações são -0,451 para pearson, -0,492 para spearman e -0,333 para kendall. Esses resultados indicam que, em geral, quando a temperatura média aumenta, a quantidade de chuva tende a diminuir, e vice-versa, embora essa relação não seja linear. É importante ressaltar que esses resultados não indicam uma relação de causa e efeito entre as variáveis.