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…

Calcular a temperatura da semana anterior em cada linha

climas = climas %>% 
  mutate(temp_anterior = lag(tmedia, n = 1))

glimpse(climas)
## Rows: 2,748
## Columns: 9
## $ cidade        <chr> "Campina Grande", "Campina Grande", "Campina Grande", "C…
## $ semana        <dttm> 1992-12-27, 1993-01-03, 1993-01-10, 1993-01-31, 1993-02…
## $ tmedia        <dbl> 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26.285…
## $ tmax          <dbl> 30.4, 32.4, 32.2, 32.0, 32.7, 32.7, 32.3, 32.3, 32.1, 31…
## $ tmin          <dbl> 20.7, 19.3, 19.7, 19.9, 19.6, 20.0, 20.4, 21.2, 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…
## $ mes           <dbl> 12, 1, 1, 1, 2, 2, 2, 2, 10, 11, 11, 11, 11, 12, 12, 12,…
## $ ano           <dbl> 1992, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 19…
## $ temp_anterior <dbl> NA, 26.13333, 26.11905, 25.76667, 25.74000, 26.31429, 26…

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

cidade_quente <- climas %>% 
  group_by(cidade) %>% 
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
cidade_quente_verao <- climas %>% 
  filter(mes %in% c(1, 2)) %>% 
  group_by(cidade) %>% 
  summarise(tmedia_verao = mean(tmedia, na.rm = TRUE))
# Calculando as estatísticas para a questão 1
estatisticas_cidade <- climas %>% 
  group_by(cidade) %>% 
  summarise(Min = min(tmedia, na.rm = TRUE),
            `1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
            Median = median(tmedia, na.rm = TRUE),
            Mean = mean(tmedia, na.rm = TRUE),
            `3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
            Max = max(tmedia, na.rm = TRUE))

print(estatisticas_cidade)
## # A tibble: 2 × 7
##   cidade           Min `1st Qu.` Median  Mean `3rd Qu.`   Max
##   <chr>          <dbl>     <dbl>  <dbl> <dbl>     <dbl> <dbl>
## 1 Campina Grande  20.8      23.5   25.0  24.7      25.9  28.6
## 2 João Pessoa     24.0      26.8   27.8  27.7      28.6  30.1
estatisticas_cidade_verao <- climas %>% 
  filter(mes %in% c(1, 2)) %>% 
  group_by(cidade) %>% 
  summarise(Min = min(tmedia, na.rm = TRUE),
            `1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
            Median = median(tmedia, na.rm = TRUE),
            Mean = mean(tmedia, na.rm = TRUE),
            `3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
            Max = max(tmedia, na.rm = TRUE))

print(estatisticas_cidade_verao)
## # A tibble: 2 × 7
##   cidade           Min `1st Qu.` Median  Mean `3rd Qu.`   Max
##   <chr>          <dbl>     <dbl>  <dbl> <dbl>     <dbl> <dbl>
## 1 Campina Grande  23.0      25.3   25.9  25.9      26.5  28.0
## 2 João Pessoa     26.6      28.3   28.7  28.7      29.0  30.1
cidade_quente <- left_join(cidade_quente, cidade_quente_verao, by = "cidade")

cidade_quente_graf <- cidade_quente %>% 
  gather(key = "periodo", value = "tmedia", -cidade) %>% 
  ggplot(aes(x = cidade, y = tmedia, fill = periodo)) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  geom_text(aes(label = round(tmedia, 1)), vjust = 1.8, position = position_dodge(0.9)) +
  labs(x = "Cidade", y = "Temperatura Média", 
       title = "Comparação da Temperatura Média entre as Cidades") +
  scale_fill_discrete(labels = c("Temperatura Média", "Temperatura Média no Verão")) +
  theme_minimal()

print(cidade_quente_graf)

Com base nos resultados, podemos observar que João Pessoa é a cidade mais quente, tanto em termos de temperatura média anual quanto de temperatura média no verão. A temperatura média anual em João Pessoa é de 27.7°C, enquanto em Campina Grande é de 24.7°C. Durante o pico do verão (janeiro e fevereiro), a temperatura média aumenta para 28.7°C em João Pessoa e 25.9°C em Campina Grande.

