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>
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
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()
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")
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()
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.
jan_fev <- climas %>% filter(mes %in% c(1, 2))
temp_cg <- jan_fev %>% filter(cidade == "Campina Grande") %>% pull(tmedia)
temp_jp <- jan_fev %>% filter(cidade == "João Pessoa") %>% pull(tmedia)
media_cg <- mean(temp_cg)
media_jp <- mean(temp_jp)
dp_cg <- sd(temp_cg)
dp_jp <- sd(temp_jp)
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.
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
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
media_mes <- climas %>%
group_by(mes) %>%
summarise(media_temp = mean(tmedia)) %>%
arrange(media_temp)
junho <- climas %>%
filter(mes == 6)
meses <- c("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho",
"Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
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")
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.
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.
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.
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()
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.
climas_semana <- climas %>% group_by(cidade) %>% mutate(tmedia_semana_anterior = lag(tmedia))
climas_semana <- na.omit(climas_semana)
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
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
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'
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.
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()
dados_chuva <- merge(dados_chuva_JP[, c("semana", "tmedia")],
dados_chuva_CG[, c("semana", "tmedia")],
by = "semana", suffixes = c("_JP", "_CG"))
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))
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
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()
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: