Bike Rental Data Set - UCI

Manipulação

O conjunto de dados Bike Rental Data Set - UCI possui as seguintes variáveis:

  • id: identificador do intervalo de tempo (não relacionado à ordem temporal)
  • year: Ano (2011 ou 2012)
  • hour: Hora do dia (0 a 23)
  • season: 1 = Inverno, 2 = Primavera, 3 = Verão, 4 = Outono
  • holiday: Se o dia era um feriado
  • workingday: Se era um dia útil (exclui feriados e finais de semana)
  • weather: quatro categorias (1 a 4) variando do melhor ao pior clima
  • temp: temperatura em graus Celsius
  • atemp: sensação térmica em graus Celsius
  • humidity: umidade relativa do ar
  • windspeed: velocidade do vento (km/h)
  • count: número total de aluguéis naquele intervalo de tempo

Disponível no Kaggle.

Obs.: Os dados estão divididos em dois arquivos, mas por questões didáticas iremos utilizar apenas o “train.csv”.

  1. Carregando o dataset e as bibliotecas
library(tidyverse)
library(DT)
df <- read.csv(file="C:/Workspace/markdown_exercise/train.csv", sep = ";", dec = ".", header = TRUE)

Transformar os valores numericos da coluna season em sua respectiva estação, em inglês, para manter a coerência.

df$season <- factor(
  df$season,
  levels = c(1, 2, 3, 4),
  labels = c("Winter", "Spring", "Summer", "Autumn")
)
  1. Agora podemos visualizar diretamente qual estação do ano teve mais aluguéis, por exemplo.
df %>%
  group_by(season) %>%
  summarise(sum = sum(count)) %>%
  arrange(desc(sum)) %>%
  select(season, sum)
## # A tibble: 4 × 2
##   season    sum
##   <fct>   <int>
## 1 Summer 456228
## 2 Spring 420895
## 3 Autumn 375998
## 4 Winter 218703

É possível observar que no verão (Summer) é quando há a maior ocorrência de aluguéis.

  1. Podemos verificar também qual é a média de aluguel nos dias de melhor clima (1), em dias úteis ou feriados/fim de semana.
df %>% 
  filter(weather == 1) %>%
  mutate(
    workingday = ifelse(workingday == 1,
                        "Dia útil",
                        "Feriado/Fim de semana")
  ) %>%
  group_by(workingday) %>%
  summarise(media = mean(count, na.rm = TRUE))
## # A tibble: 2 × 2
##   workingday            media
##   <chr>                 <dbl>
## 1 Dia útil               207.
## 2 Feriado/Fim de semana  201.

O resultado sugere que, em dias úteis e com clima agradável, há uma tendência de ocorrer mais aluguéis de bicicletas.

Tabela

Mostrar a tabela utilizando a biblioteca DT, com visualização máxima de 10 linhas por página.

datatable(df, 
          options = list(pageLength = 10))

Podemos verificar também qual é a média de aluguel nos dias de clima ruim (4), em dias úteis ou feriados/fim de semana.

LaTeX

Conforme visto no item 3 da seção Manipulação, foi calculada a média de alugueis em dias de clima agradável, tanto para dias de semana quanto para feriados e finais de semana.

A fórmula utilizada para chegar a este resultado é:

\(\overline{x} = \dfrac{\sum_{i=1}^{n}x_i}{n} = \dfrac{x_{1}+x_{2}+x_{3}+\cdots+x_{n}}{n}\).

Trata-se da média aritmética, ou seja a soma todos os valores dos dados divida pelo número de valores existentes. A única diferença entre a média populacional e a média amostral é o símbolo utilizado para representá-las: \(\mu\) para a população e \(\overline{x}\) para a amostra.

Aplicando a fórmula no dataset proposto, encontramos uma temperatura média de 20.2670854ºC.

Adicionalmente podemos encontrar também o desvio padrão dos valores de temperatura, dado pela fórmula:

\(\sigma = \sqrt{\dfrac{\sum_{i=1}^{n}(x_i - \mu)^{2}}{n}}\).

