##Investigando el mercado de computadoras.Suponga que Ud. está interesado/a en entrar al mercado de las computadoras. Usted cuenta con una base de datos cuyas observaciones corresponden a computadoras vendidas durante un cierto período de tiempo. Cuenta con el precio (price) de cada computadora vendida y con las siguientes características de la misma:

Velocidad en MhZ (speed) Capacidad del disco duro (hd) Memoria RAM (ram) Tamaño de la pantalla (screen) Entrada de cd (cd) Categoría Premium (premium) Año de la venta (ads) Marca del computador (brand) Para comenzar con su análisis:

P.1 Cargue todos los paquetes que necesita para trabajar con data.table, modelos de predicción de regresión, CART, cluster y Cross-Validation. Además, cargue la base de datos. 1 punto

install.packages("factoextra")
install.packages("dbscan")
install.packages("caret")
install.packages("rpart.plot")
install.packages("prcr")
library(data.table)
library(caret)
library(jtools)
library(factoextra)
library(dbscan)
library(ggplot2)
library(rpart.plot)
library(prcr)
library(rpart)

P.2 Plantee dos modelos de regresión distintos que logren predecir el precio de las computadoras. 4 puntos

rm(list=ls())

computadores<-fread("C:/Users/jose/Desktop/R/Data Science/Tarea 6/base_tarea6.csv")
head(computadores)
##    V1 price speed  hd ram screen cd multi premium ads trend brand
## 1:  1  1499    25  80   4     14 no    no     yes  94     1   Win
## 2:  2  1795    33  85   2     14 no    no     yes  94     1   Mac
## 3:  3  1595    25 170   4     15 no    no     yes  94     1   Win
## 4:  4  1849    25 170   8     14 no    no      no  94     1   Win
## 5:  5  3295    33 340  16     14 no    no     yes  94     1   Mac
## 6:  6  3695    66 340  16     14 no    no     yes  94     1   Mac
names(computadores)
##  [1] "V1"      "price"   "speed"   "hd"      "ram"     "screen"  "cd"     
##  [8] "multi"   "premium" "ads"     "trend"   "brand"
reg1<-lm(data=computadores, formula =price~brand)
summary(reg1)
## 
## Call:
## lm(formula = price ~ brand, data = computadores)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1275.3  -426.9   -72.9   374.7  3182.1 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2224.266     12.140 183.212   <2e-16 ***
## brandWin      -7.394     15.244  -0.485    0.628    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 580.8 on 6257 degrees of freedom
## Multiple R-squared:  3.76e-05,   Adjusted R-squared:  -0.0001222 
## F-statistic: 0.2353 on 1 and 6257 DF,  p-value: 0.6277
reg2<-lm(data=computadores, formula =price~brand+ram+speed+hd+screen+premium+ads+cd)
summary(reg2)
## 
## Call:
## lm(formula = price ~ brand + ram + speed + hd + screen + premium + 
##     ads + cd, data = computadores)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1043.85  -262.21   -49.62   205.20  2505.96 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -54.70669   87.13640  -0.628    0.530    
## brandWin       9.79722   10.45061   0.937    0.349    
## ram           77.34321    1.44768  53.426   <2e-16 ***
## speed          6.26650    0.26208  23.910   <2e-16 ***
## hd            -0.30284    0.03507  -8.635   <2e-16 ***
## screen       102.49137    5.76629  17.774   <2e-16 ***
## premiumyes  -360.00300   17.62436 -20.426   <2e-16 ***
## ads            1.37796    0.07298  18.881   <2e-16 ***
## cdyes       -107.70717   11.99099  -8.982   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 397.9 on 6250 degrees of freedom
## Multiple R-squared:  0.5312, Adjusted R-squared:  0.5306 
## F-statistic: 885.3 on 8 and 6250 DF,  p-value: < 2.2e-16

P.3 Evalúe cual modelo predice mejor el precio de las computadoras. Sea claro/a con su criterio de evaluación. Recuerde que no es lo mismo predecir dentro de muestra que fuera de muestra. 8 puntos

Pista: utilice set.seed(12345)

###Dentro de muestra
set.seed(12345)

pred1<-predict(reg1)