A escolha da temperatura média como métrica é justificada pelo fato de que ela fornece uma medida geral do clima de uma cidade, levando em consideração tanto as altas quanto as baixas temperaturas.

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

climas = climas %>% 
  mutate(nome_mes = month(mes, label = TRUE))

temp_mes = climas %>% 
  group_by(cidade, nome_mes) %>% 
  summarise(temp_media_mes = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Listagem para cada cidade com as temperaturas ordenadas do maior para o menor
temp_mes_quentes = temp_mes %>% 
  arrange(cidade, desc(temp_media_mes))

# Listagem para cada cidade com as temperaturas ordenadas do menor para o maior
temp_mes_frios = temp_mes %>% 
  arrange(cidade, temp_media_mes)

# Separa a listagem de temperaturas quentes por cidade
temp_mes_quentes_cg = temp_mes_quentes %>% 
  filter(cidade == "Campina Grande")

temp_mes_quentes_jp = temp_mes_quentes %>% 
  filter(cidade == "João Pessoa")

# Separa a listagem de temperaturas frias por cidade
temp_mes_frios_cg = temp_mes_frios %>% 
  filter(cidade == "Campina Grande")

temp_mes_frios_jp = temp_mes_frios %>% 
  filter(cidade == "João Pessoa")
temp_mes_quentes_cg
## # A tibble: 12 × 3
## # Groups:   cidade [1]
##    cidade         nome_mes temp_media_mes
##    <chr>          <ord>             <dbl>
##  1 Campina Grande dez                25.9
##  2 Campina Grande fev                25.9
##  3 Campina Grande mar                25.9
##  4 Campina Grande jan                25.8
##  5 Campina Grande nov                25.7
##  6 Campina Grande abr                25.3
##  7 Campina Grande out                25.1
##  8 Campina Grande mai                24.3
##  9 Campina Grande set                24.0
## 10 Campina Grande jun                22.8
## 11 Campina Grande ago                22.7
## 12 Campina Grande jul                22.3
temp_mes_quentes_jp
## # A tibble: 12 × 3
## # Groups:   cidade [1]
##    cidade      nome_mes temp_media_mes
##    <chr>       <ord>             <dbl>
##  1 João Pessoa mar                28.8
##  2 João Pessoa fev                28.8
##  3 João Pessoa jan                28.5
##  4 João Pessoa dez                28.5
##  5 João Pessoa abr                28.3
##  6 João Pessoa nov                28.2
##  7 João Pessoa out                27.7
##  8 João Pessoa mai                27.6
##  9 João Pessoa set                27.0
## 10 João Pessoa jun                26.4
## 11 João Pessoa ago                26.2
## 12 João Pessoa jul                25.9
temp_mes_frios_cg
## # A tibble: 12 × 3
## # Groups:   cidade [1]
##    cidade         nome_mes temp_media_mes
##    <chr>          <ord>             <dbl>
##  1 Campina Grande jul                22.3
##  2 Campina Grande ago                22.7
##  3 Campina Grande jun                22.8
##  4 Campina Grande set                24.0
##  5 Campina Grande mai                24.3
##  6 Campina Grande out                25.1
##  7 Campina Grande abr                25.3
##  8 Campina Grande nov                25.7
##  9 Campina Grande jan                25.8
## 10 Campina Grande mar                25.9
## 11 Campina Grande fev                25.9
## 12 Campina Grande dez                25.9
temp_mes_frios_jp
## # A tibble: 12 × 3
## # Groups:   cidade [1]
##    cidade      nome_mes temp_media_mes
##    <chr>       <ord>             <dbl>
##  1 João Pessoa jul                25.9
##  2 João Pessoa ago                26.2
##  3 João Pessoa jun                26.4
##  4 João Pessoa set                27.0
##  5 João Pessoa mai                27.6
##  6 João Pessoa out                27.7
##  7 João Pessoa nov                28.2
##  8 João Pessoa abr                28.3
##  9 João Pessoa dez                28.5
## 10 João Pessoa jan                28.5
## 11 João Pessoa fev                28.8
## 12 João Pessoa mar                28.8
# Calculando as estatísticas para as festas juninas
estatisticas_juninas <- climas %>% 
  filter(mes == 6) %>% 
  group_by(cidade) %>% 
  summarise(Min = min(tmedia, na.rm = TRUE),
            `1st Qu.` = quantile(tmedia, 0.25, na.rm = TRUE),
            Median = median(tmedia, na.rm = TRUE),
            Mean = mean(tmedia, na.rm = TRUE),
            `3rd Qu.` = quantile(tmedia, 0.75, na.rm = TRUE),
            Max = max(tmedia, na.rm = TRUE))

print(estatisticas_juninas)
## # A tibble: 2 × 7
##   cidade           Min `1st Qu.` Median  Mean `3rd Qu.`   Max
##   <chr>          <dbl>     <dbl>  <dbl> <dbl>     <dbl> <dbl>
## 1 Campina Grande  21.3      22.2   22.8  22.8      23.3  24.9
## 2 João Pessoa     24.0      25.8   26.4  26.4      26.9  28.3
climas_mes_cidade <- climas %>% 
  group_by(mes, cidade) %>% 
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'mes'. You can override using the `.groups`
## argument.
# Gerando o gráfico
graf_mes_cidade <- climas_mes_cidade %>% 
  ggplot(aes(x = mes, y = tmedia, color = cidade)) +
  geom_line() +
  geom_point() +
  geom_text(aes(label = round(tmedia, 1)), vjust = 1.8, size = 3, position = position_dodge(0.9)) +
  scale_x_continuous(breaks = 1:12) +
  labs(x = "Mês", y = "Temperatura Média", 
       title = "Temperatura Média por Mês e Cidade",
       color = "Cidade") +
  theme_minimal() +
  theme(legend.position = "bottom")

print(graf_mes_cidade)

climas_ano_cidade <- climas %>% 
  group_by(ano, cidade) %>% 
  summarise(tmedia = mean(tmedia, na.rm = TRUE))
## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.
# Gerando o gráfico
graf_ano_cidade <- climas_ano_cidade %>% 
  ggplot(aes(x = ano, y = tmedia, color = cidade)) +
  geom_line() +
  geom_point() +
  geom_text(aes(label = round(tmedia, 1)), vjust = 1.5, size = 2.5, position = position_dodge(0.9)) +
  scale_x_continuous(breaks = seq(min(climas$ano), max(climas$ano), by = 1)) +
  labs(x = "Ano", y = "Temperatura Média", 
       title = "Temperatura Média por Ano e Cidade",
       color = "Cidade") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
        legend.position = "bottom")

