Nessa EDA iremos nos concentrar em responder duas perguntas:
Primeiramente iremos carregar bibliotecas importantes na nossa analise que é a tidyverse, que fornecerá uma gama de funções, e a here, que lida em corrigir nossos caminhos relativos em absolutos em nossos dispositivos.
library(tidyverse)
library(here)
theme_set(theme_bw())
A coleta dos dados foi feita por meio dos dados fornecidos pelo BDMEP e após algumas transformações para se trabalhar com dados semanais, ao inves de diário, teremos o tempo-jp-cg-pt.csv com nosso arsenal! Abaixo temos o código que carrega do csv na variável clima os dados como cidade, semana, ano e mês, mas também a temperatura média e a chuva nas nossas cidade alvo:
clima = read_csv(
here("data/tempo-jp-cg-pt.csv"),
col_types = cols(
.default = col_double(),
cidade = col_character(),
semana = col_date(format = ""),
ano = col_integer(),
mes = col_integer(),
temp_media = col_double(),
chuva = col_double()
)
)
clima %>%
rmarkdown::paged_table()
Primeiramente iremos criar uma nova coluna para armazenar a temperatura da semana passada, como feito abaixo:
clima = clima %>%
mutate(temp_anterior = lag(temp_media, n = 1))
clima %>%
rmarkdown::paged_table()
Agora visualizando a relação entre a temperatura de uma semana e a da semana passada temos:
clima %>%
filter(!is.na(temp_media), !is.na(temp_anterior)) %>%
mutate(ponto_extremo = (temp_media > 27 & temp_anterior < 24)) %>%
ggplot(aes(x = temp_media, y = temp_anterior, color = !ponto_extremo)) +
geom_point(alpha = .5, show.legend = FALSE) +
geom_smooth(method = 'gam', formula = 'y ~ s(x, bs = "cs")', color = 'darkred') +
labs(
title = "Temperatura da n-esima semana vs (n-1)-esima semana",
y = "Temperatura da semana passada em °C",
x = "Temperatura da semana em °C"
) +
scale_color_manual(values=c("red", "gray"))
É possível observar que há uma relação linear (formato) entre ambas as variaveis de temperatura, como mostrado tambem pela linha suave no grafico, de forma positiva (sinal), ou seja se uma semana tem temperaturas altas a semana passada tende a ter uma temperatura alta, e com um ponto extremo que em minha opinião foi o que mais se distancia da reta, vemos abaixo como se da a intensidade dessa relação por meio dos coeficientes de pearson, kendall e spearman.
clima %>%
filter(!is.na(temp_media), !is.na(temp_anterior)) %>%
summarise(
pearson = cor(temp_media, temp_anterior, method = "pearson"),
kendall = cor(temp_media, temp_anterior, method = "kendall"),
spearman = cor(temp_media, temp_anterior, method = "spearman")) %>%
rmarkdown::paged_table()
Observamos que todos eles deram relativamente altos:
Primeiramente vamos visualizar a temperatura versus a chuva em um grafico de pontos coloridos por cidade. Para nos ajudar tambem peguemos os valores minimos e maximos para ambas as variaveis, por cidade.
clima %>%
filter(!is.na(temp_media), !is.na(chuva)) %>%
ggplot(aes(x = chuva, y = temp_media, color = cidade)) +
geom_point(alpha = .5) +
labs(
title = "Temperatura da semana em °C X chuva da semana em mm",
y = "Temperatura da semana em °C",
x = "Chuva da semana em mm"
)
clima %>%
filter(!is.na(temp_media), !is.na(chuva)) %>%
group_by(cidade) %>%
summarise(
min_temp = min(temp_media),
max_temp = max(temp_media),
min_chuva = min(chuva),
max_chuva = max(chuva),
) %>%
rmarkdown::paged_table()
Nessa primeira observação vemos diferentes frentes para cada cidade:
Agora iremos separar as cidade em graficos diferentes para analisar se o comportamento muda:
clima %>%
filter(!is.na(temp_media), !is.na(chuva)) %>%
ggplot(aes(x = chuva, y = temp_media, color = cidade)) +
geom_point(alpha = .5) +
facet_grid(~ cidade) +
labs(
title = "Temperatura da semana em °C X chuva da semana em mm",
y = "Temperatura da semana em °C",
x = "Chuva da semana em mm"
)
Como comentado acima, João Pessoa parece ter uma calda maior para valores de chuva quando a temperatura cai, veremos isso com uma mudança de escala no eixo x que tem um intervalo maior de valores (0 - 400) do que o eixo y (20 - 32.5) mostrado abaixo:
clima %>%
filter(!is.na(temp_media), !is.na(chuva)) %>%
ggplot(aes(x = log10(chuva), y = temp_media, color = cidade)) +
geom_point(alpha = .5) +
facet_grid(~ cidade) +
geom_smooth(method = 'loess', formula = 'y ~ x', color = "black") +
labs(
title = "Temperatura da semana em °C X log10 chuva da semana em mm ",
y = "Temperatura da semana em °C",
x = "Log10 da chuva da semana em mm"
)
Agora podemos ver que em Campina Grande e João Pessoa há uma relação negativa (sinal), que parece com uma curva descrecente (formato) como mostrado na representação feita pelo geom_smooth() com muitos valores extremos (vemos que muitos pontos fogem da curva), abaixo vemos como se da a intensidade pelo coeficientes de correlação. Para Patos vemos que é formado uma reta, mas que ela nao representa uma relação entre a temperatura e a chuva, me parece algo mais aleatorio.
clima %>%
filter(!is.na(temp_media), !is.na(chuva)) %>%
group_by(cidade) %>%
summarise(
pearson = cor(temp_media, chuva, method = "pearson"),
kendall = cor(temp_media, chuva, method = "kendall"),
spearman = cor(temp_media, chuva, method = "spearman")) %>%
rmarkdown::paged_table()
Podemos confirmar o dito anteriormente, Campina Grande e João pessoa temos uma relação maior entre temperatura e chuva do que a cidade de Patos, apesar de ser uma relação negativa fraca/média. Para o coeficiente de pearson não podemos afirmar algo de seu resultado pelo fato da relação não ser linear (como vista anteriormente se parece como uma curva quando comparado o log10 da chuva com a temperatura) e existem muitos pontos extremos, mas os outros coeficientes concluem o dito.