Compañía de motos

Contamos con una base de 11,196 observaciones con las características de las motos publicadas y el tiempo en que se vendieron. Entre las variables descriptivas de las motos tenemos Color, Distancia Recorrida, País, No. Fotos, Precio y Tiempo Publicado antes de venderse (o censurarse). A continuación se dará un ejemplo de los datos:

##       Bike_id Publish_period     End_Date
## 1 XL3-1095127             10 1.301357e+18
## 2 XL3-1095127              4 1.301702e+18
## 3 XL3-1123648             28 1.302307e+18
## 4 XL3-1139930             17 1.302826e+18
## 5 XL3-1139930              7 1.303430e+18
## 6 XL3-1277412             17 1.301616e+18
##   Departure_Date Distance_travelled  Color
## 1   1.305590e+18             123525 Silver
## 2   1.305590e+18             123525 Silver
## 3   1.307923e+18             120000 Silver
## 4   1.308096e+18             149374 Silver
## 5   1.308096e+18             149374 Silver
## 6   1.310170e+18             112167  Black
##   Country_Sold N_Photos  Price N_Inquires is_sold
## 1      Vietnam       27 110000         34       0
## 2      Vietnam       27  90000         34       1
## 3      Vietnam       28 110000         53       1
## 4      Vietnam       27 130000         34       0
## 5      Vietnam       27 110000         34       1
## 6      Vietnam       26 150000         58       0

El objetivo de este proyecto es automatizar el etiquetado del precio para un sitio de motocicletas usadas. Como almacenar las motos nos genera costos, lo que buscamos es elegir un precio tal que las motos se vendan pronto. Para ello, queremos ver cuáles de estas variables son significativas en el tiempo de venta de las motos. A través de la variable de tiempo de publicación, obtuvimos el comportamiento de supervivencia, graficando la supervivencia de acuerdo a cada una de las variables que podrían dar información, observamos que no son proporcionales, por lo que ninguna de las variables anteriores aportababa mayor información para el tiempo de venta (de acuerdo al modelo de Cox).

El único factor relevante encontrado era el precio al que se publicaba, donde a precios más bajos se vendían más pronto.

Entonces nuestro problema es asignar el mejor precio de acuerdo a las características de la moto. Para ello se realizó una regresión lineal múltiple del precio respecto a las demás variables con los datos históricos considerando como variables Color, Distancia Recorrida, País, No. Fotos, Precio. Se agregó la variable “Tiempo de publicación” al modelo para que influyera en tiempo de venta de las motocicletas, esta variable se usa en la predicción de los precios como el tiempo que esperamos que alguna moto esté en nuestro almacen. Existío un problema:

## Publish_period 
##      -213.0214

Con esto, el modelo querría decir que entre menos tiempo esperemos que esté la motocicleta en almacen, mayor será el precio, lo cual estaría contradiciendo el hecho de que las motocicletas se venden más rápido entre menor sea el precio. Es por ello que hicimos que los tiempos de publicación fueran negativos, de esta forma la relación sería inversa al modelo anterior.

Con los datos obtenidos de la regresión lineal, construimos una función que predice el precio. Separamos los datos, tomamos el 90% de ellos en la variable TRAIN y un 10% en la variable PRED, se utilizan los datos de TRAIN para poder crear un modelo para predecir los precios de acuerdo a los datos que queramos asginar, mientras que los datos de PRED nos darán un intervalo de los precios óptimos con un 50% de confianza, considerando la relación donde a menor precio el producto es vendido más rápido.

