##### Brett-Lantz Machine Learning with R
# traduccion y adaptacion Luis A. George
########################################################
#Capitulo 6: Metodos basados en Regresion -------------------

#### Parte 1: Regresion Linear -------------------
setwd("C:\\Users\\Luis\\Desktop\\Brett-Lantz\\chapter_6")
## Ejemplo: La data del Trasbordador Challenger ----
launch <- read.csv("challenger.csv")

# estimacion de beta (manual)
b <- cov(launch$temperature, launch$distress_ct) / var(launch$temperature)
b
## [1] -0.04753968
# estimacion de alfa manual
a <- mean(launch$distress_ct) - b * mean(launch$temperature)
a
## [1] 3.698413
# calculo de la correlacion de la data de lanzamiento
r <- cov(launch$temperature, launch$distress_ct) /
       (sd(launch$temperature) * sd(launch$distress_ct))
r
## [1] -0.5111264
cor(launch$temperature, launch$distress_ct)
## [1] -0.5111264
# computo de la pendiente usando la correlacion
r * (sd(launch$distress_ct) / sd(launch$temperature))
## [1] -0.04753968
# confirmacion de la linea de regresion
# usando la funcion lm  
model <- lm(distress_ct ~ temperature, data = launch)
model
## 
## Call:
## lm(formula = distress_ct ~ temperature, data = launch)
## 
## Coefficients:
## (Intercept)  temperature  
##     3.69841     -0.04754
summary(model)
## 
## Call:
## lm(formula = distress_ct ~ temperature, data = launch)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.5608 -0.3944 -0.0854  0.1056  1.8671 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  3.69841    1.21951   3.033  0.00633 **
## temperature -0.04754    0.01744  -2.725  0.01268 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5774 on 21 degrees of freedom
## Multiple R-squared:  0.2613, Adjusted R-squared:  0.2261 
## F-statistic: 7.426 on 1 and 21 DF,  p-value: 0.01268
# creando una funcion para realizar la regresion multiple
reg <- function(y, x) {
  x <- as.matrix(x)
  x <- cbind(Intercept = 1, x)
  b <- solve(t(x) %*% x) %*% t(x) %*% y
  colnames(b) <- "estimate"
  print(b)
}

# examinamos la data de lanzamiento
str(launch)
## 'data.frame':    23 obs. of  4 variables:
##  $ distress_ct         : int  0 1 0 0 0 0 0 0 1 1 ...
##  $ temperature         : int  66 70 69 68 67 72 73 70 57 63 ...
##  $ field_check_pressure: int  50 50 50 50 50 50 100 100 200 200 ...
##  $ flight_num          : int  1 2 3 4 5 6 7 8 9 10 ...
# probando el modelo de regresion lineal
reg(y = launch$distress_ct, x = launch[2])
##                estimate
## Intercept    3.69841270
## temperature -0.04753968
# usando un modelo de regresion multiple
reg(y = launch$distress_ct, x = launch[2:4])
##                          estimate
## Intercept             3.527093383
## temperature          -0.051385940
## field_check_pressure  0.001757009
## flight_num            0.014292843
# confirmando los resultados de la regresion multiple
# usando la funcion lm 
model <- lm(launch$distress_ct ~ launch$temperature + launch$field_check_pressure + launch$flight_num, data = launch)
model
## 
## Call:
## lm(formula = launch$distress_ct ~ launch$temperature + launch$field_check_pressure + 
##     launch$flight_num, data = launch)
## 
## Coefficients:
##                 (Intercept)           launch$temperature  
##                    3.527093                    -0.051386  
## launch$field_check_pressure            launch$flight_num  
##                    0.001757                     0.014293
## Ejemplo: Prediccion de Gastos Medicos ----
## Paso 2: Explorando y preparando la data ----
insurance <- read.csv("insurance.csv", stringsAsFactors = TRUE)
str(insurance)
## 'data.frame':    1338 obs. of  7 variables:
##  $ age     : int  19 18 28 33 32 31 46 37 37 60 ...
##  $ sex     : Factor w/ 2 levels "female","male": 1 2 2 2 2 1 1 1 2 1 ...
##  $ bmi     : num  27.9 33.8 33 22.7 28.9 25.7 33.4 27.7 29.8 25.8 ...
##  $ children: int  0 1 3 0 0 0 1 3 2 0 ...
##  $ smoker  : Factor w/ 2 levels "no","yes": 2 1 1 1 1 1 1 1 1 1 ...
##  $ region  : Factor w/ 4 levels "northeast","northwest",..: 4 3 3 2 2 3 3 2 1 2 ...
##  $ expenses: num  16885 1726 4449 21984 3867 ...
# summarize the charges variable
summary(insurance$expenses)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1122    4740    9382   13270   16640   63770
# histograma de los gastos de suguro
hist(insurance$expenses)

# tabla de region
table(insurance$region)
## 
## northeast northwest southeast southwest 
##       324       325       364       325
# explorando la relacion entre las 
# variables: correlation matrix
cor(insurance[c("age", "bmi", "children", "expenses")])
##                age        bmi   children   expenses
## age      1.0000000 0.10934101 0.04246900 0.29900819
## bmi      0.1093410 1.00000000 0.01264471 0.19857626
## children 0.0424690 0.01264471 1.00000000 0.06799823
## expenses 0.2990082 0.19857626 0.06799823 1.00000000
# visualizado la relacion entre las variables
# : scatterplot matrix
pairs(insurance[c("age", "bmi", "children", "expenses")])

# un grafico mas informativo que la scatterplot matrix
library(psych)
pairs.panels(insurance[c("age", "bmi", "children", "expenses")])

## Paso 3: Entrenando el modelo en la data ----
ins_model <- lm(expenses ~ age + children + bmi + sex + smoker + region,
                data = insurance)
