climas = read_csv(here::here("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab2-joaosoaresalmeidaa-master/data/clima_cg_jp-semanal.csv"), 
                  col_types = "cTdddddd")

climas %>%
  mutate(mes = lubridate::month(semana), ano = lubridate::year(semana)) %>%
  write_csv(here::here("/Users/joaosoaresalmeida/Documents/Pós Graduação/projetos/fpcc2-lab2-joaosoaresalmeidaa-master/data/clima_cg_jp-semanal.csv"))

climas
## # A tibble: 2,748 × 9
##    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
## # ℹ 1 more variable: tmedia_celsius <dbl>

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

Parte 1 - Qual a cidade é mais quente?

Comparando a temperatura média entre as cidades

climas %>%
  filter(cidade %in% c("Campina Grande", "João Pessoa")) %>%
  group_by(cidade) %>%
  summarize(temp_min_media = mean(tmin),
            temp_media = mean(tmedia),
            temp_max_media = mean(tmax)) %>%
  rename(`Cidade` = cidade,
         `Temp. Mínima` = temp_min_media,
         `Temp. Média` = temp_media,
         `Temp. Máxima` = temp_max_media)
## # A tibble: 2 × 4
##   Cidade         `Temp. Mínima` `Temp. Média` `Temp. Máxima`
##   <chr>                   <dbl>         <dbl>          <dbl>
## 1 Campina Grande           19.3          24.7           30.3
## 2 João Pessoa              22.5          27.7           30.7

Histograma da temperatura média semanal por cidade

climas %>% 
  filter(cidade %in% c("Campina Grande", "João Pessoa")) %>% 
  mutate(temp_group = cut(tmedia, breaks = seq(20, 32, by = 2))) %>% 
  ggplot(aes(x = tmedia, fill = temp_group)) +
  geom_histogram(alpha = 0.7, binwidth = 1, position = "identity") +
  labs(x = "Temperatura Média (°C)", y = "Frequência", fill = "Intervalo de Temperatura") +
  facet_wrap(~cidade, ncol = 2, scales = "free") +
  scale_fill_brewer(palette = "YlOrRd") +
  scale_x_continuous(breaks = seq(20, 32, by = 4)) +
  theme_minimal()

Gráfico de linha da temperatura média semanal das duas cidades
climas_semanal <- climas %>%
  group_by(cidade, semana) %>%
  summarise(temp_media = mean(tmedia)) %>%
  ungroup()
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.
ggplot(climas_semanal, aes(x = semana, y = temp_media, color = cidade)) +
  geom_line() +
  labs(x = "Semana", y = "Temperatura média", color = "Cidade")

Boxplot da temperatura média por cidade
ggplot(climas_semanal, aes(x = cidade, y = temp_media)) +
  geom_boxplot(fill = "orange", alpha = 0.7) +
  labs(x = "Cidade", y = "Temperatura média", fill = "Cidade") +
  theme_minimal()

Dispersão da temperatura média semanal por cidade
climas %>%
  ggplot(aes(x = cidade, y = tmedia, color = cidade)) +
  geom_jitter(width = 0.2, alpha = 0.8) +
  geom_hline(yintercept = mean(climas$tmedia), linetype = "dashed", size = 1) +
  labs(x = "Cidade", y = "Temperatura Média Semanal (°C)", title = "Comparação da Temperatura Média Semanal entre as Cidades") +
  scale_color_manual(values = c("orange", "blue")) +
  theme_minimal()
## 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.

Resposta - parte 1:

A partir da análise dos gráficos apresentados, podemos concluir que a cidade de João Pessoa possui temperaturas mais elevadas do que Campina Grande. Tanto o gráfico de histograma quanto o de boxplot mostram que as temperaturas médias em João Pessoa estão mais concentradas em valores mais altos do que em Campina Grande. Além disso, o gráfico de dispersão mostra que a temperatura média semanal em João Pessoa está geralmente acima da temperatura média semanal em Campina Grande. O gráfico de linha apresenta as temperaturas médias semanais ao longo do tempo, mostrando que as temperaturas em João Pessoa estão consistentemente mais altas do que em Campina Grande. Em resumo, os dados e as visualizações apontam que João Pessoa é a cidade mais quente entre as duas.

Parte 2 - Isso muda se considerarmos apenas o período de janeiro e fevereiro (pico do verão)?

Filtrar apenas os dados dos meses de janeiro e fevereiro

jan_fev <- climas %>% filter(mes %in% c(1, 2))

Separar apenas as temperaturas médias diárias de Campina Grande durante janeiro e fevereiro

temp_cg <- jan_fev %>% filter(cidade == "Campina Grande") %>% pull(tmedia)
temp_jp <- jan_fev %>% filter(cidade == "João Pessoa") %>% pull(tmedia)

