El documento se encuentra publicado aqui https://rpubs.com/psantizo/1189505
dataset[1:10,]
## # A tibble: 10 × 17
## instant dteday season yr mnth hr holiday weekday workingday
## <dbl> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 2011-01-01 1 0 1 0 0 6 0
## 2 2 2011-01-01 1 0 1 1 0 6 0
## 3 3 2011-01-01 1 0 1 2 0 6 0
## 4 4 2011-01-01 1 0 1 3 0 6 0
## 5 5 2011-01-01 1 0 1 4 0 6 0
## 6 6 2011-01-01 1 0 1 5 0 6 0
## 7 7 2011-01-01 1 0 1 6 0 6 0
## 8 8 2011-01-01 1 0 1 7 0 6 0
## 9 9 2011-01-01 1 0 1 8 0 6 0
## 10 10 2011-01-01 1 0 1 9 0 6 0
## # ℹ 8 more variables: weathersit <dbl>, temp <dbl>, atemp <dbl>, hum <dbl>,
## # windspeed <dbl>, casual <dbl>, registered <dbl>, cnt <dbl>
dataset <- dataset %>% mutate(dteday =as.Date(dteday,format="%Y-%m-%d"))%>%
mutate(day=day(dteday),month=month(dteday),year=year(dteday))
head(dataset%>%select(day,month,year))
## # A tibble: 6 × 3
## day month year
## <int> <dbl> <dbl>
## 1 1 1 2011
## 2 1 1 2011
## 3 1 1 2011
## 4 1 1 2011
## 5 1 1 2011
## 6 1 1 2011
La columna dteday únicamente proporciona el día, el mes y el año, existe otra columna que indica la hora hr, pero esta no esta indicada en dteday ni tampoco los minutos.
dataset_month <- dataset%>%group_by(mnth) %>%
summarise(total_cnt=sum(cnt))%>%
arrange(-total_cnt)
dataset_month
## # A tibble: 12 × 2
## mnth total_cnt
## <dbl> <dbl>
## 1 8 351194
## 2 6 346342
## 3 9 345991
## 4 7 344948
## 5 5 331686
## 6 10 322352
## 7 4 269094
## 8 11 254831
## 9 3 228920
## 10 12 211036
## 11 2 151352
## 12 1 134933
ggplot(dataset_month, aes(x = reorder(mnth, -total_cnt), y = total_cnt)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = total_cnt), vjust = -0.5) +
labs(title = "Total por Mes", x = "Mes", y = "Total") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
El mes que tiene la mayor demanda es agosto, seguido por junio.
##. 3. ¿Qué rango de hora es la de mayor demanda? Muestre una tabla y una gráfica
dataset_rhr <- dataset %>%
mutate(hr_group = cut(hr, breaks = seq(0, 24, by = 4),
labels = paste(seq(1, 21, by = 4), "-", seq(4, 24, by = 4)),
include.lowest = TRUE))%>%
group_by(hr_group) %>%
summarise(total_cnt=sum(cnt))%>%
arrange(-total_cnt)
dataset_rhr
## # A tibble: 6 × 2
## hr_group total_cnt
## <fct> <dbl>
## 1 17 - 20 1037971
## 2 13 - 16 771468
## 3 9 - 12 621429
## 4 5 - 8 484565
## 5 21 - 24 284998
## 6 1 - 4 92248
ggplot(dataset_rhr, aes(x = reorder(hr_group, -total_cnt), y = total_cnt)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = total_cnt), vjust = -0.5) +
labs(title = "Total por hora", x = "Rango de hora", y = "Total") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Se agrupo las horas en rango, y se observa que de las 17-20 hrs, se encuentra la mayor demanda.
dataset_sea <- dataset%>%group_by(season)%>%
summarise(total_cnt=sum(cnt))%>%
arrange(-total_cnt)
dataset_sea
## # A tibble: 4 × 2
## season total_cnt
## <dbl> <dbl>
## 1 3 1061129
## 2 2 918589
## 3 4 841613
## 4 1 471348
La temporada más alta es la 3 que corresponde a otoño.
# agrupación por fecha
dataset_tmp <- dataset%>%group_by(dteday)%>%
summarise(temp=mean(temp), cnt=sum(cnt))
# Modelo para saber la ecuación de lineal
modelo <- lm(cnt ~ temp, data = dataset_tmp)
ecuacion <- paste("y = ", round(coef(modelo)[2], 2), "*x + ", round(coef(modelo)[1], 2), sep = "")
# gráfico de dispersión
ggplot(dataset_tmp, aes(x = temp, y = cnt)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
annotate("text", x = min(dataset_tmp$temp), y = max(dataset_tmp$cnt), label = ecuacion, hjust = 0, vjust = 1) +
labs(title = "Relación entre Temperatura y demanda",
x = "Temperatura",
y = "Cuenta") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Se observa que hay una relación positiva entre la temperatura y la demanda de bicicletas, mientras menor es la temperatura, menor es la demanda, en este caso al disminuir la temperatura una unidad la demanda disminuiye en 6,6640.7 por día.
Se observa que la menor demanda es en un rango de temperatura de 0 a 0.25 grados celsius.
# agrupación por fecha
dataset_hum <- dataset%>%group_by(dteday)%>%
summarise(hum=mean(hum), cnt=sum(cnt))
# Modelo para saber la ecuación de lineal
modelo <- lm(cnt ~ hum, data = dataset_hum)
ecuacion <- paste("y = ", round(coef(modelo)[2], 2), "*x + ", round(coef(modelo)[1], 2), sep = "")
# gráfico de dispersión
ggplot(dataset_hum, aes(x = hum, y = cnt)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
annotate("text", x = min(dataset_hum$hum), y = max(dataset_hum$cnt), label = ecuacion, hjust = 0, vjust = 1) +
labs(title = "Relación entre Humedad y demanda",
x = "Humedad",
y = "Cuenta") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Se observa una relación negativa entre la humedad y la demanda, se observa que en promedio al aumentar una unidad la humedad, la demanda disminuye 1369.1. La humedad con menor demanda esta entre 0.75 y 1.0.
# agrupación por fecha
dataset_atemp <- dataset%>%group_by(dteday)%>%
summarise(atemp=mean(atemp), cnt=sum(cnt))
# gráfico de dispersión
ggplot(dataset_atemp, aes(x = atemp, y = cnt)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Relación entre sensación de temperatura y demanda",
x = "Feels like",
y = "Cuenta") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Mientras mayor sensación de temperatura existe mayor demanda.
# agrupación por fecha
dataset_windspeed <- dataset%>%group_by(dteday)%>%
summarise(windspeed=mean(windspeed), cnt=sum(cnt))
# gráfico de dispersión
ggplot(dataset_windspeed, aes(x = windspeed, y = cnt)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Relación entre velocidad del aire y demanda",
x = "Feels like",
y = "Cuenta") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Se observa que mientras menor velocidad del aire la demanda es mayor.
ggplot(dataset, aes(x = temp, y = hum, z = cnt)) +
geom_point(aes(color = cnt), size = 3) +
scale_color_viridis_c() +
labs(title = "Temperatura, Humedad y Demanda",
x = "Temperatura", y = "Humedad", z = "Demanda") +
theme_minimal() +
theme(legend.position = "right")
En este grafico que considera la humedad relativa y la temperatura, se observa que con una humedad entre 0 a 0.5 y una temperatura entre 0.5 a 1. se enceuntra la mayor demanda.
ggplot(dataset, aes(x = cnt)) +
geom_density(fill = "skyblue", alpha = 0.5) +
labs(title = "Densidad de Rentas (cnt)",
x = "Rentas (cnt)",
y = "Densidad") +
theme_minimal()
# Proporción de personas que rentan bicicletas y están registradas
dataset%>%summarise(pro_reg_cnt=sum(registered)/sum(cnt))
## # A tibble: 1 × 1
## pro_reg_cnt
## <dbl>
## 1 0.812
La proporción de personas que rentan bicicletas y estan registradas es de 81.1%.
dataset%>%group_by(dteday)%>%summarise(registered=sum(registered))%>%
ungroup() %>% summarise(reg_mean=mean(registered))
## # A tibble: 1 × 1
## reg_mean
## <dbl>
## 1 3656.
Al agrupar las rentas por día, se observa que le media de la rentas es de 3656.2, d de las personas que rentan bicicletas y estan registradas.
# Proporción de personas que rentan bicicletas y están registradas
dataset%>%summarise(pro_cas_cnt=sum(casual)/sum(cnt))
## # A tibble: 1 × 1
## pro_cas_cnt
## <dbl>
## 1 0.188
La proporción de personas que rentan bicicletas y no estan registradas es de 18.83%.
dataset%>%group_by(dteday)%>%summarise(casual=sum(casual))%>%
ungroup() %>% summarise(reg_median=median(casual))
## # A tibble: 1 × 1
## reg_median
## <dbl>
## 1 713
Al agrupar las rentas por día, se oberva que la mediana de las persona que rentan biciletas y no estan registradas es de 713.
La renta total y la renta total se observa enla tabla siguiente:
dataset%>% group_by(season)%>%
summarise(renta_total=sum(cnt), renta_promedio=mean(cnt))
## # A tibble: 4 × 3
## season renta_total renta_promedio
## <dbl> <dbl> <dbl>
## 1 1 471348 111.
## 2 2 918589 208.
## 3 3 1061129 236.
## 4 4 841613 199.
ggplot(dataset_sea, aes(x = reorder(season, -total_cnt), y = total_cnt)) +
geom_bar(stat = "identity", fill = "skyblue") +
geom_text(aes(label = total_cnt), vjust = -0.5) +
labs(title = "Total por temporada", x = "Temporada", y = "Total") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
dataset_hr_cnt <- dataset%>%group_by(hr)%>%summarise(cnt_hr=sum(cnt))%>%uncount(cnt_hr)
ggplot(dataset_hr_cnt, aes(x = hr)) +
geom_histogram(aes(y = ..density..), fill = "skyblue", alpha = 0.5, bins = 24, color = "black") +
geom_density(color = "red", size = 1, adjust = 3) +
labs(title = "Gráfica de densidad de Rentas por Hora ",
x = "Rentas por hora",
y = "Densidad") +
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.
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
remove(dataset_hr_cnt)
ggplot(dataset%>% group_by(day)%>%summarise(total_cnt=sum(cnt)), aes(x = day, y = total_cnt)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Total por día del mes", x = "día del mes", y = "Total") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
dataset_date <- dataset%>%group_by(dteday)%>%
summarise(cnt=sum(cnt))
ggplot(dataset_date, aes(x = dteday, y = cnt)) +
geom_line(color = "blue") + # Línea del gráfico
labs(title = "Series de Tiempo de Rentas Diarias",
x = "Fecha",
y = "Rentas (cnt)") +
theme_minimal()
# agrupación por fecha
dataset_hum_temp <- dataset%>%group_by(dteday)%>%
summarise(hum=mean(hum), temp=sum(cnt))
# Modelo para saber la ecuación de lineal
modelo <- lm(hum ~ temp, data = dataset_hum_temp)
ecuacion <- paste("y = ", round(coef(modelo)[2], 2), "*x + ", round(coef(modelo)[1], 2), sep = "")
# gráfico de dispersión
ggplot(dataset_hum_temp, aes(x = temp, y = hum)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Relación entre Humedad y demanda",
x = "Humedad",
y = "Cuenta") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'