print(graf_ano_cidade)

theme_set(theme_gray())

Com base nos resultados, podemos observar que os meses mais quentes em Campina Grande são dezembro, fevereiro e março, enquanto em João Pessoa são março, fevereiro e janeiro. Por outro lado, os meses mais frios em Campina Grande são julho, agosto e junho, e em João Pessoa são julho, agosto e junho.

Durante as festas juninas (mês de junho), a temperatura média em Campina Grande é de 22.84°C, com uma mínima de 21.34°C e uma máxima de 24.85°C. Em João Pessoa, a temperatura média é um pouco mais alta, sendo 26.36°C, com uma mínima de 23.99°C e uma máxima de 28.28°C.

A escolha da temperatura média como métrica é justificada pelo fato de que ela fornece uma medida geral do clima de uma cidade, levando em consideração tanto as altas quanto as baixas temperaturas. Além disso, ao considerar a temperatura média por mês e por ano, podemos obter uma visão mais específica das condições climáticas durante diferentes períodos de tempo. Isso é particularmente relevante em regiões onde o clima varia significativamente ao longo do ano.

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

chuva_semanal = climas %>% 
  group_by(cidade, semana) %>% 
  summarise(chuva_total = sum(chuva, na.rm = TRUE))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
# Calculando a média, mediana, desvio padrão e variância da chuva semanal para cada cidade
chuva_semanal_stats <- chuva_semanal %>% 
  group_by(cidade) %>% 
  summarise(
    media = mean(chuva_total, na.rm = TRUE),
    mediana = median(chuva_total, na.rm = TRUE),
    desvio_padrao = sd(chuva_total, na.rm = TRUE),
    variancia = var(chuva_total, na.rm = TRUE)
  )