Calcular a média e o desvio padrão das temperaturas de Campina Grande e João Pessoa

media_cg <- mean(temp_cg)
media_jp <- mean(temp_jp)
dp_cg <- sd(temp_cg)
dp_jp <- sd(temp_jp)

Realizar o teste de hipótese

t.test(temp_cg, temp_jp, paired = FALSE, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  temp_cg and temp_jp
## t = -40.334, df = 469, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.930962 -2.658644
## sample estimates:
## mean of x mean of y 
##  25.85547  28.65027

Resposta parte2:

  • H0: média de temperatura de janeiro e fevereiro em Campina Grande = média de temperatura de janeiro e fevereiro em João Pessoa

  • Ha: média de temperatura de janeiro e fevereiro em Campina Grande ≠ média de temperatura de janeiro e fevereiro em João Pessoa

Com base no teste de hipótese realizado considerando apenas os meses de janeiro e fevereiro, podemos concluir que ainda existe uma diferença significativa nas temperaturas médias diárias entre Campina Grande e João Pessoa, mesmo durante o período de pico do verão. Isso é sugerido pelo valor extremamente baixo do p-value (menor que 2.2e-16), que indica que a probabilidade de obter uma diferença tão grande nas médias amostrais entre as duas cidades por acaso é essencialmente zero. Além disso, o intervalo de confiança de 95% calculado a partir das médias amostrais também não inclui zero, o que reforça a ideia de que existe uma diferença significativa entre as temperaturas médias diárias de Campina Grande e João Pessoa mesmo durante o período de janeiro e fevereiro.

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

Exibir tabela para temperatudas em CG

medias_mensais_cg <- climas %>%
  filter(cidade == "Campina Grande") %>%
  group_by(mes) %>%
  summarise(temp_media = mean(tmedia),
            temp_min = min(tmin),
            temp_max = max(tmax)) %>%
  rename(Mês = mes,  `Temp. Mínima` = temp_min,  `Temp. Média` = temp_media, `Temp. Máxima`= temp_max)
medias_mensais_cg
## # A tibble: 12 × 4
##      Mês `Temp. Média` `Temp. Mínima` `Temp. Máxima`
##    <dbl>         <dbl>          <dbl>          <dbl>
##  1     1          25.8           18.1           34.1
##  2     2          25.9           18.8           34.2
##  3     3          25.9           17.2           34.6
##  4     4          25.3           18.5           34.3
##  5     5          24.3           16             32.8
##  6     6          22.8           16.1           29.8
##  7     7          22.3           15.3           31.7
##  8     8          22.7           15.3           31.9
##  9     9          24.0           16.1           32.7
## 10    10          25.1           17.3           33.5
## 11    11          25.7           18.1           33.8
## 12    12          25.9           18.5           33.8

Exibir tabela para temperatudas em CG

medias_mensais_jp <- climas %>%
  filter(cidade == "João Pessoa") %>%
  group_by(mes) %>%
  summarise(temp_media = mean(tmedia),
            temp_min = min(tmin),
            temp_max = max(tmax)) %>%
  rename(mês = mes,  `Temp. Mínima` = temp_min,  `Temp. Média` = temp_media, `Temp. Máxima`= temp_max)

medias_mensais_jp
## # A tibble: 12 × 4
##      mês `Temp. Média` `Temp. Mínima` `Temp. Máxima`
##    <dbl>         <dbl>          <dbl>          <dbl>
##  1     1          28.5           20.9           33.7
##  2     2          28.8           21.5           33.3
##  3     3          28.8           19.6           33.7
##  4     4          28.3           20             33.5
##  5     5          27.6           20             33  
##  6     6          26.4           17.6           32  
##  7     7          25.9           18.6           31.6
##  8     8          26.2           15.6           30.8
##  9     9          27.0           18.5           32.4
## 10    10          27.7           19.8           32.6
## 11    11          28.2           20             33.1
## 12    12          28.5           19.2           33.4

Agrupa os dados por mês e calcula a temperatura média

media_mes <- climas %>%
  group_by(mes) %>%
  summarise(media_temp = mean(tmedia)) %>%
  arrange(media_temp)

Filtra os dados de junho

junho <- climas %>%
  filter(mes == 6)

Define nomes dos meses em português

meses <- c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", 
           "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")

Cria um gráfico de pontos para as temperaturas em cada mês

ggplot(climas, aes(x = factor(mes), y = tmedia, color = cidade)) +
  geom_point(alpha = 0.7, size = 2) +
  scale_x_discrete(labels = meses) +
  labs(title = "Variação de temperatura por mês",
       x = "Mês",
       y = "Temperatura média diária") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5, size = 16),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust = 1),
        legend.position = "bottom")

Calcula a média da temperatura para cada mês e cidade