ins_model <- lm(expenses ~ ., data = insurance) # this is equivalent to above

# vemos los coeficientes estimados de beta
ins_model
## 
## Call:
## lm(formula = expenses ~ ., data = insurance)
## 
## Coefficients:
##     (Intercept)              age          sexmale              bmi  
##        -11941.6            256.8           -131.4            339.3  
##        children        smokeryes  regionnorthwest  regionsoutheast  
##           475.7          23847.5           -352.8          -1035.6  
## regionsouthwest  
##          -959.3
## Paso 4: Evaluando el rendimiento del modelo ----
# detalles adicionales del modelo
summary(ins_model)
## 
## Call:
## lm(formula = expenses ~ ., data = insurance)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11302.7  -2850.9   -979.6   1383.9  29981.7 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -11941.6      987.8 -12.089  < 2e-16 ***
## age                256.8       11.9  21.586  < 2e-16 ***
## sexmale           -131.3      332.9  -0.395 0.693255    
## bmi                339.3       28.6  11.864  < 2e-16 ***
## children           475.7      137.8   3.452 0.000574 ***
## smokeryes        23847.5      413.1  57.723  < 2e-16 ***
## regionnorthwest   -352.8      476.3  -0.741 0.458976    
## regionsoutheast  -1035.6      478.7  -2.163 0.030685 *  
## regionsouthwest   -959.3      477.9  -2.007 0.044921 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6062 on 1329 degrees of freedom
## Multiple R-squared:  0.7509, Adjusted R-squared:  0.7494 
## F-statistic: 500.9 on 8 and 1329 DF,  p-value: < 2.2e-16
## Paso 5: Mejorando el rendimiento del modelo ----

# añadiendo un termino higher-order "age" 
insurance$age2 <- insurance$age^2

# añadiendo un indicador para BMI >= 30
insurance$bmi30 <- ifelse(insurance$bmi >= 30, 1, 0)

# creando el modelo final
ins_model2 <- lm(expenses ~ age + age2 + children + bmi + sex +
                   bmi30*smoker + region, data = insurance)

summary(ins_model2)
## 
## Call:
## lm(formula = expenses ~ age + age2 + children + bmi + sex + bmi30 * 
##     smoker + region, data = insurance)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17297.1  -1656.0  -1262.7   -727.8  24161.6 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       139.0053  1363.1359   0.102 0.918792    
## age               -32.6181    59.8250  -0.545 0.585690    
## age2                3.7307     0.7463   4.999 6.54e-07 ***
## children          678.6017   105.8855   6.409 2.03e-10 ***
## bmi               119.7715    34.2796   3.494 0.000492 ***
## sexmale          -496.7690   244.3713  -2.033 0.042267 *  
## bmi30            -997.9355   422.9607  -2.359 0.018449 *  
## smokeryes       13404.5952   439.9591  30.468  < 2e-16 ***
## regionnorthwest  -279.1661   349.2826  -0.799 0.424285    
## regionsoutheast  -828.0345   351.6484  -2.355 0.018682 *  
## regionsouthwest -1222.1619   350.5314  -3.487 0.000505 ***
## bmi30:smokeryes 19810.1534   604.6769  32.762  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4445 on 1326 degrees of freedom
## Multiple R-squared:  0.8664, Adjusted R-squared:  0.8653 
## F-statistic: 781.7 on 11 and 1326 DF,  p-value: < 2.2e-16
#### Parte 2: Arboles de regresion and Modelos de arboles -------------------

## Entendiendo los arboles de regresion y modelos de arboles ----
## Ejemplo: Calculando el SDR ----
# a continuacion la data
tee <- c(1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 7, 7)
at1 <- c(1, 1, 1, 2, 2, 3, 4, 5, 5)
at2 <- c(6, 6, 7, 7, 7, 7)
bt1 <- c(1, 1, 1, 2, 2, 3, 4)
bt2 <- c(5, 5, 6, 6, 7, 7, 7, 7)

# computo del SDR
sdr_a <- sd(tee) - (length(at1) / length(tee) * sd(at1) + length(at2) / length(tee) * sd(at2))
sdr_b <- sd(tee) - (length(bt1) / length(tee) * sd(bt1) + length(bt2) / length(tee) * sd(bt2))

# comparamos el SDR para cada nodo
sdr_a
## [1] 1.202815
sdr_b
## [1] 1.392751
## Ejemplo: Estimando la calidad de un vino ----
## Step 2: Obteniendo y explorando la data ----
wine <- read.csv("whitewines.csv")

# examinamos la data wine
str(wine)
## 'data.frame':    4898 obs. of  12 variables:
##  $ fixed.acidity       : num  6.7 5.7 5.9 5.3 6.4 7 7.9 6.6 7 6.5 ...
##  $ volatile.acidity    : num  0.62 0.22 0.19 0.47 0.29 0.14 0.12 0.38 0.16 0.37 ...
##  $ citric.acid         : num  0.24 0.2 0.26 0.1 0.21 0.41 0.49 0.28 0.3 0.33 ...
##  $ residual.sugar      : num  1.1 16 7.4 1.3 9.65 0.9 5.2 2.8 2.6 3.9 ...
##  $ chlorides           : num  0.039 0.044 0.034 0.036 0.041 0.037 0.049 0.043 0.043 0.027 ...
##  $ free.sulfur.dioxide : num  6 41 33 11 36 22 33 17 34 40 ...
##  $ total.sulfur.dioxide: num  62 113 123 74 119 95 152 67 90 130 ...
##  $ density             : num  0.993 0.999 0.995 0.991 0.993 ...
##  $ pH                  : num  3.41 3.22 3.49 3.48 2.99 3.25 3.18 3.21 2.88 3.28 ...
##  $ sulphates           : num  0.32 0.46 0.42 0.54 0.34 0.43 0.47 0.47 0.47 0.39 ...
##  $ alcohol             : num  10.4 8.9 10.1 11.2 10.9 ...
##  $ quality             : int  5 6 6 4 6 6 6 6 6 7 ...
# la distribucion del rating de calidad (quality)
hist(wine$quality)