## 
## Call:
## lm(formula = Price ~ Pp + Distance_travelled + N_Photos + Color + 
##     Country_Sold, data = TRAIN)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -71393 -17789   2010  18562 124830 
## 
## Coefficients:
##                                        Estimate Std. Error t value
## (Intercept)                           1.021e+05  1.276e+04   8.002
## Pp                                    2.130e+02  2.147e+01   9.921
## Distance_travelled                   -9.656e-02  8.876e-03 -10.879
## N_Photos                             -3.715e+02  5.791e+01  -6.416
## ColorBlack                           -6.354e+03  1.206e+04  -0.527
## ColorBlue                            -8.935e+03  1.204e+04  -0.742
## ColorBrown                            5.904e+01  2.082e+04   0.003
## ColorGray                            -4.412e+03  1.215e+04  -0.363
## ColorGreen                           -9.186e+03  1.216e+04  -0.755
## ColorMaroon                          -1.285e+04  1.257e+04  -1.022
## ColorOther                           -2.735e+04  2.186e+04  -1.251
## ColorPearl                           -7.439e+03  1.206e+04  -0.617
## ColorPink                            -1.096e+04  1.210e+04  -0.906
## ColorPurple                          -1.064e+04  1.848e+04  -0.576
## ColorRed                             -1.351e+04  1.204e+04  -1.122
## ColorSilver                          -9.046e+03  1.204e+04  -0.751
## ColorWhite                           -7.548e+03  1.210e+04  -0.624
## ColorYellow                          -1.478e+04  1.216e+04  -1.215
## Country_SoldArmenia                   1.359e+04  5.326e+03   2.552
## Country_SoldAruba                     6.263e+03  5.455e+03   1.148
## Country_SoldBahamas                   6.676e+03  4.930e+03   1.354
## Country_SoldBotswana                  8.330e+02  4.995e+03   0.167
## Country_SoldBrunei                    5.767e+03  5.257e+03   1.097
## Country_SoldBurundi                   1.543e+04  1.439e+04   1.072
## Country_SoldCambodia                  6.297e+03  3.920e+03   1.606
## Country_SoldCanada                   -5.455e+02  2.434e+04  -0.022
## Country_SoldCayman Islands            3.245e+03  6.293e+03   0.516
## Country_SoldChile                     1.033e+04  4.494e+03   2.299
## Country_SoldCommonwealth Of Dominica -6.471e+01  6.967e+03  -0.009
## Country_SoldD.R.Congo                 7.196e+03  8.501e+03   0.846
## Country_SoldGrenada                  -1.618e+04  8.872e+03  -1.824
## Country_SoldGuatemala                 6.938e+03  7.170e+03   0.968
## Country_SoldIndonesia                -2.922e+03  4.028e+03  -0.726
## Country_SoldKazakhstan                7.004e+03  2.434e+04   0.288
## Country_SoldLaos                      8.546e+02  3.816e+03   0.224
## Country_SoldLiberia                   5.295e+03  2.434e+04   0.218
## Country_SoldMalawi                    5.882e+03  5.067e+03   1.161
## Country_SoldMalaysia                  1.655e+04  4.462e+03   3.710
## Country_SoldMicronesia                5.129e+03  4.779e+03   1.073
## Country_SoldMyanmar                  -2.372e+03  4.542e+03  -0.522
## Country_SoldNew Zealand               4.868e+04  1.262e+04   3.859
## Country_SoldNigeria                   3.932e+03  1.745e+04   0.225
## Country_SoldPapua New Guinea          6.921e+03  1.742e+04   0.397
## Country_SoldPhilippine                1.160e+04  3.893e+03   2.980
## Country_SoldPhilippines               1.739e+04  7.922e+03   2.196
## Country_SoldRussian Federation        2.212e+04  1.062e+04   2.082
## Country_SoldSaint Kitts And Nevis     2.247e+03  7.680e+03   0.293
## Country_SoldSamoa                    -3.094e+03  1.439e+04  -0.215
## Country_SoldSt.Lucia                  3.819e+03  1.440e+04   0.265
## Country_SoldSt.Maarten                2.041e+04  1.747e+04   1.168
## Country_SoldThailand                 -4.717e+02  5.176e+03  -0.091
## Country_SoldTurks And Caicos Islands  1.579e+04  9.317e+03   1.695
## Country_SoldUganda                    5.066e+03  5.995e+03   0.845
## Country_SoldVietnam                   1.535e+04  3.948e+03   3.888
##                                      Pr(>|t|)    
## (Intercept)                          1.36e-15 ***
## Pp                                    < 2e-16 ***
## Distance_travelled                    < 2e-16 ***
## N_Photos                             1.46e-10 ***
## ColorBlack                           0.598372    
## ColorBlue                            0.458149    
## ColorBrown                           0.997738    
## ColorGray                            0.716449    
## ColorGreen                           0.450034    
## ColorMaroon                          0.306720    
## ColorOther                           0.210923    
## ColorPearl                           0.537379    
## ColorPink                            0.364761    
## ColorPurple                          0.564658    
## ColorRed                             0.261769    
## ColorSilver                          0.452486    
## ColorWhite                           0.532654    
## ColorYellow                          0.224318    
## Country_SoldArmenia                  0.010736 *  
## Country_SoldAruba                    0.250961    
## Country_SoldBahamas                  0.175724    
## Country_SoldBotswana                 0.867554    
## Country_SoldBrunei                   0.272627    
## Country_SoldBurundi                  0.283663    
## Country_SoldCambodia                 0.108207    
## Country_SoldCanada                   0.982117    
## Country_SoldCayman Islands           0.606185    
## Country_SoldChile                    0.021538 *  
## Country_SoldCommonwealth Of Dominica 0.992590    
## Country_SoldD.R.Congo                0.397313    
## Country_SoldGrenada                  0.068249 .  
## Country_SoldGuatemala                0.333201    
## Country_SoldIndonesia                0.468147    
## Country_SoldKazakhstan               0.773514    
## Country_SoldLaos                     0.822826    
## Country_SoldLiberia                  0.827772    
## Country_SoldMalawi                   0.245718    
## Country_SoldMalaysia                 0.000208 ***
## Country_SoldMicronesia               0.283196    
## Country_SoldMyanmar                  0.601425    
## Country_SoldNew Zealand              0.000115 ***
## Country_SoldNigeria                  0.821729    
## Country_SoldPapua New Guinea         0.691139    
## Country_SoldPhilippine               0.002892 ** 
## Country_SoldPhilippines              0.028145 *  
## Country_SoldRussian Federation       0.037350 *  
## Country_SoldSaint Kitts And Nevis    0.769805    
## Country_SoldSamoa                    0.829793    
## Country_SoldSt.Lucia                 0.790908    
## Country_SoldSt.Maarten               0.242808    
## Country_SoldThailand                 0.927386    
## Country_SoldTurks And Caicos Islands 0.090188 .  
## Country_SoldUganda                   0.398094    
## Country_SoldVietnam                  0.000102 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 24030 on 10022 degrees of freedom
## Multiple R-squared:  0.0763, Adjusted R-squared:  0.07141 
## F-statistic: 15.62 on 53 and 10022 DF,  p-value: < 2.2e-16