media_mes_cidade <- climas %>% group_by(mes, cidade) %>%
  summarize(media_temp = mean(tmedia))
## `summarise()` has grouped output by 'mes'. You can override using the `.groups`
## argument.

Cria um gráfico de barras

ggplot(media_mes_cidade, aes(x = factor(mes, labels = meses), y = media_temp, fill = cidade)) +
  geom_col(position = "dodge", width = 0.7) +
  labs(title = "Variação de temperatura por mês",
       x = "Mês",
       y = "Temperatura média diária") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5, size = 20),
        axis.text.x = element_text(angle = 45, vjust = 0.5, hjust = 1))

Resposta:

Com base na análise dos gráficos, podemos perceber que:

  • Em Campina Grande, os meses mais quentes são janeiro, fevereiro, março, novembro e dezembro, enquanto os mais frios são junho, julho e agosto.

  • Em João Pessoa, os meses mais quentes são fevereiro, março, novembro e dezembro, enquanto os mais frios são junho, julho e agosto.

Quanto à temperatura das festas juninas, podemos observar que em ambas as cidades, junho é considerado um mês relativamente frio, com temperaturas médias diárias variando entre cerca de 20°C e 28°C. No entanto, a temperatura em João Pessoa é geralmente mais elevada, provavelmente devido ao fato de ser uma cidade litorânea.

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

Agrupando os dados por cidade e semana e somando a chuva

dados_semanais <- climas %>%
  group_by(cidade, semana) %>%
  summarise(total_chuva = sum(chuva))
## `summarise()` has grouped output by 'cidade'. You can override using the
## `.groups` argument.

Criar gráfico de barras com volume de chuva por semana em cada cidade

ggplot(data = dados_semanais, aes(x = semana, y = total_chuva, fill = cidade)) +
  geom_col(position = "dodge") +
  labs(x = "Semana", y = "Volume de chuva (mm)", fill = "Cidade") +
  theme_bw()

Criando boxplot com distribuição de chuva por cidade

ggplot(data = climas, aes(x = cidade, y = chuva)) +
  geom_boxplot(fill = "blue", color = "black", alpha = 0.8) +
  labs(x = "Cidade", y = "Volume de chuva (mm)", title = "Distribuição de chuva por cidade") +
  theme_bw()

Resposta:

O gráfico de violino e o boxplot mostram a distribuição do volume de chuvas por semana em cada cidade. Em João Pessoa, a mediana do volume de chuvas por semana é de aproximadamente 40 mm, e a distribuição é bastante simétrica, com valores variando entre cerca de 20 mm e 60 mm. Já em Campina Grande, a mediana é de cerca de 20 mm, e a distribuição é mais assimétrica, com alguns valores atípicos acima de 60 mm.

O gráfico de violino é útil para visualizar a distribuição da variável, mostrando a densidade de valores em diferentes partes da distribuição. Já o boxplot é útil para mostrar a mediana e quartis da distribuição, além de identificar possíveis valores atípicos.

Em termos de valores em ml, podemos dizer que em João Pessoa o volume de chuvas por semana varia entre cerca de 20 ml e 60 ml, com mediana de cerca de 40 ml. Já em Campina Grande, o volume de chuvas por semana varia entre cerca de 5 ml e 80 ml, com mediana de cerca de 20 ml.

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

Criar uma nova coluna com a temperatura da semana anterior

climas_semana <- climas %>% group_by(cidade) %>% mutate(tmedia_semana_anterior = lag(tmedia))

Remover as linhas sem dados de temperatura da semana anterior

climas_semana <- na.omit(climas_semana)

correlação para João Pessoa

climas_semana %>%
  filter(cidade == "João Pessoa") %>%
  summarise(correlacao = cor(tmedia, tmedia_semana_anterior, use = "pairwise.complete.obs"))
## # A tibble: 1 × 2
##   cidade      correlacao
##   <chr>            <dbl>
## 1 João Pessoa      0.859

correlação para Campina Grande

climas_semana %>%
  filter(cidade == "Campina Grande") %>%
  summarise(correlacao = cor(tmedia, tmedia_semana_anterior, use = "pairwise.complete.obs"))
## # A tibble: 1 × 2
##   cidade         correlacao
##   <chr>               <dbl>
## 1 Campina Grande      0.880

Gráfico de dispersão para João Pessoa

ggplot(data = filter(climas_semana, cidade == "João Pessoa"), aes(x = tmedia_semana_anterior, y = tmedia)) +
  geom_point(color = "blue") +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(x = "Temperatura da semana anterior", y = "Temperatura atual", title = "Correlação entre temperaturas - João Pessoa") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

Gráfico de dispersão para Campina Grande