# summario de estadisticas de la data wine 
summary(wine)
##  fixed.acidity    volatile.acidity  citric.acid     residual.sugar  
##  Min.   : 3.800   Min.   :0.0800   Min.   :0.0000   Min.   : 0.600  
##  1st Qu.: 6.300   1st Qu.:0.2100   1st Qu.:0.2700   1st Qu.: 1.700  
##  Median : 6.800   Median :0.2600   Median :0.3200   Median : 5.200  
##  Mean   : 6.855   Mean   :0.2782   Mean   :0.3342   Mean   : 6.391  
##  3rd Qu.: 7.300   3rd Qu.:0.3200   3rd Qu.:0.3900   3rd Qu.: 9.900  
##  Max.   :14.200   Max.   :1.1000   Max.   :1.6600   Max.   :65.800  
##    chlorides       free.sulfur.dioxide total.sulfur.dioxide
##  Min.   :0.00900   Min.   :  2.00      Min.   :  9.0       
##  1st Qu.:0.03600   1st Qu.: 23.00      1st Qu.:108.0       
##  Median :0.04300   Median : 34.00      Median :134.0       
##  Mean   :0.04577   Mean   : 35.31      Mean   :138.4       
##  3rd Qu.:0.05000   3rd Qu.: 46.00      3rd Qu.:167.0       
##  Max.   :0.34600   Max.   :289.00      Max.   :440.0       
##     density             pH          sulphates         alcohol     
##  Min.   :0.9871   Min.   :2.720   Min.   :0.2200   Min.   : 8.00  
##  1st Qu.:0.9917   1st Qu.:3.090   1st Qu.:0.4100   1st Qu.: 9.50  
##  Median :0.9937   Median :3.180   Median :0.4700   Median :10.40  
##  Mean   :0.9940   Mean   :3.188   Mean   :0.4898   Mean   :10.51  
##  3rd Qu.:0.9961   3rd Qu.:3.280   3rd Qu.:0.5500   3rd Qu.:11.40  
##  Max.   :1.0390   Max.   :3.820   Max.   :1.0800   Max.   :14.20  
##     quality     
##  Min.   :3.000  
##  1st Qu.:5.000  
##  Median :6.000  
##  Mean   :5.878  
##  3rd Qu.:6.000  
##  Max.   :9.000
# Creamos la particion de la data entre entrenamiento
# (train) y prueba (test)
wine_train <- wine[1:3750, ]
wine_test <- wine[3751:4898, ]

## Paso 3: Entrenando el  modelo en la data ----
# arbol de regresion usando la libreria rpart
library(rpart)
m.rpart <- rpart(quality ~ ., data = wine_train)

