Tugas Individu Sains Data

Denan

2023-11-14

horsepower <- Auto$horsepower
mpg <- Auto$mpg

Visualisasi Data

ggplot(Auto,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
   stat_smooth(method = "lm", 
               formula = y~x,lty = 1,
               col = "red",se = F)+
  theme_bw()

Regresi Polinomial

set.seed(01088)
cv.pol <- vfold_cv(Auto,v=10,strata = "mpg")

order <- 2:10

best_poly <- map_dfr(order, function(i){
metric_poly <- map_dfr(cv.pol$splits,
    function(x){
    mod <- lm(mpg ~ poly(horsepower,i),
             data=Auto[x$in_id,])
    pred <- predict(mod,
                   newdata=Auto[-x$in_id,])
    truth <- Auto[-x$in_id,]$mpg
    
    mse <- mlr3measures::mse(truth = truth,
                                   response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_poly

# menghitung rata-rata untuk 10 folds
mean_metric_poly <- colMeans(metric_poly)

mean_metric_poly
}
)

best_poly <- cbind(order,best_poly)
# menampilkan hasil all breaks
datatable(best_poly)
#berdasarkan mape
datatable(best_poly %>% slice_min(mape))
ggplot(Auto,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~poly(x,7,raw=T), 
               lty = 1, col = "red",se = F)+
  theme_bw() +
  ggtitle("Regresi Polynomial (degree=7): Data Auto") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Piecewise Constant

set.seed(01088)

cv.piec <- vfold_cv(Auto,v=10,strata = "mpg")

breaks <- 2:18

best_tangga <- map_dfr(breaks, function(i){

metric_tangga <- map_dfr(cv.piec$splits,
    function(x){

    training <- Auto[x$in_id,]
    training$horsepower <- cut(training$horsepower,i)
    
    mod <- lm(mpg ~ horsepower,
             data=training)
    
    labs_x <- levels(mod$model[,2])
    
    labs_x_breaks <- cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs_x) ),
                      upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs_x) ))
    
    
    testing <- Auto[-x$in_id,]
    
    horsepower_new <- cut(testing$horsepower,c(labs_x_breaks[1,1],labs_x_breaks[,2]))
    
    pred <- predict(mod,newdata=list(horsepower=horsepower_new))
    truth <- testing$mpg
    
    data_eval <- na.omit(data.frame(truth,pred))

    mse <- mlr3measures::mse(truth = data_eval$truth,
                               response = data_eval$pred
                           )
    mape <- mlr3measures::mape(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    mae <- mlr3measures::mae(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_tangga



# menghitung rata-rata untuk 10 folds
mean_metric_tangga <- colMeans(metric_tangga)

mean_metric_tangga
})
best_tangga <- cbind(breaks=breaks,best_tangga)
# menampilkan hasil all breaks
datatable(best_tangga)
#berdasarkan mse
datatable(best_tangga %>% slice_min(mape))
ggplot(Auto,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~cut(x,18), 
               lty = 1, col = "blue",se = F)+
  theme_bw() +
  ggtitle("Piecewise Constant (18 Knot): Data Auto") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Natural Cubic Spilines

Auto
##      mpg cylinders displacement horsepower weight acceleration year origin
## 1   18.0         8        307.0        130   3504         12.0   70      1
## 2   15.0         8        350.0        165   3693         11.5   70      1
## 3   18.0         8        318.0        150   3436         11.0   70      1
## 4   16.0         8        304.0        150   3433         12.0   70      1
## 5   17.0         8        302.0        140   3449         10.5   70      1
## 6   15.0         8        429.0        198   4341         10.0   70      1
## 7   14.0         8        454.0        220   4354          9.0   70      1
## 8   14.0         8        440.0        215   4312          8.5   70      1
## 9   14.0         8        455.0        225   4425         10.0   70      1
## 10  15.0         8        390.0        190   3850          8.5   70      1
## 11  15.0         8        383.0        170   3563         10.0   70      1
## 12  14.0         8        340.0        160   3609          8.0   70      1
## 13  15.0         8        400.0        150   3761          9.5   70      1
## 14  14.0         8        455.0        225   3086         10.0   70      1
## 15  24.0         4        113.0         95   2372         15.0   70      3
## 16  22.0         6        198.0         95   2833         15.5   70      1
## 17  18.0         6        199.0         97   2774         15.5   70      1
## 18  21.0         6        200.0         85   2587         16.0   70      1
## 19  27.0         4         97.0         88   2130         14.5   70      3
## 20  26.0         4         97.0         46   1835         20.5   70      2
## 21  25.0         4        110.0         87   2672         17.5   70      2
## 22  24.0         4        107.0         90   2430         14.5   70      2
## 23  25.0         4        104.0         95   2375         17.5   70      2
## 24  26.0         4        121.0        113   2234         12.5   70      2
## 25  21.0         6        199.0         90   2648         15.0   70      1
## 26  10.0         8        360.0        215   4615         14.0   70      1
## 27  10.0         8        307.0        200   4376         15.0   70      1
## 28  11.0         8        318.0        210   4382         13.5   70      1
## 29   9.0         8        304.0        193   4732         18.5   70      1
## 30  27.0         4         97.0         88   2130         14.5   71      3
## 31  28.0         4        140.0         90   2264         15.5   71      1
## 32  25.0         4        113.0         95   2228         14.0   71      3
## 34  19.0         6        232.0        100   2634         13.0   71      1
## 35  16.0         6        225.0        105   3439         15.5   71      1
## 36  17.0         6        250.0        100   3329         15.5   71      1
## 37  19.0         6        250.0         88   3302         15.5   71      1
## 38  18.0         6        232.0        100   3288         15.5   71      1
## 39  14.0         8        350.0        165   4209         12.0   71      1
## 40  14.0         8        400.0        175   4464         11.5   71      1
## 41  14.0         8        351.0        153   4154         13.5   71      1
## 42  14.0         8        318.0        150   4096         13.0   71      1
## 43  12.0         8        383.0        180   4955         11.5   71      1
## 44  13.0         8        400.0        170   4746         12.0   71      1
## 45  13.0         8        400.0        175   5140         12.0   71      1
## 46  18.0         6        258.0        110   2962         13.5   71      1
## 47  22.0         4        140.0         72   2408         19.0   71      1
## 48  19.0         6        250.0        100   3282         15.0   71      1
## 49  18.0         6        250.0         88   3139         14.5   71      1
## 50  23.0         4        122.0         86   2220         14.0   71      1
## 51  28.0         4        116.0         90   2123         14.0   71      2
## 52  30.0         4         79.0         70   2074         19.5   71      2
## 53  30.0         4         88.0         76   2065         14.5   71      2
## 54  31.0         4         71.0         65   1773         19.0   71      3
## 55  35.0         4         72.0         69   1613         18.0   71      3
## 56  27.0         4         97.0         60   1834         19.0   71      2
## 57  26.0         4         91.0         70   1955         20.5   71      1
## 58  24.0         4        113.0         95   2278         15.5   72      3
## 59  25.0         4         97.5         80   2126         17.0   72      1
## 60  23.0         4         97.0         54   2254         23.5   72      2
## 61  20.0         4        140.0         90   2408         19.5   72      1
## 62  21.0         4        122.0         86   2226         16.5   72      1
## 63  13.0         8        350.0        165   4274         12.0   72      1
## 64  14.0         8        400.0        175   4385         12.0   72      1
## 65  15.0         8        318.0        150   4135         13.5   72      1
## 66  14.0         8        351.0        153   4129         13.0   72      1
## 67  17.0         8        304.0        150   3672         11.5   72      1
## 68  11.0         8        429.0        208   4633         11.0   72      1
## 69  13.0         8        350.0        155   4502         13.5   72      1
## 70  12.0         8        350.0        160   4456         13.5   72      1
## 71  13.0         8        400.0        190   4422         12.5   72      1
## 72  19.0         3         70.0         97   2330         13.5   72      3
## 73  15.0         8        304.0        150   3892         12.5   72      1
## 74  13.0         8        307.0        130   4098         14.0   72      1
## 75  13.0         8        302.0        140   4294         16.0   72      1
## 76  14.0         8        318.0        150   4077         14.0   72      1
## 77  18.0         4        121.0        112   2933         14.5   72      2
## 78  22.0         4        121.0         76   2511         18.0   72      2
## 79  21.0         4        120.0         87   2979         19.5   72      2
## 80  26.0         4         96.0         69   2189         18.0   72      2
## 81  22.0         4        122.0         86   2395         16.0   72      1
## 82  28.0         4         97.0         92   2288         17.0   72      3
## 83  23.0         4        120.0         97   2506         14.5   72      3
## 84  28.0         4         98.0         80   2164         15.0   72      1
## 85  27.0         4         97.0         88   2100         16.5   72      3
## 86  13.0         8        350.0        175   4100         13.0   73      1
## 87  14.0         8        304.0        150   3672         11.5   73      1
## 88  13.0         8        350.0        145   3988         13.0   73      1
## 89  14.0         8        302.0        137   4042         14.5   73      1
## 90  15.0         8        318.0        150   3777         12.5   73      1
## 91  12.0         8        429.0        198   4952         11.5   73      1
## 92  13.0         8        400.0        150   4464         12.0   73      1
## 93  13.0         8        351.0        158   4363         13.0   73      1
## 94  14.0         8        318.0        150   4237         14.5   73      1
## 95  13.0         8        440.0        215   4735         11.0   73      1
## 96  12.0         8        455.0        225   4951         11.0   73      1
## 97  13.0         8        360.0        175   3821         11.0   73      1
## 98  18.0         6        225.0        105   3121         16.5   73      1
## 99  16.0         6        250.0        100   3278         18.0   73      1
## 100 18.0         6        232.0        100   2945         16.0   73      1
## 101 18.0         6        250.0         88   3021         16.5   73      1
## 102 23.0         6        198.0         95   2904         16.0   73      1
## 103 26.0         4         97.0         46   1950         21.0   73      2
## 104 11.0         8        400.0        150   4997         14.0   73      1
## 105 12.0         8        400.0        167   4906         12.5   73      1
## 106 13.0         8        360.0        170   4654         13.0   73      1
## 107 12.0         8        350.0        180   4499         12.5   73      1
## 108 18.0         6        232.0        100   2789         15.0   73      1
## 109 20.0         4         97.0         88   2279         19.0   73      3
## 110 21.0         4        140.0         72   2401         19.5   73      1
## 111 22.0         4        108.0         94   2379         16.5   73      3
## 112 18.0         3         70.0         90   2124         13.5   73      3
## 113 19.0         4        122.0         85   2310         18.5   73      1
## 114 21.0         6        155.0        107   2472         14.0   73      1
## 115 26.0         4         98.0         90   2265         15.5   73      2
## 116 15.0         8        350.0        145   4082         13.0   73      1
## 117 16.0         8        400.0        230   4278          9.5   73      1
## 118 29.0         4         68.0         49   1867         19.5   73      2
## 119 24.0         4        116.0         75   2158         15.5   73      2
## 120 20.0         4        114.0         91   2582         14.0   73      2
## 121 19.0         4        121.0        112   2868         15.5   73      2
## 122 15.0         8        318.0        150   3399         11.0   73      1
## 123 24.0         4        121.0        110   2660         14.0   73      2
## 124 20.0         6        156.0        122   2807         13.5   73      3
## 125 11.0         8        350.0        180   3664         11.0   73      1
## 126 20.0         6        198.0         95   3102         16.5   74      1
## 128 19.0         6        232.0        100   2901         16.0   74      1
## 129 15.0         6        250.0        100   3336         17.0   74      1
## 130 31.0         4         79.0         67   1950         19.0   74      3
## 131 26.0         4        122.0         80   2451         16.5   74      1
## 132 32.0         4         71.0         65   1836         21.0   74      3
## 133 25.0         4        140.0         75   2542         17.0   74      1
## 134 16.0         6        250.0        100   3781         17.0   74      1
## 135 16.0         6        258.0        110   3632         18.0   74      1
## 136 18.0         6        225.0        105   3613         16.5   74      1
## 137 16.0         8        302.0        140   4141         14.0   74      1
## 138 13.0         8        350.0        150   4699         14.5   74      1
## 139 14.0         8        318.0        150   4457         13.5   74      1
## 140 14.0         8        302.0        140   4638         16.0   74      1
## 141 14.0         8        304.0        150   4257         15.5   74      1
## 142 29.0         4         98.0         83   2219         16.5   74      2
## 143 26.0         4         79.0         67   1963         15.5   74      2
## 144 26.0         4         97.0         78   2300         14.5   74      2
## 145 31.0         4         76.0         52   1649         16.5   74      3
## 146 32.0         4         83.0         61   2003         19.0   74      3
## 147 28.0         4         90.0         75   2125         14.5   74      1
## 148 24.0         4         90.0         75   2108         15.5   74      2
## 149 26.0         4        116.0         75   2246         14.0   74      2
## 150 24.0         4        120.0         97   2489         15.0   74      3
## 151 26.0         4        108.0         93   2391         15.5   74      3
## 152 31.0         4         79.0         67   2000         16.0   74      2
## 153 19.0         6        225.0         95   3264         16.0   75      1
## 154 18.0         6        250.0        105   3459         16.0   75      1
## 155 15.0         6        250.0         72   3432         21.0   75      1
## 156 15.0         6        250.0         72   3158         19.5   75      1
## 157 16.0         8        400.0        170   4668         11.5   75      1
## 158 15.0         8        350.0        145   4440         14.0   75      1
## 159 16.0         8        318.0        150   4498         14.5   75      1
## 160 14.0         8        351.0        148   4657         13.5   75      1
## 161 17.0         6        231.0        110   3907         21.0   75      1
## 162 16.0         6        250.0        105   3897         18.5   75      1
## 163 15.0         6        258.0        110   3730         19.0   75      1
## 164 18.0         6        225.0         95   3785         19.0   75      1
## 165 21.0         6        231.0        110   3039         15.0   75      1
## 166 20.0         8        262.0        110   3221         13.5   75      1
## 167 13.0         8        302.0        129   3169         12.0   75      1
## 168 29.0         4         97.0         75   2171         16.0   75      3
## 169 23.0         4        140.0         83   2639         17.0   75      1
## 170 20.0         6        232.0        100   2914         16.0   75      1
## 171 23.0         4        140.0         78   2592         18.5   75      1
## 172 24.0         4        134.0         96   2702         13.5   75      3
## 173 25.0         4         90.0         71   2223         16.5   75      2
## 174 24.0         4        119.0         97   2545         17.0   75      3
## 175 18.0         6        171.0         97   2984         14.5   75      1
## 176 29.0         4         90.0         70   1937         14.0   75      2
## 177 19.0         6        232.0         90   3211         17.0   75      1
## 178 23.0         4        115.0         95   2694         15.0   75      2
## 179 23.0         4        120.0         88   2957         17.0   75      2
## 180 22.0         4        121.0         98   2945         14.5   75      2
## 181 25.0         4        121.0        115   2671         13.5   75      2
## 182 33.0         4         91.0         53   1795         17.5   75      3
## 183 28.0         4        107.0         86   2464         15.5   76      2
## 184 25.0         4        116.0         81   2220         16.9   76      2
## 185 25.0         4        140.0         92   2572         14.9   76      1
## 186 26.0         4         98.0         79   2255         17.7   76      1
## 187 27.0         4        101.0         83   2202         15.3   76      2
## 188 17.5         8        305.0        140   4215         13.0   76      1
## 189 16.0         8        318.0        150   4190         13.0   76      1
## 190 15.5         8        304.0        120   3962         13.9   76      1
## 191 14.5         8        351.0        152   4215         12.8   76      1
## 192 22.0         6        225.0        100   3233         15.4   76      1
## 193 22.0         6        250.0        105   3353         14.5   76      1
## 194 24.0         6        200.0         81   3012         17.6   76      1
## 195 22.5         6        232.0         90   3085         17.6   76      1
## 196 29.0         4         85.0         52   2035         22.2   76      1
## 197 24.5         4         98.0         60   2164         22.1   76      1
## 198 29.0         4         90.0         70   1937         14.2   76      2
## 199 33.0         4         91.0         53   1795         17.4   76      3
## 200 20.0         6        225.0        100   3651         17.7   76      1
## 201 18.0         6        250.0         78   3574         21.0   76      1
## 202 18.5         6        250.0        110   3645         16.2   76      1
## 203 17.5         6        258.0         95   3193         17.8   76      1
## 204 29.5         4         97.0         71   1825         12.2   76      2
## 205 32.0         4         85.0         70   1990         17.0   76      3
## 206 28.0         4         97.0         75   2155         16.4   76      3
## 207 26.5         4        140.0         72   2565         13.6   76      1
## 208 20.0         4        130.0        102   3150         15.7   76      2
## 209 13.0         8        318.0        150   3940         13.2   76      1
## 210 19.0         4        120.0         88   3270         21.9   76      2
## 211 19.0         6        156.0        108   2930         15.5   76      3
## 212 16.5         6        168.0        120   3820         16.7   76      2
## 213 16.5         8        350.0        180   4380         12.1   76      1
## 214 13.0         8        350.0        145   4055         12.0   76      1
## 215 13.0         8        302.0        130   3870         15.0   76      1
## 216 13.0         8        318.0        150   3755         14.0   76      1
## 217 31.5         4         98.0         68   2045         18.5   77      3
## 218 30.0         4        111.0         80   2155         14.8   77      1
## 219 36.0         4         79.0         58   1825         18.6   77      2
## 220 25.5         4        122.0         96   2300         15.5   77      1
## 221 33.5         4         85.0         70   1945         16.8   77      3
## 222 17.5         8        305.0        145   3880         12.5   77      1
## 223 17.0         8        260.0        110   4060         19.0   77      1
## 224 15.5         8        318.0        145   4140         13.7   77      1
## 225 15.0         8        302.0        130   4295         14.9   77      1
## 226 17.5         6        250.0        110   3520         16.4   77      1
## 227 20.5         6        231.0        105   3425         16.9   77      1
## 228 19.0         6        225.0        100   3630         17.7   77      1
## 229 18.5         6        250.0         98   3525         19.0   77      1
## 230 16.0         8        400.0        180   4220         11.1   77      1
## 231 15.5         8        350.0        170   4165         11.4   77      1
## 232 15.5         8        400.0        190   4325         12.2   77      1
## 233 16.0         8        351.0        149   4335         14.5   77      1
## 234 29.0         4         97.0         78   1940         14.5   77      2
## 235 24.5         4        151.0         88   2740         16.0   77      1
## 236 26.0         4         97.0         75   2265         18.2   77      3
## 237 25.5         4        140.0         89   2755         15.8   77      1
## 238 30.5         4         98.0         63   2051         17.0   77      1
## 239 33.5         4         98.0         83   2075         15.9   77      1
## 240 30.0         4         97.0         67   1985         16.4   77      3
## 241 30.5         4         97.0         78   2190         14.1   77      2
## 242 22.0         6        146.0         97   2815         14.5   77      3
## 243 21.5         4        121.0        110   2600         12.8   77      2
## 244 21.5         3         80.0        110   2720         13.5   77      3
## 245 43.1         4         90.0         48   1985         21.5   78      2
## 246 36.1         4         98.0         66   1800         14.4   78      1
## 247 32.8         4         78.0         52   1985         19.4   78      3
## 248 39.4         4         85.0         70   2070         18.6   78      3
## 249 36.1         4         91.0         60   1800         16.4   78      3
## 250 19.9         8        260.0        110   3365         15.5   78      1
## 251 19.4         8        318.0        140   3735         13.2   78      1
## 252 20.2         8        302.0        139   3570         12.8   78      1
## 253 19.2         6        231.0        105   3535         19.2   78      1
## 254 20.5         6        200.0         95   3155         18.2   78      1
## 255 20.2         6        200.0         85   2965         15.8   78      1
## 256 25.1         4        140.0         88   2720         15.4   78      1
## 257 20.5         6        225.0        100   3430         17.2   78      1
## 258 19.4         6        232.0         90   3210         17.2   78      1
## 259 20.6         6        231.0        105   3380         15.8   78      1
## 260 20.8         6        200.0         85   3070         16.7   78      1
## 261 18.6         6        225.0        110   3620         18.7   78      1
## 262 18.1         6        258.0        120   3410         15.1   78      1
## 263 19.2         8        305.0        145   3425         13.2   78      1
## 264 17.7         6        231.0        165   3445         13.4   78      1
## 265 18.1         8        302.0        139   3205         11.2   78      1
## 266 17.5         8        318.0        140   4080         13.7   78      1
## 267 30.0         4         98.0         68   2155         16.5   78      1
## 268 27.5         4        134.0         95   2560         14.2   78      3
## 269 27.2         4        119.0         97   2300         14.7   78      3
## 270 30.9         4        105.0         75   2230         14.5   78      1
## 271 21.1         4        134.0         95   2515         14.8   78      3
## 272 23.2         4        156.0        105   2745         16.7   78      1
## 273 23.8         4        151.0         85   2855         17.6   78      1
## 274 23.9         4        119.0         97   2405         14.9   78      3
## 275 20.3         5        131.0        103   2830         15.9   78      2
## 276 17.0         6        163.0        125   3140         13.6   78      2
## 277 21.6         4        121.0        115   2795         15.7   78      2
## 278 16.2         6        163.0        133   3410         15.8   78      2
## 279 31.5         4         89.0         71   1990         14.9   78      2
## 280 29.5         4         98.0         68   2135         16.6   78      3
## 281 21.5         6        231.0        115   3245         15.4   79      1
## 282 19.8         6        200.0         85   2990         18.2   79      1
## 283 22.3         4        140.0         88   2890         17.3   79      1
## 284 20.2         6        232.0         90   3265         18.2   79      1
## 285 20.6         6        225.0        110   3360         16.6   79      1
## 286 17.0         8        305.0        130   3840         15.4   79      1
## 287 17.6         8        302.0        129   3725         13.4   79      1
## 288 16.5         8        351.0        138   3955         13.2   79      1
## 289 18.2         8        318.0        135   3830         15.2   79      1
## 290 16.9         8        350.0        155   4360         14.9   79      1
## 291 15.5         8        351.0        142   4054         14.3   79      1
## 292 19.2         8        267.0        125   3605         15.0   79      1
## 293 18.5         8        360.0        150   3940         13.0   79      1
## 294 31.9         4         89.0         71   1925         14.0   79      2
## 295 34.1         4         86.0         65   1975         15.2   79      3
## 296 35.7         4         98.0         80   1915         14.4   79      1
## 297 27.4         4        121.0         80   2670         15.0   79      1
## 298 25.4         5        183.0         77   3530         20.1   79      2
## 299 23.0         8        350.0        125   3900         17.4   79      1
## 300 27.2         4        141.0         71   3190         24.8   79      2
## 301 23.9         8        260.0         90   3420         22.2   79      1
## 302 34.2         4        105.0         70   2200         13.2   79      1
## 303 34.5         4        105.0         70   2150         14.9   79      1
## 304 31.8         4         85.0         65   2020         19.2   79      3
## 305 37.3         4         91.0         69   2130         14.7   79      2
## 306 28.4         4        151.0         90   2670         16.0   79      1
## 307 28.8         6        173.0        115   2595         11.3   79      1
## 308 26.8         6        173.0        115   2700         12.9   79      1
## 309 33.5         4        151.0         90   2556         13.2   79      1
## 310 41.5         4         98.0         76   2144         14.7   80      2
## 311 38.1         4         89.0         60   1968         18.8   80      3
## 312 32.1         4         98.0         70   2120         15.5   80      1
## 313 37.2         4         86.0         65   2019         16.4   80      3
## 314 28.0         4        151.0         90   2678         16.5   80      1
## 315 26.4         4        140.0         88   2870         18.1   80      1
## 316 24.3         4        151.0         90   3003         20.1   80      1
## 317 19.1         6        225.0         90   3381         18.7   80      1
## 318 34.3         4         97.0         78   2188         15.8   80      2
## 319 29.8         4        134.0         90   2711         15.5   80      3
## 320 31.3         4        120.0         75   2542         17.5   80      3
## 321 37.0         4        119.0         92   2434         15.0   80      3
## 322 32.2         4        108.0         75   2265         15.2   80      3
## 323 46.6         4         86.0         65   2110         17.9   80      3
## 324 27.9         4        156.0        105   2800         14.4   80      1
## 325 40.8         4         85.0         65   2110         19.2   80      3
## 326 44.3         4         90.0         48   2085         21.7   80      2
## 327 43.4         4         90.0         48   2335         23.7   80      2
## 328 36.4         5        121.0         67   2950         19.9   80      2
## 329 30.0         4        146.0         67   3250         21.8   80      2
## 330 44.6         4         91.0         67   1850         13.8   80      3
## 332 33.8         4         97.0         67   2145         18.0   80      3
## 333 29.8         4         89.0         62   1845         15.3   80      2
## 334 32.7         6        168.0        132   2910         11.4   80      3
## 335 23.7         3         70.0        100   2420         12.5   80      3
## 336 35.0         4        122.0         88   2500         15.1   80      2
## 338 32.4         4        107.0         72   2290         17.0   80      3
## 339 27.2         4        135.0         84   2490         15.7   81      1
## 340 26.6         4        151.0         84   2635         16.4   81      1
## 341 25.8         4        156.0         92   2620         14.4   81      1
## 342 23.5         6        173.0        110   2725         12.6   81      1
## 343 30.0         4        135.0         84   2385         12.9   81      1
## 344 39.1         4         79.0         58   1755         16.9   81      3
## 345 39.0         4         86.0         64   1875         16.4   81      1
## 346 35.1         4         81.0         60   1760         16.1   81      3
## 347 32.3         4         97.0         67   2065         17.8   81      3
## 348 37.0         4         85.0         65   1975         19.4   81      3
## 349 37.7         4         89.0         62   2050         17.3   81      3
## 350 34.1         4         91.0         68   1985         16.0   81      3
## 351 34.7         4        105.0         63   2215         14.9   81      1
## 352 34.4         4         98.0         65   2045         16.2   81      1
## 353 29.9         4         98.0         65   2380         20.7   81      1
## 354 33.0         4        105.0         74   2190         14.2   81      2
## 356 33.7         4        107.0         75   2210         14.4   81      3
## 357 32.4         4        108.0         75   2350         16.8   81      3
## 358 32.9         4        119.0        100   2615         14.8   81      3
## 359 31.6         4        120.0         74   2635         18.3   81      3
## 360 28.1         4        141.0         80   3230         20.4   81      2
## 361 30.7         6        145.0         76   3160         19.6   81      2
## 362 25.4         6        168.0        116   2900         12.6   81      3
## 363 24.2         6        146.0        120   2930         13.8   81      3
## 364 22.4         6        231.0        110   3415         15.8   81      1
## 365 26.6         8        350.0        105   3725         19.0   81      1
## 366 20.2         6        200.0         88   3060         17.1   81      1
## 367 17.6         6        225.0         85   3465         16.6   81      1
## 368 28.0         4        112.0         88   2605         19.6   82      1
## 369 27.0         4        112.0         88   2640         18.6   82      1
## 370 34.0         4        112.0         88   2395         18.0   82      1
## 371 31.0         4        112.0         85   2575         16.2   82      1
## 372 29.0         4        135.0         84   2525         16.0   82      1
## 373 27.0         4        151.0         90   2735         18.0   82      1
## 374 24.0         4        140.0         92   2865         16.4   82      1
## 375 36.0         4        105.0         74   1980         15.3   82      2
## 376 37.0         4         91.0         68   2025         18.2   82      3
## 377 31.0         4         91.0         68   1970         17.6   82      3
## 378 38.0         4        105.0         63   2125         14.7   82      1
## 379 36.0         4         98.0         70   2125         17.3   82      1
## 380 36.0         4        120.0         88   2160         14.5   82      3
## 381 36.0         4        107.0         75   2205         14.5   82      3
## 382 34.0         4        108.0         70   2245         16.9   82      3
## 383 38.0         4         91.0         67   1965         15.0   82      3
## 384 32.0         4         91.0         67   1965         15.7   82      3
## 385 38.0         4         91.0         67   1995         16.2   82      3
## 386 25.0         6        181.0        110   2945         16.4   82      1
## 387 38.0         6        262.0         85   3015         17.0   82      1
## 388 26.0         4        156.0         92   2585         14.5   82      1
## 389 22.0         6        232.0        112   2835         14.7   82      1
## 390 32.0         4        144.0         96   2665         13.9   82      3
## 391 36.0         4        135.0         84   2370         13.0   82      1
## 392 27.0         4        151.0         90   2950         17.3   82      1
## 393 27.0         4        140.0         86   2790         15.6   82      1
## 394 44.0         4         97.0         52   2130         24.6   82      2
## 395 32.0         4        135.0         84   2295         11.6   82      1
## 396 28.0         4        120.0         79   2625         18.6   82      1
## 397 31.0         4        119.0         82   2720         19.4   82      1
##                                     name
## 1              chevrolet chevelle malibu
## 2                      buick skylark 320
## 3                     plymouth satellite
## 4                          amc rebel sst
## 5                            ford torino
## 6                       ford galaxie 500
## 7                       chevrolet impala
## 8                      plymouth fury iii
## 9                       pontiac catalina
## 10                    amc ambassador dpl
## 11                   dodge challenger se
## 12                    plymouth 'cuda 340
## 13                 chevrolet monte carlo
## 14               buick estate wagon (sw)
## 15                 toyota corona mark ii
## 16                       plymouth duster
## 17                            amc hornet
## 18                         ford maverick
## 19                          datsun pl510
## 20          volkswagen 1131 deluxe sedan
## 21                           peugeot 504
## 22                           audi 100 ls
## 23                              saab 99e
## 24                              bmw 2002
## 25                           amc gremlin
## 26                             ford f250
## 27                             chevy c20
## 28                            dodge d200
## 29                              hi 1200d
## 30                          datsun pl510
## 31                   chevrolet vega 2300
## 32                         toyota corona
## 34                           amc gremlin
## 35             plymouth satellite custom
## 36             chevrolet chevelle malibu
## 37                       ford torino 500
## 38                           amc matador
## 39                      chevrolet impala
## 40             pontiac catalina brougham
## 41                      ford galaxie 500
## 42                     plymouth fury iii
## 43                     dodge monaco (sw)
## 44              ford country squire (sw)
## 45                   pontiac safari (sw)
## 46            amc hornet sportabout (sw)
## 47                   chevrolet vega (sw)
## 48                      pontiac firebird
## 49                          ford mustang
## 50                    mercury capri 2000
## 51                             opel 1900
## 52                           peugeot 304
## 53                             fiat 124b
## 54                   toyota corolla 1200
## 55                           datsun 1200
## 56                  volkswagen model 111
## 57                      plymouth cricket
## 58                 toyota corona hardtop
## 59                    dodge colt hardtop
## 60                     volkswagen type 3
## 61                        chevrolet vega
## 62                   ford pinto runabout
## 63                      chevrolet impala
## 64                      pontiac catalina
## 65                     plymouth fury iii
## 66                      ford galaxie 500
## 67                    amc ambassador sst
## 68                       mercury marquis
## 69                  buick lesabre custom
## 70            oldsmobile delta 88 royale
## 71                chrysler newport royal
## 72                       mazda rx2 coupe
## 73                      amc matador (sw)
## 74      chevrolet chevelle concours (sw)
## 75                 ford gran torino (sw)
## 76        plymouth satellite custom (sw)
## 77                       volvo 145e (sw)
## 78                   volkswagen 411 (sw)
## 79                      peugeot 504 (sw)
## 80                       renault 12 (sw)
## 81                       ford pinto (sw)
## 82                       datsun 510 (sw)
## 83           toyouta corona mark ii (sw)
## 84                       dodge colt (sw)
## 85              toyota corolla 1600 (sw)
## 86                     buick century 350
## 87                           amc matador
## 88                      chevrolet malibu
## 89                      ford gran torino
## 90                  dodge coronet custom
## 91              mercury marquis brougham
## 92             chevrolet caprice classic
## 93                              ford ltd
## 94              plymouth fury gran sedan
## 95          chrysler new yorker brougham
## 96              buick electra 225 custom
## 97               amc ambassador brougham
## 98                      plymouth valiant
## 99                 chevrolet nova custom
## 100                           amc hornet
## 101                        ford maverick
## 102                      plymouth duster
## 103              volkswagen super beetle
## 104                     chevrolet impala
## 105                         ford country
## 106               plymouth custom suburb
## 107             oldsmobile vista cruiser
## 108                          amc gremlin
## 109                        toyota carina
## 110                       chevrolet vega
## 111                           datsun 610
## 112                            maxda rx3
## 113                           ford pinto
## 114                     mercury capri v6
## 115                 fiat 124 sport coupe
## 116              chevrolet monte carlo s
## 117                   pontiac grand prix
## 118                             fiat 128
## 119                           opel manta
## 120                           audi 100ls
## 121                          volvo 144ea
## 122                    dodge dart custom
## 123                            saab 99le
## 124                       toyota mark ii
## 125                     oldsmobile omega
## 126                      plymouth duster
## 128                           amc hornet
## 129                       chevrolet nova
## 130                          datsun b210
## 131                           ford pinto
## 132                  toyota corolla 1200
## 133                       chevrolet vega
## 134    chevrolet chevelle malibu classic
## 135                          amc matador
## 136           plymouth satellite sebring
## 137                     ford gran torino
## 138             buick century luxus (sw)
## 139            dodge coronet custom (sw)
## 140                ford gran torino (sw)
## 141                     amc matador (sw)
## 142                             audi fox
## 143                    volkswagen dasher
## 144                           opel manta
## 145                        toyota corona
## 146                           datsun 710
## 147                           dodge colt
## 148                             fiat 128
## 149                          fiat 124 tc
## 150                          honda civic
## 151                               subaru
## 152                            fiat x1.9
## 153              plymouth valiant custom
## 154                       chevrolet nova
## 155                      mercury monarch
## 156                        ford maverick
## 157                     pontiac catalina
## 158                    chevrolet bel air
## 159                  plymouth grand fury
## 160                             ford ltd
## 161                        buick century
## 162            chevroelt chevelle malibu
## 163                          amc matador
## 164                        plymouth fury
## 165                        buick skyhawk
## 166                  chevrolet monza 2+2
## 167                      ford mustang ii
## 168                       toyota corolla
## 169                           ford pinto
## 170                          amc gremlin
## 171                        pontiac astro
## 172                        toyota corona
## 173                    volkswagen dasher
## 174                           datsun 710
## 175                           ford pinto
## 176                    volkswagen rabbit
## 177                            amc pacer
## 178                           audi 100ls
## 179                          peugeot 504
## 180                          volvo 244dl
## 181                            saab 99le
## 182                     honda civic cvcc
## 183                             fiat 131
## 184                            opel 1900
## 185                             capri ii
## 186                           dodge colt
## 187                         renault 12tl
## 188    chevrolet chevelle malibu classic
## 189               dodge coronet brougham
## 190                          amc matador
## 191                     ford gran torino
## 192                     plymouth valiant
## 193                       chevrolet nova
## 194                        ford maverick
## 195                           amc hornet
## 196                   chevrolet chevette
## 197                      chevrolet woody
## 198                            vw rabbit
## 199                          honda civic
## 200                       dodge aspen se
## 201                    ford granada ghia
## 202                   pontiac ventura sj
## 203                        amc pacer d/l
## 204                    volkswagen rabbit
## 205                         datsun b-210
## 206                       toyota corolla
## 207                           ford pinto
## 208                            volvo 245
## 209           plymouth volare premier v8
## 210                          peugeot 504
## 211                       toyota mark ii
## 212                   mercedes-benz 280s
## 213                     cadillac seville
## 214                            chevy c10
## 215                            ford f108
## 216                           dodge d100
## 217                    honda accord cvcc
## 218              buick opel isuzu deluxe
## 219                        renault 5 gtl
## 220                    plymouth arrow gs
## 221                datsun f-10 hatchback
## 222            chevrolet caprice classic
## 223           oldsmobile cutlass supreme
## 224                dodge monaco brougham
## 225              mercury cougar brougham
## 226                   chevrolet concours
## 227                        buick skylark
## 228               plymouth volare custom
## 229                         ford granada
## 230                pontiac grand prix lj
## 231         chevrolet monte carlo landau
## 232                     chrysler cordoba
## 233                     ford thunderbird
## 234             volkswagen rabbit custom
## 235                pontiac sunbird coupe
## 236              toyota corolla liftback
## 237                  ford mustang ii 2+2
## 238                   chevrolet chevette
## 239                       dodge colt m/m
## 240                            subaru dl
## 241                    volkswagen dasher
## 242                           datsun 810
## 243                             bmw 320i
## 244                           mazda rx-4
## 245      volkswagen rabbit custom diesel
## 246                          ford fiesta
## 247                     mazda glc deluxe
## 248                       datsun b210 gx
## 249                     honda civic cvcc
## 250    oldsmobile cutlass salon brougham
## 251                       dodge diplomat
## 252                 mercury monarch ghia
## 253                   pontiac phoenix lj
## 254                     chevrolet malibu
## 255                 ford fairmont (auto)
## 256                  ford fairmont (man)
## 257                      plymouth volare
## 258                          amc concord
## 259                buick century special
## 260                       mercury zephyr
## 261                          dodge aspen
## 262                      amc concord d/l
## 263         chevrolet monte carlo landau
## 264      buick regal sport coupe (turbo)
## 265                          ford futura
## 266                      dodge magnum xe
## 267                   chevrolet chevette
## 268                        toyota corona
## 269                           datsun 510
## 270                           dodge omni
## 271            toyota celica gt liftback
## 272                     plymouth sapporo
## 273               oldsmobile starfire sx
## 274                        datsun 200-sx
## 275                            audi 5000
## 276                          volvo 264gl
## 277                           saab 99gle
## 278                        peugeot 604sl
## 279                  volkswagen scirocco
## 280                      honda accord lx
## 281                    pontiac lemans v6
## 282                     mercury zephyr 6
## 283                      ford fairmont 4
## 284                     amc concord dl 6
## 285                        dodge aspen 6
## 286            chevrolet caprice classic
## 287                      ford ltd landau
## 288                mercury grand marquis
## 289                      dodge st. regis
## 290              buick estate wagon (sw)
## 291             ford country squire (sw)
## 292        chevrolet malibu classic (sw)
## 293 chrysler lebaron town @ country (sw)
## 294                     vw rabbit custom
## 295                     maxda glc deluxe
## 296          dodge colt hatchback custom
## 297                        amc spirit dl
## 298                   mercedes benz 300d
## 299                    cadillac eldorado
## 300                          peugeot 504
## 301    oldsmobile cutlass salon brougham
## 302                     plymouth horizon
## 303                 plymouth horizon tc3
## 304                           datsun 210
## 305                   fiat strada custom
## 306                buick skylark limited
## 307                   chevrolet citation
## 308            oldsmobile omega brougham
## 309                      pontiac phoenix
## 310                            vw rabbit
## 311                toyota corolla tercel
## 312                   chevrolet chevette
## 313                           datsun 310
## 314                   chevrolet citation
## 315                        ford fairmont
## 316                          amc concord
## 317                          dodge aspen
## 318                            audi 4000
## 319               toyota corona liftback
## 320                            mazda 626
## 321                 datsun 510 hatchback
## 322                       toyota corolla
## 323                            mazda glc
## 324                           dodge colt
## 325                           datsun 210
## 326                 vw rabbit c (diesel)
## 327                   vw dasher (diesel)
## 328                  audi 5000s (diesel)
## 329                   mercedes-benz 240d
## 330                  honda civic 1500 gl
## 332                            subaru dl
## 333                     vokswagen rabbit
## 334                        datsun 280-zx
## 335                        mazda rx-7 gs
## 336                    triumph tr7 coupe
## 338                         honda accord
## 339                     plymouth reliant
## 340                        buick skylark
## 341               dodge aries wagon (sw)
## 342                   chevrolet citation
## 343                     plymouth reliant
## 344                       toyota starlet
## 345                       plymouth champ
## 346                     honda civic 1300
## 347                               subaru
## 348                       datsun 210 mpg
## 349                        toyota tercel
## 350                          mazda glc 4
## 351                   plymouth horizon 4
## 352                       ford escort 4w
## 353                       ford escort 2h
## 354                     volkswagen jetta
## 356                        honda prelude
## 357                       toyota corolla
## 358                         datsun 200sx
## 359                            mazda 626
## 360            peugeot 505s turbo diesel
## 361                         volvo diesel
## 362                      toyota cressida
## 363                    datsun 810 maxima
## 364                        buick century
## 365                oldsmobile cutlass ls
## 366                      ford granada gl
## 367               chrysler lebaron salon
## 368                   chevrolet cavalier
## 369             chevrolet cavalier wagon
## 370            chevrolet cavalier 2-door
## 371           pontiac j2000 se hatchback
## 372                       dodge aries se
## 373                      pontiac phoenix
## 374                 ford fairmont futura
## 375                  volkswagen rabbit l
## 376                   mazda glc custom l
## 377                     mazda glc custom
## 378               plymouth horizon miser
## 379                       mercury lynx l
## 380                     nissan stanza xe
## 381                         honda accord
## 382                       toyota corolla
## 383                          honda civic
## 384                   honda civic (auto)
## 385                        datsun 310 gx
## 386                buick century limited
## 387    oldsmobile cutlass ciera (diesel)
## 388           chrysler lebaron medallion
## 389                       ford granada l
## 390                     toyota celica gt
## 391                    dodge charger 2.2
## 392                     chevrolet camaro
## 393                      ford mustang gl
## 394                            vw pickup
## 395                        dodge rampage
## 396                          ford ranger
## 397                           chevy s-10
set.seed(123)
cv.ns <- vfold_cv(Auto,v=10,strata = "mpg")

df <- 2:20

best_spline3 <- map_dfr(df, function(i){
metric_spline3 <- map_dfr(cv.ns$splits,
    function(x){
    mod <- lm(mpg ~ ns(horsepower,df=i),
             data=Auto[x$in_id,])
    pred <- predict(mod,
                   newdata=Auto[-x$in_id,])
    truth <- Auto[-x$in_id,]$mpg

    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_spline3

# menghitung rata-rata untuk 10 folds
mean_metric_spline3 <- colMeans(metric_spline3)

mean_metric_spline3
}
)

best_spline3 <- cbind(df=df,best_spline3)
# menampilkan hasil all breaks
datatable(best_spline3)
#berdasarkan mape
datatable(best_spline3 %>% slice_min(mape))
attr(ns(horsepower,df=12),"knots")
##  [1]  65.0000  70.0000  75.0000  84.0000  88.0000  93.5000 100.0000 110.0000
##  [9] 126.0000 150.0000 165.8333
ggplot(Auto,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~ns(x, df=12), 
               lty = 1,se = F) +
  ggtitle("Natural Cubic Splines (df=12): Data Auto") +geom_vline(xintercept=c(65.0000, 70.0000, 75.0000, 84.0000, 88.0000, 93.5000, 100.0000, 110.0000, 126.0000, 150.0000, 165.8333), col = "blue", lty = 2)+
  theme_cowplot()

Model Terbaik

nilai_metric <- rbind(best_poly %>% select(-1) %>% slice_min(mape),
                      best_tangga %>% select(-1) %>% slice_min(mape),
                      best_spline3 %>%  select(-1)%>% slice_min(mape)
                      )

nama_model <- c(" Reg Polinomial (degree=7) ",
"Piecewise Constant (knot=18)",
                "Natural Cubic Splines (df=12)"
)

best_model <- data.frame(nama_model,nilai_metric)

datatable(best_model)
#berdasarkan mape
datatable(best_model %>% slice_min(mape))
best_model_auto <- best_model %>% slice_min(mape)
best_model_auto
##                      nama_model      mse      mae      mape
## 1 Natural Cubic Splines (df=12) 18.64523 3.192363 0.1388165

Model Final

attr(ns(Auto$horsepower,df=12), "knots")
##  [1]  65.0000  70.0000  75.0000  84.0000  88.0000  93.5000 100.0000 110.0000
##  [9] 126.0000 150.0000 165.8333
attr(ns(horsepower,df=12),"knots")
##  [1]  65.0000  70.0000  75.0000  84.0000  88.0000  93.5000 100.0000 110.0000
##  [9] 126.0000 150.0000 165.8333
ggplot(Auto,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~ns(x, df=12), 
               lty = 1,se = F) +
  ggtitle("Natural Cubic Splines (df=12): Data Auto") +geom_vline(xintercept=c(65.0000, 70.0000, 75.0000, 84.0000, 88.0000, 93.5000, 100.0000, 110.0000, 126.0000, 150.0000, 165.8333), col = "blue", lty = 2)

Mendefinisikan Negara

data.us <- Auto %>% filter(origin == 1)
data.europe   <- Auto %>% filter(origin == 2)
data.japan  <- Auto %>% filter(origin == 3)

Amerika

Regresi Polinomial: Amerika

set.seed(01088)

cv.us <- vfold_cv(data.us,v=10,strata = "mpg")
order <- 2:4

best_poly_amerika <- map_dfr(order, function(i){
metric_poly_amerika <- map_dfr(cv.us$splits,
    function(x){
    mod <- lm(mpg ~ poly(horsepower,i),
             data=data.us[x$in_id,])
    pred <- predict(mod,
                   newdata=data.us[-x$in_id,])
    truth <- data.us[-x$in_id,]$mpg
    
    mse <- mlr3measures::mse(truth = truth,
                                   response = pred
                               )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_poly_amerika

# menghitung rata-rata untuk 10 folds
mean_metric_poly_amerika <- colMeans(metric_poly_amerika)

mean_metric_poly_amerika
}
)

best_poly_amerika <- cbind(order,best_poly_amerika)
# menampilkan hasil all breaks

#berdasarkan mse
datatable(best_poly_amerika %>% slice_min(mape))
ggplot(Auto,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~poly(x,7,raw=T), 
               lty = 1, col = "red",se = F)+
  theme_bw() +
  ggtitle("Regresi Polynomial (degree=7): Data Auto") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Piecewise Constant: Amerika

breaks <- 2:20

best_tangga_amerika <- map_dfr(breaks, function(i){

metric_tangga_amerika <- map_dfr(cv.us$splits,
    function(x){

    training <- data.us[x$in_id,]
    training$horsepower <- cut(training$horsepower,i)
    
    mod <- lm(mpg ~ horsepower,
             data=training)
    
    labs_x <- levels(mod$model[,2])
    
    labs_x_breaks <- cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs_x) ),
                      upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs_x) ))
    
    
    testing <- data.us[-x$in_id,]
    
    horsepower_new <- cut(testing$horsepower,c(labs_x_breaks[1,1],labs_x_breaks[,2]))
    
    pred <- predict(mod,newdata=list(horsepower=horsepower_new))
    truth <- testing$mpg
    
    data_eval <- na.omit(data.frame(truth,pred))

    mse <- mlr3measures::mse(truth = data_eval$truth,
                               response = data_eval$pred
                           )
    mape <- mlr3measures::mape(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    mae <- mlr3measures::mae(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_tangga_amerika

# menghitung rata-rata untuk 10 folds
mean_metric_tangga_amerika <- colMeans(metric_tangga_amerika)

mean_metric_tangga_amerika
})

best_tangga_amerika <- cbind(breaks=breaks,best_tangga_amerika)
# menampilkan hasil all breaks

#berdasarkan mse
datatable(best_tangga_amerika %>% slice_min(mape))

Natural Cubic Spline: Amerika

df <- 2:10

best_spline_amerika <- map_dfr(df, function(i){
metric_spline_amerika <- map_dfr(cv.us$splits,
    function(x){
    mod <- lm(mpg ~ ns(horsepower,df=i),
             data=data.us[x$in_id,])
    pred <- predict(mod,
                   newdata=data.us[-x$in_id,])
    truth <- data.us[-x$in_id,]$mpg

    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_spline_amerika

# menghitung rata-rata untuk 10 folds
mean_metric_spline_amerika <- colMeans(metric_spline_amerika)

mean_metric_spline_amerika
}
)

best_spline_amerika <- cbind(df=df,best_spline_amerika)
# menampilkan hasil all breaks

#berdasarkan mse
datatable(best_spline_amerika %>% slice_min(mape))

Model Terbaik: Amerika

ggplot(data.us,aes(x=horsepower, y=mpg)) +
  
  geom_point(alpha=0.55, color="coral") +
  
  stat_smooth(aes(colour="Polinomial d=2"),method = "lm", 
               formula = y~poly(x,2,raw=T), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Fungsi Tangga k=18"),method = "lm", 
               formula = y~cut(x,18), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Natural Cubic Spline df=5"),method = "lm", 
               formula = y~ns(x, df=5), 
               lty = 1,se = F) +
  
  
  theme_bw() +
  labs(title="Perbandingan Model Terbaik: Data Amerika") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + theme_cowplot()

nilai_metric_amerika <- rbind(best_poly_amerika %>% select(-1) %>% slice_min(mape),
                      best_tangga_amerika %>% select(-1) %>% slice_min(mape),
                      best_spline_amerika %>%  select(-1)%>% slice_min(mape)
                      )

nama_model <- c("Reg Polinomial(degree=2)",
"Piecewise Constant (knot=18)",
                "Natural Cubic Splines(df=5)"
)

best_model_amerika <- data.frame(nama_model,nilai_metric_amerika)

datatable(best_model_amerika)
#berdasarkan mse
datatable(best_model_amerika %>% slice_min(mape))
best_model_us <- best_model_amerika %>% slice_min(mape)
best_model_us
##                     nama_model      mse      mae     mape
## 1 Piecewise Constant (knot=18) 13.39522 2.739481 0.136274

Model Final: Amerika

ggplot(data.us,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~cut(x,18), 
               lty = 1, col = "blue",se = F)+
  theme_bw() +
  ggtitle("Piecewise Constant (18 Knot): Data Amerika") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5)) +
  theme_cowplot()

Eropa

set.seed(01088)
cv.eu <- vfold_cv(data.europe,v=5,strata = "mpg")
## Warning: The number of observations in each quantile is below the recommended threshold of 20.
## • Stratification will use 3 breaks instead.

Regresi Polinomial: Eropa

order <- 2:7

best_poly_eropa <- map_dfr(order, function(i){
metric_poly_eropa <- map_dfr(cv.eu$splits,
    function(x){
    mod <- lm(mpg ~ poly(horsepower,i),
             data=data.europe[x$in_id,])
    pred <- predict(mod,
                   newdata=data.europe[-x$in_id,])
    truth <- data.europe[-x$in_id,]$mpg
    
    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
  }
  )
  
  metric_poly_eropa
  
  # menghitung rata-rata untuk 10 folds
  mean_metric_poly_eropa <- colMeans(metric_poly_eropa)
  
  mean_metric_poly_eropa
}
)

best_poly_eropa <- cbind(order,best_poly_eropa)

#berdasarkan mse
datatable(best_poly_eropa %>% slice_min(mape))

Piecewise Constant: Eropa

breaks <- 2:9
best_tangga_eropa <- map_dfr(breaks, function(i){

metric_tangga_eropa <- map_dfr(cv.eu$splits,
    function(x){

    training <- data.europe[x$in_id,]
    training$horsepower <- cut(training$horsepower,i)
    
    mod <- lm(mpg ~ horsepower,
             data=training)
    
    labs_x <- levels(mod$model[,2])
    
    labs_x_breaks <- cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs_x) ),
                      upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs_x) ))
    
    
    testing <- data.europe[-x$in_id,]
    
    horsepower_new <- cut(testing$horsepower,c(labs_x_breaks[1,1],labs_x_breaks[,2]))
    
    pred <- predict(mod,newdata=list(horsepower=horsepower_new))
    truth <- testing$mpg
    
    data_eval <- na.omit(data.frame(truth,pred))
    
    mse <- mlr3measures::mse(truth = data_eval$truth,
                               response = data_eval$pred
                           )
    mape <- mlr3measures::mape(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    mae <- mlr3measures::mae(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
  }
  )

  metric_tangga_eropa
  
  # menghitung rata-rata untuk 10 folds
  mean_metric_tangga_eropa <- colMeans(metric_tangga_eropa)
  
  mean_metric_tangga_eropa
})
best_tangga_eropa <- cbind(breaks=breaks,best_tangga_eropa)


#berdasarkan mse
datatable(best_tangga_eropa %>% slice_min(mape))

Natural Cubic Spiline: Eropa

df <- 2:10

best_spline_eropa <- map_dfr(df, function(i){
metric_spline_eropa <- map_dfr(cv.eu$splits,
    function(x){
    mod <- lm(mpg ~ ns(horsepower,df=i),
             data=data.europe[x$in_id,])
    pred <- predict(mod,
                   newdata=data.europe[-x$in_id,])
    truth <- data.europe[-x$in_id,]$mpg

    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    return(metric)
}
)

metric_spline_eropa

# menghitung rata-rata untuk 10 folds
mean_metric_spline_eropa <- colMeans(metric_spline_eropa)

mean_metric_spline_eropa
}
)

best_spline_eropa <- cbind(df=df,best_spline_eropa)

#berdasarkan mse
datatable(best_spline_eropa %>% slice_min(mape))

Model Terbaik: Eropa

ggplot(data.europe,aes(x=horsepower, y=mpg)) +
  
  geom_point(alpha=0.55, color="coral") +
  
  stat_smooth(aes(colour="Polinomial d=2"),method = "lm", 
               formula = y~poly(x,2,raw=T), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Fungsi Tangga k=5"),method = "lm", 
               formula = y~cut(x,5), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Natural Cubic Spline df=2"),method = "lm", 
               formula = y~ns(x, df=2), 
               lty = 1,se = F) +
  
  
  theme_bw() +
  labs(title="Perbandingan Model Terbaik: Data Eropa") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + theme_cowplot()

nilai_metric_eropa <- rbind(best_poly_eropa %>% select(-1) %>% slice_min(mape),
                      best_tangga_eropa %>% select(-1) %>% slice_min(mape),
                      best_spline_eropa %>%  select(-1)%>% slice_min(mape)
                      )

nama_model <- c("Reg Polinomial (degree=2)",
"Pieceswise Constant (knot=5)",
                "Natural Cubic Splines (df=2)"
)

best_model_eropa <- data.frame(nama_model,nilai_metric_eropa)

datatable(best_model_eropa)
#berdasarkan mse
datatable(best_model_eropa %>% slice_min(mape))
best_model_eu <- best_model_eropa %>% slice_min(mape)
best_model_eu
##                     nama_model      mse      mae      mape
## 1 Pieceswise Constant (knot=5) 25.70583 3.883476 0.1365205

Model Final: Eropa

ggplot(data.europe,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~cut(x,5), 
               lty = 1, col = "blue",se = F)+
  theme_bw() +
  ggtitle("Piecewise Constant (degree=5): Data Eropa") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Japan

set.seed(01088)
cv.japan <- vfold_cv(data.japan,v=5,strata = "mpg")
## Warning: The number of observations in each quantile is below the recommended threshold of 20.
## • Stratification will use 3 breaks instead.

Regresi Polynomial: Japan

order <- 2:6

best_poly_jepang <- map_dfr(order, function(i){
metric_poly_jepang <- map_dfr(cv.japan$splits,
    function(x){
    mod <- lm(mpg ~ poly(horsepower,i),
             data=data.japan[x$in_id,])
    pred <- predict(mod,
                   newdata=data.japan[-x$in_id,])
    truth <- data.japan[-x$in_id,]$mpg
    
    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                           )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae","mape")
    
    return(metric)
}
)

metric_poly_jepang

# menghitung rata-rata untuk 10 folds
mean_metric_poly_jepang <- colMeans(metric_poly_jepang)

mean_metric_poly_jepang

}
)

best_poly_jepang <- cbind(order,best_poly_jepang)

#berdasarkan mse

datatable(best_poly_jepang %>% slice_min(mape))
best_model <- lm(mpg ~ poly(horsepower, 2), data = data.japan)
summary(best_model)
## 
## Call:
## lm(formula = mpg ~ poly(horsepower, 2), data = data.japan)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.1949 -2.5568 -0.6165  2.2408 12.5211 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           30.4506     0.4994  60.969  < 2e-16 ***
## poly(horsepower, 2)1 -36.2030     4.4392  -8.155 5.55e-12 ***
## poly(horsepower, 2)2   9.1966     4.4392   2.072   0.0417 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.439 on 76 degrees of freedom
## Multiple R-squared:  0.4823, Adjusted R-squared:  0.4687 
## F-statistic:  35.4 on 2 and 76 DF,  p-value: 1.365e-11

Piecewise Constant: Japan

breaks <- 2:5

best_tangga_jepang <- map_dfr(breaks, function(i){

metric_tangga_jepang <- map_dfr(cv.japan$splits,
    function(x){

    training <- data.japan[x$in_id,]
    training$horsepower <- cut(training$horsepower,i)
    
    mod <- lm(mpg ~ horsepower,
             data=training)
    
    labs_x <- levels(mod$model[,2])
    
    labs_x_breaks <- cbind(lower = as.numeric( sub("\\((.+),.*", "\\1", labs_x) ),
                      upper = as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", labs_x) ))
    
    
    testing <- data.japan[-x$in_id,]
    
    horsepower_new <- cut(testing$horsepower,c(labs_x_breaks[1,1],labs_x_breaks[,2]))
    
    pred <- predict(mod,newdata=list(horsepower=horsepower_new))
    truth <- testing$mpg
    
    data_eval <- na.omit(data.frame(truth,pred))
    
    mse <- mlr3measures::mse(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    mape <- mlr3measures::mape(truth = data_eval$truth,
                               response = data_eval$pred
                               )
    mae <- mlr3measures::mae(truth = data_eval$truth,
                               response = data_eval$pred
                               )


metric <- c(mse,mae,mape)
names(metric) <- c("mse","mae","mape")
return(metric)
}
)

metric_tangga_jepang

# menghitung rata-rata untuk 10 folds
mean_metric_tangga_jepang <- colMeans(metric_tangga_jepang)

mean_metric_tangga_jepang
})

best_tangga_jepang <- cbind(breaks=breaks,best_tangga_jepang)


#berdasarkan mse
datatable(best_tangga_jepang %>% slice_min(mape))

Natural Cublic Spline: Japan

df <- 2:10

best_spline_jepang <- map_dfr(df, function(i){
metric_spline_jepang <- map_dfr(cv.japan$splits,
  function(x){
    mod <- lm(mpg ~ ns(horsepower,df=i),
             data=data.japan[x$in_id,])
    pred <- predict(mod,
                   newdata=data.japan[-x$in_id,])
    truth <- data.japan[-x$in_id,]$mpg
    
    mse <- mlr3measures::mse(truth = truth,
                               response = pred
                               )
    mape <- mlr3measures::mape(truth = truth,
                               response = pred
                               )
    mae <- mlr3measures::mae(truth = truth,
                               response = pred
                               )
    metric <- c(mse,mae,mape)
    names(metric) <- c("mse","mae", "mape")
    return(metric)
  }
)

metric_spline_jepang

# menghitung rata-rata untuk 10 folds
mean_metric_spline_jepang <- colMeans(metric_spline_jepang)

mean_metric_spline_jepang
}
)

best_spline_jepang <- cbind(df=df,best_spline_jepang)

#berdasarkan mape
datatable(best_spline_jepang %>% slice_min(mape))

Model Terbaik: Japan

ggplot(data.japan,aes(x=horsepower, y=mpg)) +
  
  geom_point(alpha=0.55, color="coral") +
  
  stat_smooth(aes(colour="Polinomial d=3"),method = "lm", 
               formula = y~poly(x,3,raw=T), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Fungsi Tangga k=5"),method = "lm", 
               formula = y~cut(x,5), 
               lty = 1,se = F)+
  
  stat_smooth(aes(colour="Natural Cubic Spline df=7"),method = "lm", 
               formula = y~ns(x, df=7), 
               lty = 1,se = F) +
  
  
  theme_bw() +
  labs(title="Perbandingan Model Terbaik: Jepang") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + theme_cowplot()

nilai_metric_jepang <- rbind(best_poly_jepang %>% select(-1) %>% slice_min(mape),
                      best_tangga_jepang %>% select(-1) %>% slice_min(mape),
                      best_spline_jepang %>%  select(-1)%>% slice_min(mape)
                      )

nama_model <- c("Reg Polinomial (degree=3)",
"Piecewise Constant (knot=5)",
                "Natural Cubic Splines (df=7)"
)

best_model_jepang <- data.frame(nama_model,nilai_metric_jepang)

datatable(best_model_jepang)
#berdasarkan mse
datatable(best_model_jepang %>% slice_min(mape))
best_model_japan <- best_model_jepang %>% slice_min(mape)
best_model_japan
##                  nama_model      mse      mae     mape
## 1 Reg Polinomial (degree=3) 16.71646 3.043578 0.101967

Model Final: Jepang

ggplot(data.japan,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~poly(x,3,raw=T), 
               lty = 1, col = "red",se = F)+
  theme_bw() +
  ggtitle("Regresi Polynomial (degree=3): Data Jepang") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Model Terbaik

Plot 1: Auto

plot1 <- ggplot(Auto,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~ns(x, df=12), 
               lty = 1,se = F) +
  ggtitle("Auto: Natural Cubic Splines (df=12)") +
  geom_vline(xintercept= 
               c(65.0000, 70.0000, 75.0000, 84.0000, 
                 88.0000, 93.5000, 100.0000, 110.0000, 
                 126.0000, 150.0000, 165.8333), 
             col = "blue", lty = 2) +  
  ylab("Miles per Gallon") +
  xlab("Horsepower")+
  theme_cowplot()

Plot 2: Amerika

plot2 <- ggplot(data.us,aes(x=horsepower, y=mpg)) +
                 geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~cut(x,18), 
               lty = 1, col = "blue",se = F)+
  theme_bw() +
  ggtitle("Amerika: Piecewise Constant (K=18)") +
  ylab("Miles per Gallon") +
  xlab("Horsepower")+
  theme_cowplot()

Plot 3: Eropa

plot3 <- ggplot(data.europe,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~cut(x,5), 
               lty = 1, col = "blue",se = F)+
  theme_bw() +
  ggtitle("Eropa: Piecewise Constant (degree=5)") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Plot 4: Jepang

plot4 <- ggplot(data.japan,aes(x=horsepower, y=mpg)) + 
  geom_point(alpha=0.55, color="coral") +
  stat_smooth(method = "lm", 
               formula = y~poly(x,3,raw=T), 
               lty = 1, col = "red",se = F)+
  theme_bw() +
  ggtitle("Japan: Regresi Polynomial (degree=3)") +
  ylab("Miles per Gallon") +
  xlab("Horsepower") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_cowplot()

Plot 5: Gabungan

grid.arrange(plot1, plot2, plot3, plot4, nrow=2, ncol=2, top = textGrob("Model Terbaik",gp=gpar(fontsize=20,font=3)))

nilai_metric_all <- rbind(best_model_auto %>% select(-1),
                      best_model_us %>% select(-1),
                      best_model_eu %>%  select(-1),
                      best_model_japan %>%  select(-1)
                      )
datatable(nilai_metric_all)
n.auto <- nrow(Auto)
n.us <- nrow(data.us)
n.eu <- nrow(data.europe)
n.japan <- nrow(data.japan)
banyak.data <- datatable(rbind("Auto" = n.auto, "Amerika" = n.us, "Eropa" = n.eu, "Japan" = n.japan),colnames = "Banyak Data")
banyak.data