Paso 1. Importar archivo .csv

En este paso simplemente se abrió la base de datos colocando el path del archivo.

base_de_datos <- read.csv("/Users/gerardorodarte/Desktop/ITESM/Tercer semestre/Bootcamp Programación/Actividad 2/rentadebicis.csv")

Paso 2. Entenderle a la base de datos

En este paso se muestra un resumen de la información contenida en la base de datos, esto es, media, mediana, cuartiles, valor mínimo y valor máximo.

resumen <- summary(base_de_datos)
resumen
##       hora            dia              mes              aÒo      
##  Min.   : 0.00   Min.   : 1.000   Min.   : 1.000   Min.   :2011  
##  1st Qu.: 6.00   1st Qu.: 5.000   1st Qu.: 4.000   1st Qu.:2011  
##  Median :12.00   Median :10.000   Median : 7.000   Median :2012  
##  Mean   :11.54   Mean   : 9.993   Mean   : 6.521   Mean   :2012  
##  3rd Qu.:18.00   3rd Qu.:15.000   3rd Qu.:10.000   3rd Qu.:2012  
##  Max.   :23.00   Max.   :19.000   Max.   :12.000   Max.   :2012  
##     estacion     dia_de_la_semana     asueto         temperatura   
##  Min.   :1.000   Min.   :1.000    Min.   :0.00000   Min.   : 0.82  
##  1st Qu.:2.000   1st Qu.:2.000    1st Qu.:0.00000   1st Qu.:13.94  
##  Median :3.000   Median :4.000    Median :0.00000   Median :20.50  
##  Mean   :2.507   Mean   :4.014    Mean   :0.02857   Mean   :20.23  
##  3rd Qu.:4.000   3rd Qu.:6.000    3rd Qu.:0.00000   3rd Qu.:26.24  
##  Max.   :4.000   Max.   :7.000    Max.   :1.00000   Max.   :41.00  
##  sensacion_termica    humedad       velocidad_del_viento
##  Min.   : 0.76     Min.   :  0.00   Min.   : 0.000      
##  1st Qu.:16.66     1st Qu.: 47.00   1st Qu.: 7.002      
##  Median :24.24     Median : 62.00   Median :12.998      
##  Mean   :23.66     Mean   : 61.89   Mean   :12.799      
##  3rd Qu.:31.06     3rd Qu.: 77.00   3rd Qu.:16.998      
##  Max.   :45.45     Max.   :100.00   Max.   :56.997      
##  rentas_de_no_registrados rentas_de_registrados rentas_totales 
##  Min.   :  0.00           Min.   :  0.0         Min.   :  1.0  
##  1st Qu.:  4.00           1st Qu.: 36.0         1st Qu.: 42.0  
##  Median : 17.00           Median :118.0         Median :145.0  
##  Mean   : 36.02           Mean   :155.6         Mean   :191.6  
##  3rd Qu.: 49.00           3rd Qu.:222.0         3rd Qu.:284.0  
##  Max.   :367.00           Max.   :886.0         Max.   :977.0
plot(base_de_datos$temperatura,base_de_datos$rentas_totales, main="Influencia de la Temperatura sobre las Rentas Totales", xlab="Temperatura(ºC)", ylab="Cantidad de Rentas")

Paso 3. Generar regresión (modelo lineal)

En este paso se identificó la relación que tienen las variables con respecto a rentas totales para así poder detectar las más importantes y hacer un modelo de pronósticos.