# revisamos la informacion basica a cerca del arbol
m.rpart
## n= 3750 
## 
## node), split, n, deviance, yval
##       * denotes terminal node
## 
##  1) root 3750 2945.53200 5.870933  
##    2) alcohol< 10.85 2372 1418.86100 5.604975  
##      4) volatile.acidity>=0.2275 1611  821.30730 5.432030  
##        8) volatile.acidity>=0.3025 688  278.97670 5.255814 *
##        9) volatile.acidity< 0.3025 923  505.04230 5.563380 *
##      5) volatile.acidity< 0.2275 761  447.36400 5.971091 *
##    3) alcohol>=10.85 1378 1070.08200 6.328737  
##      6) free.sulfur.dioxide< 10.5 84   95.55952 5.369048 *
##      7) free.sulfur.dioxide>=10.5 1294  892.13600 6.391036  
##       14) alcohol< 11.76667 629  430.11130 6.173291  
##         28) volatile.acidity>=0.465 11   10.72727 4.545455 *
##         29) volatile.acidity< 0.465 618  389.71680 6.202265 *
##       15) alcohol>=11.76667 665  403.99400 6.596992 *
# para obtener informacion mas sobre el arbol generado
summary(m.rpart)
## Call:
## rpart(formula = quality ~ ., data = wine_train)
##   n= 3750 
## 
##           CP nsplit rel error    xerror       xstd
## 1 0.15501053      0 1.0000000 1.0004889 0.02445917
## 2 0.05098911      1 0.8449895 0.8506566 0.02343744
## 3 0.02796998      2 0.7940004 0.8054548 0.02280410
## 4 0.01970128      3 0.7660304 0.7837084 0.02173762
## 5 0.01265926      4 0.7463291 0.7603372 0.02082953
## 6 0.01007193      5 0.7336698 0.7500661 0.02068249
## 7 0.01000000      6 0.7235979 0.7496347 0.02068898
## 
## Variable importance
##              alcohol              density     volatile.acidity 
##                   34                   21                   15 
##            chlorides total.sulfur.dioxide  free.sulfur.dioxide 
##                   11                    7                    6 
##       residual.sugar            sulphates          citric.acid 
##                    3                    1                    1 
## 
## Node number 1: 3750 observations,    complexity param=0.1550105
##   mean=5.870933, MSE=0.7854751 
##   left son=2 (2372 obs) right son=3 (1378 obs)
##   Primary splits:
##       alcohol              < 10.85    to the left,  improve=0.15501050, (0 missing)
##       density              < 0.992035 to the right, improve=0.10915940, (0 missing)
##       chlorides            < 0.0395   to the right, improve=0.07682258, (0 missing)
##       total.sulfur.dioxide < 158.5    to the right, improve=0.04089663, (0 missing)
##       citric.acid          < 0.235    to the left,  improve=0.03636458, (0 missing)
##   Surrogate splits:
##       density              < 0.991995 to the right, agree=0.869, adj=0.644, (0 split)
##       chlorides            < 0.0375   to the right, agree=0.757, adj=0.339, (0 split)
##       total.sulfur.dioxide < 103.5    to the right, agree=0.690, adj=0.155, (0 split)
##       residual.sugar       < 5.375    to the right, agree=0.667, adj=0.094, (0 split)
##       sulphates            < 0.345    to the right, agree=0.647, adj=0.038, (0 split)
## 
## Node number 2: 2372 observations,    complexity param=0.05098911
##   mean=5.604975, MSE=0.5981709 
##   left son=4 (1611 obs) right son=5 (761 obs)
##   Primary splits:
##       volatile.acidity    < 0.2275   to the right, improve=0.10585250, (0 missing)
##       free.sulfur.dioxide < 13.5     to the left,  improve=0.03390500, (0 missing)
##       citric.acid         < 0.235    to the left,  improve=0.03204075, (0 missing)
##       alcohol             < 10.11667 to the left,  improve=0.03136524, (0 missing)
##       chlorides           < 0.0585   to the right, improve=0.01633599, (0 missing)
##   Surrogate splits:
##       pH                   < 3.485    to the left,  agree=0.694, adj=0.047, (0 split)
##       sulphates            < 0.755    to the left,  agree=0.685, adj=0.020, (0 split)
##       total.sulfur.dioxide < 105.5    to the right, agree=0.683, adj=0.011, (0 split)
##       residual.sugar       < 0.75     to the right, agree=0.681, adj=0.007, (0 split)
##       chlorides            < 0.0285   to the right, agree=0.680, adj=0.003, (0 split)
## 
## Node number 3: 1378 observations,    complexity param=0.02796998
##   mean=6.328737, MSE=0.7765472 
##   left son=6 (84 obs) right son=7 (1294 obs)
##   Primary splits:
##       free.sulfur.dioxide  < 10.5     to the left,  improve=0.07699080, (0 missing)
##       alcohol              < 11.76667 to the left,  improve=0.06210660, (0 missing)
##       total.sulfur.dioxide < 67.5     to the left,  improve=0.04438619, (0 missing)
##       residual.sugar       < 1.375    to the left,  improve=0.02905351, (0 missing)
##       fixed.acidity        < 7.35     to the right, improve=0.02613259, (0 missing)
##   Surrogate splits:
##       total.sulfur.dioxide < 53.5     to the left,  agree=0.952, adj=0.214, (0 split)
##       volatile.acidity     < 0.875    to the right, agree=0.940, adj=0.024, (0 split)
## 
## Node number 4: 1611 observations,    complexity param=0.01265926
##   mean=5.43203, MSE=0.5098121 
##   left son=8 (688 obs) right son=9 (923 obs)
##   Primary splits:
##       volatile.acidity    < 0.3025   to the right, improve=0.04540111, (0 missing)
##       alcohol             < 10.05    to the left,  improve=0.03874403, (0 missing)
##       free.sulfur.dioxide < 13.5     to the left,  improve=0.03338886, (0 missing)
##       chlorides           < 0.0495   to the right, improve=0.02574623, (0 missing)
##       citric.acid         < 0.195    to the left,  improve=0.02327981, (0 missing)
##   Surrogate splits:
##       citric.acid          < 0.215    to the left,  agree=0.633, adj=0.141, (0 split)
##       free.sulfur.dioxide  < 20.5     to the left,  agree=0.600, adj=0.062, (0 split)
##       chlorides            < 0.0595   to the right, agree=0.593, adj=0.047, (0 split)
##       residual.sugar       < 1.15     to the left,  agree=0.583, adj=0.023, (0 split)
##       total.sulfur.dioxide < 219.25   to the right, agree=0.582, adj=0.022, (0 split)
## 
## Node number 5: 761 observations
##   mean=5.971091, MSE=0.5878633 
## 
## Node number 6: 84 observations
##   mean=5.369048, MSE=1.137613 
## 
## Node number 7: 1294 observations,    complexity param=0.01970128
##   mean=6.391036, MSE=0.6894405 
##   left son=14 (629 obs) right son=15 (665 obs)
##   Primary splits:
##       alcohol              < 11.76667 to the left,  improve=0.06504696, (0 missing)
##       chlorides            < 0.0395   to the right, improve=0.02758705, (0 missing)
##       fixed.acidity        < 7.35     to the right, improve=0.02750932, (0 missing)
##       pH                   < 3.055    to the left,  improve=0.02307356, (0 missing)
##       total.sulfur.dioxide < 191.5    to the right, improve=0.02186818, (0 missing)
##   Surrogate splits:
##       density              < 0.990885 to the right, agree=0.720, adj=0.424, (0 split)
##       volatile.acidity     < 0.2675   to the left,  agree=0.637, adj=0.253, (0 split)
##       chlorides            < 0.0365   to the right, agree=0.630, adj=0.238, (0 split)
##       residual.sugar       < 1.475    to the left,  agree=0.575, adj=0.126, (0 split)
##       total.sulfur.dioxide < 128.5    to the right, agree=0.574, adj=0.124, (0 split)
## 
## Node number 8: 688 observations
##   mean=5.255814, MSE=0.4054895 
## 
## Node number 9: 923 observations
##   mean=5.56338, MSE=0.5471747 
## 
## Node number 14: 629 observations,    complexity param=0.01007193
##   mean=6.173291, MSE=0.6838017 
##   left son=28 (11 obs) right son=29 (618 obs)
##   Primary splits:
##       volatile.acidity     < 0.465    to the right, improve=0.06897561, (0 missing)
##       total.sulfur.dioxide < 200      to the right, improve=0.04223066, (0 missing)
##       residual.sugar       < 0.975    to the left,  improve=0.03061714, (0 missing)
##       fixed.acidity        < 7.35     to the right, improve=0.02978501, (0 missing)
##       sulphates            < 0.575    to the left,  improve=0.02165970, (0 missing)
##   Surrogate splits:
##       citric.acid          < 0.045    to the left,  agree=0.986, adj=0.182, (0 split)
##       total.sulfur.dioxide < 279.25   to the right, agree=0.986, adj=0.182, (0 split)
## 
## Node number 15: 665 observations
##   mean=6.596992, MSE=0.6075098 
## 
## Node number 28: 11 observations
##   mean=4.545455, MSE=0.9752066 
## 
## Node number 29: 618 observations
##   mean=6.202265, MSE=0.6306098
# usamos el paquete rpart.plot para visualizar
library(rpart.plot)