chuva_semanal_stats
## # A tibble: 2 × 5
##   cidade         media mediana desvio_padrao variancia
##   <chr>          <dbl>   <dbl>         <dbl>     <dbl>
## 1 Campina Grande  14.0     4.9          21.7      469.
## 2 João Pessoa     32.6    14.1          44.5     1978.
# Sumário dos dados de chuva semanal para cada cidade
chuva_semanal_sumario <- chuva_semanal %>% 
  group_by(cidade) %>% 
  summarise(
    Min = min(chuva_total, na.rm = TRUE),
    `1st Qu.` = quantile(chuva_total, 0.25, na.rm = TRUE),
    Median = median(chuva_total, na.rm = TRUE),
    Mean = mean(chuva_total, na.rm = TRUE),
    `3rd Qu.` = quantile(chuva_total, 0.75, na.rm = TRUE),
    Max = max(chuva_total, na.rm = TRUE)
  )

chuva_semanal_sumario
## # A tibble: 2 × 7
##   cidade           Min `1st Qu.` Median  Mean `3rd Qu.`   Max
##   <chr>          <dbl>     <dbl>  <dbl> <dbl>     <dbl> <dbl>
## 1 Campina Grande     0       0.4    4.9  14.0      18.7  192.
## 2 João Pessoa        0       3     14.1  32.6      46.4  352.
# Boxplot para cada cidade
ggplot(chuva_semanal, aes(x = cidade, y = chuva_total)) +
  geom_boxplot() +
  labs(title = "Boxplot do volume de chuvas por semana em JP e CG",
       x = "Cidade",
       y = "Chuva total (mm)")

# Histograma para cada cidade
ggplot(chuva_semanal, aes(x = chuva_total, fill = cidade)) +
  geom_histogram(bins = 30, alpha = 0.5, position = 'identity') +
  labs(title = "Histograma do volume de chuvas por semana em JP e CG",
       x = "Chuva total (mm)",
       y = "Frequência",
       fill = "Cidade")

# Gráfico de dispersão para cada cidade
ggplot(chuva_semanal, aes(x = semana, y = chuva_total)) +
  geom_point(color = "#1F77B4") +
  facet_grid(~cidade) +
  labs(title = "Gráfico de dispersão do volume de chuvas por semana em JP e CG",
       x = "Semana",
       y = "Chuva total (mm)")

Com base nos resultados, podemos observar que a quantidade de chuva por semana varia significativamente entre as cidades de Campina Grande e João Pessoa.

Em média, João Pessoa recebe mais chuva por semana (32.65 mm) do que Campina Grande (13.99 mm). A mediana da chuva semanal também é maior em João Pessoa (14.1 mm) em comparação com Campina Grande (4.9 mm). Isso sugere que, em geral, João Pessoa tende a ter mais chuva semanalmente do que Campina Grande.

Além disso, a variância e o desvio padrão da chuva semanal são maiores em João Pessoa, indicando que a quantidade de chuva por semana em João Pessoa varia mais amplamente do que em Campina Grande.

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

# Calculando o coeficiente de correlação de Pearson
correlacao_pearson = climas %>% 
  group_by(cidade) %>% 
  summarise(correlacao = cor(temp_anterior, tmedia, method = "pearson", use = "pairwise.complete.obs"))