regresion <- lm(rentas_totales ~ hora + dia + mes +aÒo + estacion + dia_de_la_semana + asueto + temperatura + sensacion_termica + humedad + velocidad_del_viento, data = base_de_datos)
summary(regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + dia + mes + aÒo + estacion + 
##     dia_de_la_semana + asueto + temperatura + sensacion_termica + 
##     humedad + velocidad_del_viento, data = base_de_datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -305.52  -93.64  -27.70   61.85  649.10 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.661e+05  5.496e+03 -30.217  < 2e-16 ***
## hora                  7.735e+00  2.070e-01  37.368  < 2e-16 ***
## dia                   3.844e-01  2.482e-01   1.549  0.12150    
## mes                   9.996e+00  1.682e+00   5.943 2.89e-09 ***
## aÒo                   8.258e+01  2.732e+00  30.225  < 2e-16 ***
## estacion             -7.774e+00  5.177e+00  -1.502  0.13324    
## dia_de_la_semana      4.393e-01  6.918e-01   0.635  0.52545    
## asueto               -4.864e+00  8.365e+00  -0.582  0.56089    
## temperatura           1.582e+00  1.038e+00   1.524  0.12752    
## sensacion_termica     4.748e+00  9.552e-01   4.971 6.76e-07 ***
## humedad              -2.115e+00  7.884e-02 -26.827  < 2e-16 ***
## velocidad_del_viento  5.582e-01  1.809e-01   3.086  0.00203 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 141.7 on 10874 degrees of freedom
## Multiple R-squared:  0.3891, Adjusted R-squared:  0.3885 
## F-statistic: 629.6 on 11 and 10874 DF,  p-value: < 2.2e-16

Los que tienen *** son los más importantes.

Paso 4. Evaluar, y en caso necesario, ajustar la regresion

En este paso se quedaron solo aquellas variables que tienen más influencia en el número de rentas para que, de este modo, obtengamos una predicción acertada.

regresion <- lm(rentas_totales ~ hora + mes +aÒo + sensacion_termica + humedad + velocidad_del_viento, data = base_de_datos)
summary(regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + mes + aÒo + sensacion_termica + 
##     humedad + velocidad_del_viento, data = base_de_datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -308.60  -93.85  -28.34   61.05  648.09 
## 
## Coefficients:
##                        Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -1.662e+05  5.496e+03 -30.250  < 2e-16 ***
## hora                  7.734e+00  2.070e-01  37.364  < 2e-16 ***
## mes                   7.574e+00  4.207e-01  18.002  < 2e-16 ***
## aÒo                   8.266e+01  2.732e+00  30.258  < 2e-16 ***
## sensacion_termica     6.172e+00  1.689e-01  36.539  < 2e-16 ***
## humedad              -2.121e+00  7.858e-02 -26.988  < 2e-16 ***
## velocidad_del_viento  6.208e-01  1.771e-01   3.506 0.000457 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 141.7 on 10879 degrees of freedom
## Multiple R-squared:  0.3886, Adjusted R-squared:  0.3883 
## F-statistic:  1153 on 6 and 10879 DF,  p-value: < 2.2e-16

Paso 5. Construir un modelo de prediccion

Teniendo el modelo de regresión podemos pronosticar las rentas totales dados unos datos.

datos_nuevos <- data.frame(hora=12, mes=1, aÒo=2013, sensacion_termica=24, humedad=62, velocidad_del_viento=13)
predict(regresion, datos_nuevos)
##        1 
## 279.1478

Observaciones

  1. Evitar poner “ñ” en los títulos de la base de datos.
  2. Los días de la tabla llegan hasta el 19, ¿por qué no hasta el 31? R: No se supo.
  3. ¿Qué significa estación 1, 2, 3 y 4? R: Son las estaciones del año, 1 primavera, 2 verano, 3 otoño y 4 invierno.
  4. ¿Los días de la semana empiezan con el 1 en domingo o lunes? R: En formato estándar de R el 1 es domingo.

Conclusiones

En este ejercicio se realizó un modelo predictivo para la renta de bicis dada una base de datos y un cálculo de regresión hecho con las distintas variables, siendo que, las que más influyen en la renta de bicis son: la hora, el mes, el año, la sensación térmica, la humedad y la velocidad del viento.

De modo que, de ser enero del 2013 a las 12, con una sensación térmica de 24ºC, una humedad del 62% y una velocidad del viento de 13km/h, se tiene estimado que se renten 279 bicicletas, con un 38.83% de certeza