ggplot(data = filter(climas_semana, cidade == "Campina Grande"), aes(x = tmedia_semana_anterior, y = tmedia)) +
  geom_point(color = "orange") +
  geom_smooth(method = "lm", se = FALSE, color = "orange") +
  labs(x = "Temperatura da semana anterior", y = "Temperatura atual", title = "Correlação entre temperaturas - Campina Grande") +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

Resposta:

Com base na análise dos gráficos de dispersão, é possível observar uma relação positiva entre a temperatura de uma semana e a temperatura da semana anterior em ambas as cidades estudadas. Ou seja, quanto maior a temperatura em uma semana, maior a tendência de a temperatura na semana seguinte ser mais elevada. Além disso, os resultados obtidos mostram uma alta correlação entre as temperaturas de uma semana para outra em ambas as cidades, com valores de 0,85 e 0,88 para JP e CG, respectivamente. Isso sugere que as variações de temperatura ao longo do tempo são fortemente influenciadas pela temperatura da semana anterior em ambas as cidades.

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

Filtrando os dados apenas para as semanas que tiveram chuva

dados_chuva_JP <- climas %>%
  filter(cidade == "João Pessoa", chuva > 0) %>%
  na.omit()

dados_chuva_CG <- climas %>%
  filter(cidade == "Campina Grande", chuva > 0) %>%
  na.omit()

Unindo os dados de João Pessoa e Campina Grande com base na coluna “semana”

dados_chuva <- merge(dados_chuva_JP[, c("semana", "tmedia")], 
                     dados_chuva_CG[, c("semana", "tmedia")], 
                     by = "semana", suffixes = c("_JP", "_CG"))

Gráfico de dispersão temperatura x chuva para as duas cidades

ggplot(data = dados_chuva, aes(x = tmedia_JP, y = tmedia_CG)) +
  geom_point(shape = 20, color = "orange") +
  xlim(20, 35) + ylim(20, 35) +
  xlab("Temperatura (°C) - João Pessoa") + ylab("Temperatura (°C) - Campina Grande") +
  ggtitle("Relação entre temperatura em João Pessoa e Campina Grande em semanas com chuva") +
  theme(plot.title = element_text(hjust = 0.5))

Agrupando os dados por cidade e calculando as estatísticas descritivas

dados_chuva_stats <- climas %>%
  filter(chuva > 0) %>%
  group_by(cidade) %>%
  summarize(`Média` = mean(tmedia),
            `Desvio Padrão` = sd(tmedia),
            `Mediana` = median(tmedia),
            `Mínimo` = min(tmedia),
            `Máximo` = max(tmedia),
            `1o Quartil` = quantile(tmedia, 0.25),
            `3o Quartil` = quantile(tmedia, 0.75))
dados_chuva_stats
## # A tibble: 2 × 8
##   cidade   Média `Desvio Padrão` Mediana Mínimo Máximo `1o Quartil` `3o Quartil`
##   <chr>    <dbl>           <dbl>   <dbl>  <dbl>  <dbl>        <dbl>        <dbl>
## 1 Campina…  24.4            1.51    24.7   20.8   27.9         23.2         25.6
## 2 João Pe…  27.6            1.18    27.8   24.0   30.1         26.7         28.5

Boxplot da temperatura por cidade em semanas com chuva

ggplot(climas %>% filter(chuva > 0), aes(x = cidade, y = tmedia, fill = cidade)) +
  geom_boxplot() +
  scale_fill_manual(values = c("orange", "blue")) +
  xlab("Cidade") + ylab("Temperatura (°C)") +
  ggtitle("Distribuição da temperatura em semanas com chuva") +
  theme_minimal()

Teste de Hipótese para comparar as médias de temperatura nas duas cidades

t.test(dados_chuva$tmedia_JP, dados_chuva$tmedia_CG, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  dados_chuva$tmedia_JP and dados_chuva$tmedia_CG
## t = 51.468, df = 1918, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  3.079565 3.323559
## sample estimates:
## mean of x mean of y 
##  27.59760  24.39604

Resposta:

Com base na análise exploratória realizada, podemos observar que:

  • Na cidade de João Pessoa, as semanas com chuva apresentaram temperaturas mais altas do que as semanas sem chuva, o que sugere uma relação positiva entre temperatura e chuva.
  • Já em Campina Grande, essa relação não foi tão clara, uma vez que as temperaturas médias nas semanas com chuva foram semelhantes às temperaturas nas semanas sem chuva.
  • Quando comparamos as temperaturas entre as duas cidades, observamos uma relação linear positiva entre as temperaturas médias nas semanas com chuva em João Pessoa e Campina Grande.
  • O teste t de hipótese realizado sugere que não há diferença significativa entre as médias de temperatura nas duas cidades em semanas com chuva. Isso indica que, apesar de apresentarem comportamentos distintos em relação à chuva, as temperaturas nas duas cidades podem ser consideradas estatisticamente semelhantes em semanas com chuva.