library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(here)
## here() starts at /Users/olaisaac/mestrado/fpcc2/fpcc2-lab2-matheusarauj
library(lubridate)
library(ggbeeswarm)
library(dplyr)
library(ggplot2)
theme_set(theme_bw())
dff <- read_csv("data/clima_cg_jp-semanal.csv",
col_types = "cTdddddd")
average_temperature_by_city <- function(data) {
avg_temperature <- aggregate(tmedia ~ cidade, data, mean)
return(avg_temperature)
}
average_temperature_by_city_and_two_months <- function(data) {
avg_temperature <- aggregate(tmedia ~ cidade, data[data$mes %in% c(1, 2), ], mean)
return(avg_temperature)
}
average_temperature_by_city_and_month <- function(data) {
agg_data <- aggregate(tmedia ~ mes, data, mean)
agg_data <- agg_data[order(agg_data$tmedia), ]
return(agg_data)
}
distribution_of_avg_precipitation_by_week_and_city <- function(data) {
agg_data <- aggregate(chuva ~ cidade + semana, data, mean)
plot <- ggplot(agg_data, aes(x = factor(semana), y = chuva, fill = cidade)) +
geom_bar(stat = "identity", position = "dodge") +
xlab("Week") +
ylab("Average Precipitation") +
ggtitle("Average Precipitation by Week and City") +
theme(plot.title = element_text(hjust = 0.5))
return(plot)
}
avg_precipitation_by_city <- function(data) {
agg_data <- aggregate(chuva ~ cidade, data, mean)
return(agg_data)
}
temperature_relationship <- function(data, city) {
city_data <- subset(data, cidade == city)
city_data$prev_avg_temperature <- lag(city_data$tmedia, 1)
corr <- cor(city_data$prev_avg_temperature, city_data$tmedia, use = "complete.obs")
plot(city_data$prev_avg_temperature, city_data$tmedia,
xlab = "Previous week's average temperature", ylab = "This week's average temperature",
main = paste("", ""))
return(corr)
}
precipitation_vs_temperature <- function(df, city){
df_sub <- df[df$cidade == city & df$chuva > 0, ]
corr <- cor(df_sub$chuva, df_sub$tmedia)
plot(df_sub$tmedia, df_sub$chuva, xlab = "Temperature", ylab = "Average Precipitation", main = paste0("Relationship Between Precipitation and Temperature in ", city))
return(corr)
}
avg_temperature <- average_temperature_by_city(dff)
print(avg_temperature)
## cidade tmedia
## 1 Campina Grande 24.69077
## 2 João Pessoa 27.65318
Considerando a temperatura média de todo o período, a cidade de João Pessoa é a mais quente entre as duas.
avg_temperature <- average_temperature_by_city_and_two_months(dff)
print(avg_temperature)
## cidade tmedia
## 1 Campina Grande 25.85547
## 2 João Pessoa 28.65027
Considerando apenas os meses 1 e 2, João Pessoa continua sendo a cidade mais quente entre as duas.
avg_temperature <- average_temperature_by_city_and_month(dff)
print(avg_temperature)
## mes tmedia
## 7 7 24.35864
## 8 8 24.74613
## 6 6 24.82213
## 9 9 25.68724
## 5 5 26.16805
## 10 10 26.53556
## 4 4 26.91009
## 11 11 27.03070
## 1 1 27.28775
## 12 12 27.34363
## 2 2 27.44452
## 3 3 27.47566
Considerando as temperaturass médias de todo o período, os meses mais frios são Julho, Agosto e Junho. Enquanto Março, Fevereiro e Dezembro são os meses mais quentes. Eu consideraria o período junino como o mais frio do ano, já que compreende 2 dos meses mais frios do ano: Junho e Julho.
avg_precipitation <- avg_precipitation_by_city(dff)
print(avg_precipitation)
## cidade chuva
## 1 Campina Grande 13.99730
## 2 João Pessoa 32.64849
Segundo os dados informados, esta é a média semanal de chuva das duas cidades.
avg_precipitation <- distribution_of_avg_precipitation_by_week_and_city(dff)
print(avg_precipitation)
Segundo os dados informados, esta é a distribuição semanal de chuva das
duas cidades.
avg_temperature <- temperature_relationship(dff, "Campina Grande")
print(avg_temperature)
## [1] 0.880168
Segundo os dados, esta é a relação entre a temperatura da semana atual com a temperatura da semana anterior na cidade de Campina Grande. Como visto no gráfico, os atributos apresentam uma correlação forte de 0.880168.
avg_temperature <- temperature_relationship(dff, "João Pessoa")
print(avg_temperature)
## [1] 0.8593719
Segundo os dados, esta é a relação entre a temperatura da semana atual com a temperatura da semana anterior na cidade de João Pessoa. Como visto no gráfico, os atributos apresentam uma correlação forte de 0.859371.
avg_precipitation <- precipitation_vs_temperature(dff, "Campina Grande")
print(avg_precipitation)
## [1] -0.3354837
Segundo os dados, o resultado da correlação entre chuva e temperatura na cidade de Campina Grande foi igual a -0.335487 e segundo o gráfico os dois atributos apresentam uma correlação fraca
avg_precipitation <- precipitation_vs_temperature(dff, "João Pessoa")
print(avg_precipitation)
## [1] -0.4244459
Segundo os dados, o resultado da correlação entre chuva e temperatura na cidade de João Pessoa foi igual a -0.424445 e segundo o gráfico os dois atributos apresentam uma correlação moderada.