Veamos un ejemplo donde tenemos una motocicleta que ha recorrido 123,525 km, es de color plata, se venderá en Vietnam y tenemos 27 fotos de ella. Haremos la predicción para un tiempo de publicación esperado de 10 y 50 días.

##        fit      lwr      upr Tiempo_publicado
## 1 88557.79 72326.57 104789.0               10
## 2 97078.65 80824.61 113332.7               50

Para hacerlo “más interesante”, simularemos la elección de una persona de un precio dentro del intervalo de predicción dado por nuestro modelo, esta elección dependerá de otros factores como el que tan bien se vea físicamente la motocicleta. Supondremos que la decisión de esta persona distribuye normal (0,0.0625), esto querrá decir que la elección se encontrará al rededor y muy cercano al punto medio del intervalo. Se ajustará de la siguiente manera:

\[ precio.elegido = precio.medio + (rnorm*(precio.medio - precio.inferior)) \]

Mostrando algunos resultados:

##            fit      lwr       upr        norm precio_ajustado
## 3220  95419.30 79173.99 111664.60 -0.14011891        93143.02
## 8826  79053.41 62826.64  95280.18 -0.05754437        78119.65
## 4579  81141.15 64915.66  97366.63  0.38967708        87463.85
## 9884  80695.50 64474.66  96916.34  0.01762710        80981.43
## 10526 78538.23 62279.81  94796.65  0.03232193        79063.73
## 510   78531.05 62297.93  94764.18  0.42876625        85491.27

Se puede observar que la relación de entre menor tiempo de publicadón esperado mayor precio se cumple.

Después de generar el modelo de los precios, calculamos la función de riesgo base partir de la información histórica, para posteriormente hacer el análisis a través del Modelo de Cox con los nuevos precios para el mismo periodo de tiempo. Queremos comprobar que los tiempos de venta son menores con nuestro modelo.