O desvio padrão é uma medida estatística que indica o grau de dispersão dos dados em relação à média do conjunto de dados.

Um baixo valor de desvio padrão indica que os valores tendem a estar próximos da média. Já um valor alto de desvio padrão indica que os dados estão mais espalhados, apresentando maior variabilidade em relação à média.

Temos que o desvio padrão para a variável temp do dataset é de 7.8240659, o que pode parecer alto, mas devemos levar em consideração que o calculo inclui todas as estações do ano.

Se utilizarmos um filtro para selecionar apenas uma das estações (Winter/Inverno) obemos os valores de 12.4984219ºC, e desvio padrão 5.1486973.

(Townsend 1971; Silva 2009)

Outra fórmula que podemos aplicar no dataset de aluguéis de bicicleta é o do Coeficiente de Pearson:

\(\begin{equation} r = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2} \sqrt{\sum_{i=1}^{n} (y_i - \bar{y})^2}} \end{equation}\).

Esta fórmula é aplicada com o objetivo de determinar correlação entre duas variáveis, seja positiva ou negativa. Podemos utilizar para calcular a correlação entre duas variáveis que conhecidamente possuem correlação positiva: temperatura e sensação térmica.

correlation <- cor(df$temp, df$atemp, method = 'pearson')

Obtemos assim o valor de 0.9850874, indicando uma correlação muito forte.

(Benesty et al. 2009)

Finalmente, há duas fórmulas que podem ter sido utilizadas na criação do conjunto de dados: a fórmula da Sensação Térmica (Wind Chill) e a fórmula do Índice de Calor (Heat Index), respectivamente:

\(T_{wc} = 13.12 + 0.6215T - 11.37V^{0.16} + 0.3965TV^{0.16}\)

\(HI = -8.784695 + 1.61139411T + 2.338549RH - 0.14611605TRH\)

A fórmula do Índice de Calor, diferentemente da fórmula de Sensação Térmica, leva em consideração a umidade relativa do ar, enquanto a fórmula de Sensação Térmica utiliza a velocidade do vento como variável adicional.

A seguir, as duas fórmulas são implementadas em R utilizando como parâmetros as médias de temperatura, umidade relativa do ar e velocidade do vento durante a estação Autumn/Outono.

T <- mean(df$temp[df$season == "Autumn"])
V <- mean(df$windspeed[df$season == "Autumn"])

Twc <- 13.12 + 0.6215*T - 11.37*(V^0.16) + 0.3965*T*(V^0.16)
T <- mean(df$temp[df$season == "Autumn"])
RH <- mean(df$humidity[df$season == "Autumn"])

HI <- -8.784695 + 1.61139411 * T + 2.338549 * RH -0.14611605 * T * RH

Obtemos então os valores estimados de Sensação Térmica 16.3837606 e Índice de Calor 11.9710694, que diferem da média da coluna atemp para a estação Autumn 20.0492597. Isso sugere que outro método pode ter sido utilizado no cálculo da variável atemp.

(Osczevski 1995; Rothfusz 1990)

Figuras

Matriz de Confusão
Matriz de Confusão
Regressão Linear
Regressão Linear

Referências

Benesty, Jacob, Jingdong Chen, Yiteng Huang, and Israel Cohen. 2009. “Pearson Correlation Coefficient.” In Noise Reduction in Speech Processing, 1–4. Springer.
Osczevski, Randall. 1995. “The Basis of Wind Chill.” Arctic 48 (4): 372–82. https://doi.org/10.14430/arctic1256.
Rothfusz, Lans P. 1990. “The Heat Index Equation.” Technical Attachment SR 90-23. Fort Worth, Texas, USA: National Weather Service.
Silva, André Luiz Carvalhal da. 2009. Introdução à análise de Dados. Editora E-papers.
Townsend, James T. 1971. “Theoretical Analysis of an Alphabetic Confusion Matrix.” Perception & Psychophysics 9 (1): 40–50.