# un diagrama basico de un arbol de decision
rpart.plot(m.rpart, digits = 3)

# unos pocos ajustes al diagrama
rpart.plot(m.rpart, digits = 4, fallen.leaves = TRUE, type = 3, extra = 101)

## Paso 4: Evaluando el rendimiento del modelo ----

# generamos predicciones para la data de prueba
# del modelo (test)
p.rpart <- predict(m.rpart, wine_test)

# comparamos la distribucion value de prediccion vs. valores actuales
summary(p.rpart)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.545   5.563   5.971   5.893   6.202   6.597
summary(wine_test$quality)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   5.000   6.000   5.901   6.000   9.000
# comparamos la correlacion
cor(p.rpart, wine_test$quality)
## [1] 0.5369525
# creamos una funcion para calcular
# el valor absoluto del promedio del error
MAE <- function(actual, predicted) {
  mean(abs(actual - predicted))  
}

# el MAE entre prediccion y valor actual
MAE(p.rpart, wine_test$quality)
## [1] 0.5872652
# el MAE entre valores actuales y el valor promedio
mean(wine_train$quality) # result = 5.87
## [1] 5.870933
MAE(5.87, wine_test$quality)
## [1] 0.6722474
## Paso 5: Mejorando el rendimiento del modelo ----
# usamos el algoritmo M5' del paquete RWeka
library(RWeka)

m.m5p <- M5P(quality ~ ., data = wine_train)