correlacao_pearson
## # A tibble: 2 × 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande      0.880
## 2 João Pessoa         0.859
# Calculando o coeficiente de correlação de Spearman
correlacao_spearman = climas %>% 
  group_by(cidade) %>% 
  summarise(correlacao = cor(temp_anterior, tmedia, method = "spearman", use = "pairwise.complete.obs"))

correlacao_spearman
## # A tibble: 2 × 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande      0.856
## 2 João Pessoa         0.860
# Calculando o coeficiente de correlação de Kendall
correlacao_kendall = climas %>% 
  group_by(cidade) %>% 
  summarise(correlacao = cor(temp_anterior, tmedia, method = "kendall", use = "pairwise.complete.obs"))

correlacao_kendall
## # A tibble: 2 × 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande      0.669
## 2 João Pessoa         0.683
temp_relacao <- climas %>% 
  ggplot(aes(x = temp_anterior, y = tmedia)) +
  geom_point() +
  geom_smooth(method = "lm") +
  facet_wrap(~cidade) +
  labs(title = "Relação entre a temperatura de uma semana e a semana anterior",
       x = "Temperatura da semana anterior (°C)",
       y = "Temperatura média da semana atual (°C)")

temp_relacao
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

Com base nos resultados, podemos observar que existe uma forte correlação positiva entre a temperatura de uma semana e a temperatura da semana anterior para ambas as cidades, Campina Grande e João Pessoa. Isso é evidenciado pelos coeficientes de correlação de Pearson, Spearman e Kendall, que são todos significativamente altos.

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

# Separando os dados por cidade
climas_cg = climas %>% filter(cidade == "Campina Grande")
climas_jp = climas %>% filter(cidade == "João Pessoa")
# Calculando as correlações para Campina Grande
correlacao_pearson_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "pearson", use = "pairwise.complete.obs")
correlacao_spearman_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "spearman", use = "pairwise.complete.obs")
correlacao_kendall_cg = cor(climas_cg$tmedia, climas_cg$chuva, method = "kendall", use = "pairwise.complete.obs")

cat(paste("Correlações para Campina Grande:\nPearson:", correlacao_pearson_cg, "\nSpearman:", correlacao_spearman_cg, "\nKendall:", correlacao_kendall_cg))
## Correlações para Campina Grande:
## Pearson: -0.395831070013836 
## Spearman: -0.541074266715462 
## Kendall: -0.376791296740262
# Gráfico para Campina Grande
ggplot(climas_cg, aes(x = tmedia, y = chuva)) +
  geom_point(color = "#1F77B4") +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(title = "Relação entre temperatura e chuvas em Campina Grande",
       x = "Temperatura média da semana (°C)",
       y = "Chuva (mm)")
## `geom_smooth()` using formula = 'y ~ x'

# Calculando as correlações para João Pessoa
correlacao_pearson_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "pearson", use = "pairwise.complete.obs")
correlacao_spearman_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "spearman", use = "pairwise.complete.obs")
correlacao_kendall_jp = cor(climas_jp$tmedia, climas_jp$chuva, method = "kendall", use = "pairwise.complete.obs")

cat(paste("Correlações para João Pessoa\nPearson:", correlacao_pearson_jp, "\nSpearman:", correlacao_spearman_jp, "\nKendall:", correlacao_kendall_jp))
## Correlações para João Pessoa
## Pearson: -0.441130867729121 
## Spearman: -0.483612482663624 
## Kendall: -0.328018102300212
# Gráfico para João Pessoa
ggplot(climas_jp, aes(x = tmedia, y = chuva)) +
  geom_point(color = "#1F77B4") +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  labs(title = "Relação entre temperatura e chuvas em João Pessoa",
       x = "Temperatura média da semana (°C)",
       y = "Chuva (mm)")
## `geom_smooth()` using formula = 'y ~ x'

Com base nos resultados, podemos observar que existe uma correlação negativa moderada entre a temperatura e a quantidade de chuvas nas semanas em que choveu para ambas as cidades, Campina Grande e João Pessoa. Isso é evidenciado pelos coeficientes de correlação de Pearson, Spearman e Kendall, que são todos negativos.