##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:
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)
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
###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.
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)
### 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.
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)
pred<-predict(arbol2,newdata = test,type="class")
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:
velocidad<-computadores[,.(price,speed)]
k1<-kmeans(x=velocidad,centers=5,nstart=50)
computadores$clkme<-k1$cluster
fviz_cluster(k1,data=velocidad,geom = "point")