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…
# 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>
# 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
# 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
climas <- climas %>%
filter(ano > 1994 & ano < 2019 & ano != 2000 & ano != 2001)
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.
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")
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
# 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.
# 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.
# 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.
# 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
# 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