## Call:
## coxph(formula = Surv(Publish_period, is_sold) ~ Price, data = data_p9)
## 
##   n= 11196, number of events= 5824 
## 
##             coef  exp(coef)   se(coef)      z Pr(>|z|)    
## Price -1.746e-05  1.000e+00  4.711e-07 -37.08   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##       exp(coef) exp(-coef) lower .95 upper .95
## Price         1          1         1         1
## 
## Concordance= 0.642  (se = 0.004 )
## Rsquare= 0.117   (max possible= 1 )
## Likelihood ratio test= 1391  on 1 df,   p=0
## Wald test            = 1375  on 1 df,   p=0
## Score (logrank) test = 1421  on 1 df,   p=0

Obtenemos la siguiente función de riesgo acumulado:

##        hazard time
## 1  0.01909909    0
## 2  0.04116424    1
## 3  0.06490709    2
## 4  0.09058726    3
## 5  0.11486921    4
## 6  0.14185944    5
## 7  0.17332358    6
## 8  0.21025825    7
## 9  0.24318726    8
## 10 0.27600337    9
## 11 0.30851874   10
## 12 0.34406245   11
## 13 0.37846128   12
## 14 0.41309781   13
## 15 0.44950707   14
## 16 0.48331384   15
## 17 0.51353754   16
## 18 0.54594744   17
## 19 0.58101883   18
## 20 0.61841590   19
## 21 0.66082483   20
## 22 0.69609590   21
## 23 0.73720133   22
## 24 0.77449295   23
## 25 0.81332889   24
## 26 0.85030623   25
## 27 0.88757695   26
## 28 0.93311852   27
## 29 0.97818177   28
## 30 1.01330597   29
## 31 1.04247007   30
## 32 1.07649791   31
## 33 1.10450283   32
## 34 1.13472940   33
## 35 1.17894940   34
## 36 1.21506832   35
## 37 1.26220870   36
## 38 1.30276256   37
## 39 1.34785787   38
## 40 1.40895566   39
## 41 1.44350744   40
## 42 1.47698621   41
## 43 1.50635358   42
## 44 1.55064528   43
## 45 1.57012653   44
## 46 1.60163609   45
## 47 1.63644228   46
## 48 1.70908743   47
## 49 1.75690958   48
## 50 1.80087373   49
## 51 1.81485906   50
## 52 1.86107871   51
## 53 1.87847480   52
## 54 1.89768589   53
## 55 1.92873652   54
## 56 1.95216673   55
## 57 1.97764365   56
## 58 2.00498089   57
## 59 2.08557632   58
## 60 2.12592891   59
## 61 2.14929924   60
## 62 2.17451394   61
## 63 2.17451394   63
## 64 2.20372050   65
## 65 2.23369999   66
## 66 2.30353324   67
## 67 2.34395801   69
## 68 2.44199983   71
## 69 2.44199983   72
## 70 2.50601936   74
## 71 2.58183803   75
## 72 2.58183803   78
## 73 2.67268661   80
## 74 2.79595890   81
## 75 2.79595890   83
## 76 2.79595890   90
## 77 3.03136306  100
## 78 3.43078745  111
## 79 4.22963621  183

Para poder evaluar en cualquier punto de la función de reisgo acumulado, aproximaremos dicha función.

Claramente se puede ver que la aproximación es buena.

Creamos una aproximación de la función de supervivencia de la siguiente manera:

\[ \hat{S_0}(t)=e^{-\hat{H_0}(t)} \]

\[ => \hat{S}(t|X_1) = \hat{S_0}(t)*e^{\beta_1X_1} \] Con esta función podremos estimar la probabilidad de que se venda la motocicleta con los precios actualizados evaluando en el tiempo t, esto nos servirá para poder comparar los tiempos de supervivencia con los precios históricos y los precios actualizados. Para fines prácticos, elegiremos aquelos valores menores a 0.2 como aquellos en los que la motocicleta se vendió rápidamente, pues esto significa que se vendió rápido con una probabilidad del 80%.

Comparando las supervivencias de las motos con los precios históricos y con los precios estimados, vemos que disminuye para tiempos cortos. Es decir, se venden más rápido.