# el nuevo arbol creado
m.m5p
## M5 pruned model tree:
## (using smoothed linear models)
## 
## alcohol <= 10.85 : 
## |   volatile.acidity <= 0.238 : 
## |   |   fixed.acidity <= 6.85 : LM1 (406/66.024%)
## |   |   fixed.acidity >  6.85 : 
## |   |   |   free.sulfur.dioxide <= 24.5 : LM2 (113/87.697%)
## |   |   |   free.sulfur.dioxide >  24.5 : 
## |   |   |   |   alcohol <= 9.15 : 
## |   |   |   |   |   citric.acid <= 0.305 : 
## |   |   |   |   |   |   residual.sugar <= 14.45 : 
## |   |   |   |   |   |   |   residual.sugar <= 13.8 : 
## |   |   |   |   |   |   |   |   chlorides <= 0.053 : LM3 (6/77.537%)
## |   |   |   |   |   |   |   |   chlorides >  0.053 : LM4 (13/0%)
## |   |   |   |   |   |   |   residual.sugar >  13.8 : LM5 (11/0%)
## |   |   |   |   |   |   residual.sugar >  14.45 : LM6 (12/0%)
## |   |   |   |   |   citric.acid >  0.305 : 
## |   |   |   |   |   |   total.sulfur.dioxide <= 169.5 : 
## |   |   |   |   |   |   |   total.sulfur.dioxide <= 161.5 : 
## |   |   |   |   |   |   |   |   pH <= 3.355 : 
## |   |   |   |   |   |   |   |   |   volatile.acidity <= 0.215 : 
## |   |   |   |   |   |   |   |   |   |   free.sulfur.dioxide <= 44 : LM7 (3/53.19%)
## |   |   |   |   |   |   |   |   |   |   free.sulfur.dioxide >  44 : LM8 (8/48.858%)
## |   |   |   |   |   |   |   |   |   volatile.acidity >  0.215 : LM9 (3/0%)
## |   |   |   |   |   |   |   |   pH >  3.355 : LM10 (4/0%)
## |   |   |   |   |   |   |   total.sulfur.dioxide >  161.5 : LM11 (6/0%)
## |   |   |   |   |   |   total.sulfur.dioxide >  169.5 : 
## |   |   |   |   |   |   |   sulphates <= 0.56 : 
## |   |   |   |   |   |   |   |   free.sulfur.dioxide <= 48.5 : LM12 (7/0%)
## |   |   |   |   |   |   |   |   free.sulfur.dioxide >  48.5 : 
## |   |   |   |   |   |   |   |   |   fixed.acidity <= 7.3 : LM13 (5/0%)
## |   |   |   |   |   |   |   |   |   fixed.acidity >  7.3 : LM14 (4/0%)
## |   |   |   |   |   |   |   sulphates >  0.56 : LM15 (11/0%)
## |   |   |   |   alcohol >  9.15 : 
## |   |   |   |   |   density <= 0.996 : 
## |   |   |   |   |   |   sulphates <= 0.395 : LM16 (38/85.791%)
## |   |   |   |   |   |   sulphates >  0.395 : LM17 (120/71.353%)
## |   |   |   |   |   density >  0.996 : 
## |   |   |   |   |   |   residual.sugar <= 14.7 : LM18 (84/45.874%)
## |   |   |   |   |   |   residual.sugar >  14.7 : LM19 (24/62.764%)
## |   volatile.acidity >  0.238 : 
## |   |   alcohol <= 10.15 : 
## |   |   |   volatile.acidity <= 0.303 : 
## |   |   |   |   citric.acid <= 0.265 : 
## |   |   |   |   |   free.sulfur.dioxide <= 25.5 : LM20 (39/41.77%)
## |   |   |   |   |   free.sulfur.dioxide >  25.5 : LM21 (131/61.681%)
## |   |   |   |   citric.acid >  0.265 : 
## |   |   |   |   |   citric.acid <= 0.395 : LM22 (213/72.749%)
## |   |   |   |   |   citric.acid >  0.395 : LM23 (189/62.097%)
## |   |   |   volatile.acidity >  0.303 : LM24 (552/64.09%)
## |   |   alcohol >  10.15 : 
## |   |   |   free.sulfur.dioxide <= 26.5 : LM25 (151/75.998%)
## |   |   |   free.sulfur.dioxide >  26.5 : 
## |   |   |   |   total.sulfur.dioxide <= 161.5 : LM26 (142/74.4%)
## |   |   |   |   total.sulfur.dioxide >  161.5 : LM27 (77/77.736%)
## alcohol >  10.85 : 
## |   alcohol <= 11.767 : 
## |   |   free.sulfur.dioxide <= 21.5 : 
## |   |   |   free.sulfur.dioxide <= 11.5 : 
## |   |   |   |   density <= 0.992 : LM28 (19/84.403%)
## |   |   |   |   density >  0.992 : 
## |   |   |   |   |   fixed.acidity <= 6.85 : LM29 (6/108.029%)
## |   |   |   |   |   fixed.acidity >  6.85 : LM30 (21/69.935%)
## |   |   |   free.sulfur.dioxide >  11.5 : 
## |   |   |   |   volatile.acidity <= 0.195 : LM31 (36/61.98%)
## |   |   |   |   volatile.acidity >  0.195 : 
## |   |   |   |   |   chlorides <= 0.036 : LM32 (34/115.199%)
## |   |   |   |   |   chlorides >  0.036 : LM33 (59/78.207%)
## |   |   free.sulfur.dioxide >  21.5 : LM34 (495/84.229%)
## |   alcohol >  11.767 : 
## |   |   free.sulfur.dioxide <= 21.5 : LM35 (181/88.599%)
## |   |   free.sulfur.dioxide >  21.5 : LM36 (527/81.837%)
## 
## LM num: 1
## quality = 
##  0.266 * fixed.acidity 
##  - 2.3082 * volatile.acidity 
##  - 0.012 * citric.acid 
##  + 0.0421 * residual.sugar 
##  + 0.1126 * chlorides 
##  + 0 * free.sulfur.dioxide 
##  - 0.0015 * total.sulfur.dioxide 
##  - 109.8813 * density 
##  + 0.035 * pH 
##  + 1.4122 * sulphates 
##  - 0.0046 * alcohol 
##  + 113.1021
## 
## LM num: 2
## quality = 
##  -0.2557 * fixed.acidity 
##  - 0.8082 * volatile.acidity 
##  - 0.1062 * citric.acid 
##  + 0.0738 * residual.sugar 
##  + 0.0973 * chlorides 
##  + 0.0006 * free.sulfur.dioxide 
##  + 0.0003 * total.sulfur.dioxide 
##  - 210.1018 * density 
##  + 0.0323 * pH 
##  - 0.9604 * sulphates 
##  - 0.0231 * alcohol 
##  + 216.8857
## 
## LM num: 3
## quality = 
##  0.0725 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 0.6118 * citric.acid 
##  + 0.0294 * residual.sugar 
##  + 105.3735 * chlorides 
##  - 0.0027 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.0323 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 32.2345
## 
## LM num: 4
## quality = 
##  0.0725 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 0.6118 * citric.acid 
##  + 0.0294 * residual.sugar 
##  + 99.4295 * chlorides 
##  - 0.0027 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.0323 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 32.6786
## 
## LM num: 5
## quality = 
##  0.0944 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 0.6118 * citric.acid 
##  + 0.0255 * residual.sugar 
##  + 95.8527 * chlorides 
##  - 0.0027 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.0323 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 32.9544
## 
## LM num: 6
## quality = 
##  0.0012 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 0.6118 * citric.acid 
##  + 0.0491 * residual.sugar 
##  + 54.3184 * chlorides 
##  - 0.0027 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.0323 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 35.4429
## 
## LM num: 7
## quality = 
##  0.0012 * fixed.acidity 
##  - 2.7131 * volatile.acidity 
##  - 1.0049 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0147 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.633 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 36.9235
## 
## LM num: 8
## quality = 
##  0.0012 * fixed.acidity 
##  - 2.7131 * volatile.acidity 
##  - 1.0049 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0141 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.633 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 36.8808
## 
## LM num: 9
## quality = 
##  0.0012 * fixed.acidity 
##  - 3.4336 * volatile.acidity 
##  - 1.0049 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0146 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.633 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 37.0118
## 
## LM num: 10
## quality = 
##  0.0012 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 1.0049 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0065 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.8211 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 35.686
## 
## LM num: 11
## quality = 
##  0.0012 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 1.0049 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0065 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.2757 * pH 
##  + 0.1199 * sulphates 
##  - 0.0373 * alcohol 
##  + 37.5168
## 
## LM num: 12
## quality = 
##  -0.0571 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 1.534 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0098 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.2583 * pH 
##  + 0.3345 * sulphates 
##  - 0.0373 * alcohol 
##  + 38.0548
## 
## LM num: 13
## quality = 
##  -0.304 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  + 0.3698 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0097 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.2583 * pH 
##  + 0.3345 * sulphates 
##  - 0.0373 * alcohol 
##  + 39.1208
## 
## LM num: 14
## quality = 
##  -0.317 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 1.5116 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0097 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.2583 * pH 
##  + 0.3345 * sulphates 
##  - 0.0373 * alcohol 
##  + 39.9144
## 
## LM num: 15
## quality = 
##  -0.0683 * fixed.acidity 
##  - 1.0921 * volatile.acidity 
##  - 1.3217 * citric.acid 
##  + 0.0297 * residual.sugar 
##  + 5.7935 * chlorides 
##  - 0.0088 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 31.5856 * density 
##  + 0.2583 * pH 
##  + 0.3758 * sulphates 
##  - 0.0373 * alcohol 
##  + 37.9875
## 
## LM num: 16
## quality = 
##  -0.4138 * fixed.acidity 
##  - 2.4188 * volatile.acidity 
##  - 0.1001 * citric.acid 
##  + 0.0519 * residual.sugar 
##  + 1.2445 * chlorides 
##  + 0.0002 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  + 146.7811 * density 
##  + 0.5635 * pH 
##  + 0.3884 * sulphates 
##  + 0.7403 * alcohol 
##  - 145.8266
## 
## LM num: 17
## quality = 
##  0.2744 * fixed.acidity 
##  - 3.6766 * volatile.acidity 
##  - 0.1001 * citric.acid 
##  + 0.0846 * residual.sugar 
##  + 0.5477 * chlorides 
##  + 0.0002 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 239.7241 * density 
##  + 1.5648 * pH 
##  + 0.8289 * sulphates 
##  - 0.0207 * alcohol 
##  + 237.4198
## 
## LM num: 18
## quality = 
##  0.0178 * fixed.acidity 
##  - 1.19 * volatile.acidity 
##  - 0.1001 * citric.acid 
##  + 0.041 * residual.sugar 
##  + 0.0973 * chlorides 
##  + 0.0002 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 46.7151 * density 
##  + 0.1443 * pH 
##  + 0.1669 * sulphates 
##  - 0.0207 * alcohol 
##  + 51.8086
## 
## LM num: 19
## quality = 
##  0.0178 * fixed.acidity 
##  - 11.6553 * volatile.acidity 
##  - 0.1001 * citric.acid 
##  + 0.0199 * residual.sugar 
##  + 0.0973 * chlorides 
##  + 0.0002 * free.sulfur.dioxide 
##  + 0.0044 * total.sulfur.dioxide 
##  - 46.7151 * density 
##  + 2.2855 * pH 
##  + 0.1669 * sulphates 
##  - 0.0207 * alcohol 
##  + 46.4726
## 
## LM num: 20
## quality = 
##  -0.0389 * fixed.acidity 
##  - 0.2704 * volatile.acidity 
##  + 0.6445 * citric.acid 
##  + 0.0043 * residual.sugar 
##  - 11.7525 * chlorides 
##  + 0.0148 * free.sulfur.dioxide 
##  + 13.1536 * density 
##  - 0.2235 * pH 
##  + 0.0154 * sulphates 
##  + 0.1335 * alcohol 
##  - 8.119
## 
## LM num: 21
## quality = 
##  -0.0139 * fixed.acidity 
##  - 0.2704 * volatile.acidity 
##  + 2.7911 * citric.acid 
##  + 0.0043 * residual.sugar 
##  - 16.394 * chlorides 
##  - 0.0093 * free.sulfur.dioxide 
##  - 0.0028 * total.sulfur.dioxide 
##  + 2.2255 * density 
##  - 0.088 * pH 
##  + 0.0154 * sulphates 
##  + 0.285 * alcohol 
##  + 1.9775
## 
## LM num: 22
## quality = 
##  0.0008 * fixed.acidity 
##  - 3.3571 * volatile.acidity 
##  - 0.0474 * citric.acid 
##  + 0.0167 * residual.sugar 
##  + 0.0002 * free.sulfur.dioxide 
##  - 0.0001 * total.sulfur.dioxide 
##  - 2.6496 * density 
##  + 0.0071 * pH 
##  + 0.0154 * sulphates 
##  + 0.0295 * alcohol 
##  + 8.7127
## 
## LM num: 23
## quality = 
##  0.0008 * fixed.acidity 
##  - 0.1682 * volatile.acidity 
##  - 0.0533 * citric.acid 
##  + 0.0034 * residual.sugar 
##  + 0.0112 * free.sulfur.dioxide 
##  - 0.004 * total.sulfur.dioxide 
##  - 2.4685 * density 
##  + 0.0071 * pH 
##  + 0.0154 * sulphates 
##  + 0.3099 * alcohol 
##  + 5.1272
## 
## LM num: 24
## quality = 
##  -0.1011 * fixed.acidity 
##  - 0.8767 * volatile.acidity 
##  + 0.0025 * citric.acid 
##  + 0.0183 * residual.sugar 
##  - 1.5815 * chlorides 
##  + 0 * free.sulfur.dioxide 
##  + 0.0015 * total.sulfur.dioxide 
##  - 4.1889 * density 
##  + 0.0195 * pH 
##  + 0.0154 * sulphates 
##  + 0.2656 * alcohol 
##  + 7.556
## 
## LM num: 25
## quality = 
##  0.1885 * fixed.acidity 
##  - 1.6681 * volatile.acidity 
##  + 0.0075 * citric.acid 
##  + 0.1434 * residual.sugar 
##  + 0.0181 * free.sulfur.dioxide 
##  - 438.9263 * density 
##  + 1.5263 * pH 
##  + 1.5041 * sulphates 
##  + 0.0067 * alcohol 
##  + 434.1083
## 
## LM num: 26
## quality = 
##  0.3156 * fixed.acidity 
##  - 0.3103 * volatile.acidity 
##  + 0.0075 * citric.acid 
##  + 0.0769 * residual.sugar 
##  + 0.0157 * free.sulfur.dioxide 
##  - 0.0006 * total.sulfur.dioxide 
##  - 224.3886 * density 
##  + 2.8971 * pH 
##  + 1.4123 * sulphates 
##  + 0.0067 * alcohol 
##  + 215.8849
## 
## LM num: 27
## quality = 
##  0.0704 * fixed.acidity 
##  - 1.6931 * volatile.acidity 
##  + 0.0075 * citric.acid 
##  + 0.0268 * residual.sugar 
##  + 0 * free.sulfur.dioxide 
##  - 0.0058 * total.sulfur.dioxide 
##  - 69.0546 * density 
##  + 0.5221 * pH 
##  + 0.3033 * sulphates 
##  + 0.0067 * alcohol 
##  + 73.2245
## 
## LM num: 28
## quality = 
##  -0.0359 * fixed.acidity 
##  - 2.1355 * volatile.acidity 
##  + 0.0312 * residual.sugar 
##  - 0.7007 * chlorides 
##  + 0.0139 * free.sulfur.dioxide 
##  - 3.9257 * density 
##  + 0.1002 * pH 
##  + 0.0883 * sulphates 
##  + 0.0057 * alcohol 
##  + 9.0802
## 
## LM num: 29
## quality = 
##  -0.1622 * fixed.acidity 
##  - 1.936 * volatile.acidity 
##  + 0.0312 * residual.sugar 
##  - 0.7007 * chlorides 
##  + 0.0139 * free.sulfur.dioxide 
##  - 8.2054 * density 
##  + 0.5998 * pH 
##  + 0.0883 * sulphates 
##  + 0.0057 * alcohol 
##  + 13.1705
## 
## LM num: 30
## quality = 
##  -0.1095 * fixed.acidity 
##  - 1.936 * volatile.acidity 
##  + 0.0312 * residual.sugar 
##  - 0.7007 * chlorides 
##  + 0.0139 * free.sulfur.dioxide 
##  - 8.2054 * density 
##  + 0.8708 * pH 
##  + 0.0883 * sulphates 
##  + 0.0057 * alcohol 
##  + 11.7475
## 
## LM num: 31
## quality = 
##  -0.2583 * fixed.acidity 
##  - 1.4215 * volatile.acidity 
##  - 1.371 * citric.acid 
##  + 0.0305 * residual.sugar 
##  - 3.2137 * chlorides 
##  + 0.0063 * free.sulfur.dioxide 
##  - 18.7292 * density 
##  + 0.1002 * pH 
##  + 0.0883 * sulphates 
##  + 0.1232 * alcohol 
##  + 25.7445
## 
## LM num: 32
## quality = 
##  -0.0968 * fixed.acidity 
##  - 0.9855 * volatile.acidity 
##  + 0.0245 * residual.sugar 
##  - 4.6936 * chlorides 
##  + 0.0063 * free.sulfur.dioxide 
##  - 18.7292 * density 
##  - 0.2017 * pH 
##  + 0.0883 * sulphates 
##  + 0.0612 * alcohol 
##  + 25.5306
## 
## LM num: 33
## quality = 
##  -0.0764 * fixed.acidity 
##  - 0.9855 * volatile.acidity 
##  + 0.0461 * residual.sugar 
##  - 3.7456 * chlorides 
##  + 0.0063 * free.sulfur.dioxide 
##  - 18.7292 * density 
##  - 0.0997 * pH 
##  + 0.0883 * sulphates 
##  + 0.4563 * alcohol 
##  + 20.1476
## 
## LM num: 34
## quality = 
##  0.0026 * fixed.acidity 
##  - 1.5467 * volatile.acidity 
##  + 0.5902 * citric.acid 
##  + 0.0796 * residual.sugar 
##  - 7.6293 * chlorides 
##  + 0.0004 * free.sulfur.dioxide 
##  - 0.002 * total.sulfur.dioxide 
##  - 105.9188 * density 
##  + 0.9409 * pH 
##  + 1.1632 * sulphates 
##  + 0.0057 * alcohol 
##  + 108.0478
## 
## LM num: 35
## quality = 
##  0.1974 * fixed.acidity 
##  - 1.5244 * volatile.acidity 
##  - 1.1342 * citric.acid 
##  + 0.1108 * residual.sugar 
##  - 0.5309 * chlorides 
##  + 0.0345 * free.sulfur.dioxide 
##  + 0.0002 * total.sulfur.dioxide 
##  - 306.9205 * density 
##  + 1.162 * pH 
##  + 0.0755 * sulphates 
##  - 0.0054 * alcohol 
##  + 305.176
## 
## LM num: 36
## quality = 
##  0.2738 * fixed.acidity 
##  - 0.0442 * volatile.acidity 
##  + 0.1664 * residual.sugar 
##  - 7.6486 * chlorides 
##  + 0.0005 * free.sulfur.dioxide 
##  + 0.0001 * total.sulfur.dioxide 
##  - 350.199 * density 
##  + 1.7781 * pH 
##  + 1.0583 * sulphates 
##  - 0.1722 * alcohol 
##  + 347.3058
## 
## Number of Rules : 36
# obtenemos un sumario del rendimiento de este
# nuevo modelo
summary(m.m5p)
## 
## === Summary ===
## 
## Correlation coefficient                  0.6666
## Mean absolute error                      0.5151
## Root mean squared error                  0.6614
## Relative absolute error                 76.4921 %
## Root relative squared error             74.6259 %
## Total Number of Instances             3750
# generamos predicciones con el modelo
p.m5p <- predict(m.m5p, wine_test)

# sumario estadistico de las predicciones obtenidas
summary(p.m5p)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.389   5.430   5.863   5.874   6.305   7.437
# correlacion entre las predicciones y los valores verdaderos
cor(p.m5p, wine_test$quality)
## [1] 0.6272973
# MAE de predicciones y valores verdaderos
# (usamos la funcion definida arriba)
MAE(wine_test$quality, p.m5p)
## [1] 0.5463023