JuveYell

Importar base de datos

library("janitor")
## 
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
bd <-read.csv("C:\\Users\\chema\\Downloads\\rentadebicis.csv")
bd <- clean_names(bd)

Entender la base de datos

summary(bd)
##       hora            dia              mes              ano      
##  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

Herramienta: “Generador de Valor de Datos”

Paso 1. Definir el área de negocios que deseamos impactar y su KPI.

Área: Ventas. Mes con mayor ventas.

Paso 2. Seleccionar plantilla (-s) para crear valor a partir de los datos de los clientes.

Visión / Segmentación / Personalización / Contextualización

Paso 3. Generar ideas o conceptos específicos.

Necesitamos estudiar la relación que existe entre las ventas y el clima para poder así predecir las ventas que habrá en cada mes del proximo año. Esto por medio de una regresión lineal. ## Paso 4. Reunir los datos requeridos. Ya se cuenta con la información necesaria.

Paso 5. Plan de ejecución.

Los primeros tres meses del año son los meses con menos ventas, por lo que se podría realizar estrategias de promoción para poder aumentar las ventas de ese mes. Un ejemplo de esto sería promociones de pareja 2x1 o descuentos en la renta de bicicletas en ciertos días de la semana. Se podría analizar qué días de la cuentan con mayor número de rentas y aprovecharse así para la promoción de estas.

Observaciones

  1. Por qué los días llegan hasta el 19 y no hasta el 31?
  2. Qué significan los números en las estaciones? R: 1 es primavera, 2 es verano, 3 es otoño y 4 es invierno
temperatura <- bd$temperatura
#temperatura

rentas_totales <-bd$rentas_totales
#rentas_totales

plot(temperatura,rentas_totales, main="Influencia de la temperatura/rentas totales", xlab="Temperatura (C)", ylab= "Rentas Totales")

Generar regresión lineal

regresion <- lm (rentas_totales ~hora + dia + mes + ano + dia_de_la_semana + temperatura + sensacion_termica + estacion + dia_de_la_semana + asueto + temperatura + sensacion_termica + humedad + velocidad_del_viento, data=bd)
summary (regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + dia + mes + ano + dia_de_la_semana + 
##     temperatura + sensacion_termica + estacion + dia_de_la_semana + 
##     asueto + temperatura + sensacion_termica + humedad + velocidad_del_viento, 
##     data = bd)
## 
## 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 ***
## ano                   8.258e+01  2.732e+00  30.225  < 2e-16 ***
## dia_de_la_semana      4.393e-01  6.918e-01   0.635  0.52545    
## temperatura           1.582e+00  1.038e+00   1.524  0.12752    
## sensacion_termica     4.748e+00  9.552e-01   4.971 6.76e-07 ***
## estacion             -7.774e+00  5.177e+00  -1.502  0.13324    
## asueto               -4.864e+00  8.365e+00  -0.582  0.56089    
## 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

Evaluar, y en caso necesario ajustar, la regresión lineal

regresion <- lm (rentas_totales ~hora + mes + ano + sensacion_termica + humedad + velocidad_del_viento, data=bd)
summary (regresion)
## 
## Call:
## lm(formula = rentas_totales ~ hora + mes + ano + sensacion_termica + 
##     humedad + velocidad_del_viento, data = bd)
## 
## 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 ***
## ano                   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

Construir Modelo Predictivo

datos_nuevos <-data.frame(hora=12, mes=1:12, ano=2013, sensacion_termica=24, humedad=62, velocidad_del_viento=13)
predict(regresion,datos_nuevos)
##        1        2        3        4        5        6        7        8 
## 279.1478 286.7215 294.2952 301.8690 309.4427 317.0164 324.5901 332.1638 
##        9       10       11       12 
## 339.7375 347.3112 354.8849 362.4587

Conclusión

En esta base de datos se utilizó un modelo predictivo para poder realizar un forecast de ventas. Para esto principalmente se interpretaron y analizaron datos de la base que se nos fue brindada. Una vez que se realizó el modelo predictivo (tomando en cuenta mes y temperatura), pudimos notar que el mayor número de rentas se realizaba cuando las temperaturas oscilaban entre los 20 y 30 grados. Ahora, al agregar más variables como sensación térmica, humedad, hora, mes y año, obtuvimos que diciembre sería el mes con mayor número de rentas.