prediccion1<-data.table(RMSE=RMSE(pred1,computadores$price),
                         MAE=MAE(pred1,computadores$price))
prediccion1
##        RMSE      MAE
## 1: 580.7466 466.9325
pred2<-predict(reg2)
prediccion2<-data.table(RMSE=RMSE(pred2,computadores$price),
                         MAE=MAE(pred2,computadores$price))
prediccion2
##        RMSE    MAE
## 1: 397.6372 294.77
set.seed(12345)

setupKCV <- trainControl(method = "cv" , number = 5)

predkfolds1<-train(price~brand,data=computadores,method="lm",trControl= setupKCV)

predkfolds2<-train(price~brand+ram+speed+hd+screen+premium+ads+cd,data=computadores,method="lm",trControl= setupKCV)

print(predkfolds1)
## Linear Regression 
## 
## 6259 samples
##    1 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 5007, 5007, 5007, 5007, 5008 
## Resampling results:
## 
##   RMSE      Rsquared      MAE     
##   580.6389  0.0006827236  467.0328
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
print(predkfolds2)
## Linear Regression 
## 
## 6259 samples
##    8 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (5 fold) 
## Summary of sample sizes: 5007, 5006, 5007, 5007, 5009 
## Resampling results:
## 
##   RMSE      Rsquared   MAE     
##   398.0554  0.5305813  295.2673
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

R: Nos quedamos con el segundo por tener menor RMSE y menor MAE, significando que existe menos error en las predicciones dentro de muestra en comparación con el primer modelo.

Ahora queremos predecir la calidad del computador, es decir, si el computador es premium (yes o no) utilizando árboles de decisión.

P.4 Para esto plantee un modelo utilizando la información de la base de datos. Muestre su modelo. 6 puntos

Pista: No utilice todas las variables para crear el modelo CART, seleccione algunas.

arbol<- rpart(premium~ brand+price+ram, data = computadores,method="class")
rpart.plot(arbol)

P.5 Explique los resultados de su modelo. 4 puntos

Importante: No es necesario explicar todos los nodos, pero si debe explicar al menos 2 nodos.

### De la muestra total, 90% de los computadores cumplen con ser premium, dentro de estos, 42% de esta submuestra tiene ram bajo 6 y el 58% sobre ese valor. El siguiente nodo denota que de los computadores premium, que tienen bajo 6 de ram, el 5% tiene un precio menor a 2297 y el 37% tiene un precio mayor o igual a 2297.

Ahora utilizaremos el método de validación cruzada para estimar la precisión de su modelo CART.

P.6 Cree el set de entrenamiento y de prueba. Utilice set.seed(12345). Muestre los resultados del set de entrenamiento. 8 puntos

ind<-createDataPartition(computadores$premium,times = 1,p = 0.7,list = F)

train<-computadores[ind,] 
test<-computadores[-ind,] 

arbol2<-rpart(premium~brand+price+ram, data=train,method = "class")
rpart.plot(arbol2)

P.7 Calcule la predicción del modelo. 4 puntos

pred<-predict(arbol2,newdata = test,type="class")

P.8 Calcule la matriz de confusión y la precisión del modelo. Muestre y explique ambos. 7 puntos

matconf<-table(test$premium,pred)
matconf
##      pred
##         no  yes
##   no    34  149
##   yes   10 1684

Un compañero de trabajo le ha sugerido que la demanda por computadoras tiene que ver con la velocidad de las mismas, por lo que debería ser posible encontrar una buena segmentación al organizar los datos en clusters por precio y velocidad. Usted, intrigado/a, decide comprobarlo. Para esto:

P.9 Cree un nuevo objeto que contenta solo el precio y la velocidad (speed). 3 puntos

velocidad<-computadores[,.(price,speed)]

P.10 Obtenga 5 clusters para esta segmentación a partir del objeto anterior y agregue estos clusters a la base de datos original. 7 puntos

k1<-kmeans(x=velocidad,centers=5,nstart=50)
computadores$clkme<-k1$cluster

P.11 Visualice estos clusters en un gráfico. 5 puntos

fviz_cluster(k1,data=velocidad,geom = "point")