cat("\n=== Pembangkitan Data ===\n")
## 
## === Pembangkitan Data ===
set.seed(18)
n <- 120
kapasitas_mesin <- runif(n, 1000,3000)
berat <- runif(n, 800, 2000)
konsumsi_bbm <- runif(n, 8, 20)
harga <- 50 + 0.5*kapasitas_mesin+(-0.02)*berat+2*konsumsi_bbm+rnorm(n, 0, 10)
data <- data.frame(kapasitas_mesin, berat, konsumsi_bbm, harga)
data
##     kapasitas_mesin     berat konsumsi_bbm     harga
## 1          2645.793 1038.7690    10.149525 1365.2389
## 2          2420.399 1677.0159    17.483714 1256.7462
## 3          2931.670 1511.4520    13.313697 1518.1993
## 4          1157.222 1008.2287    13.675714  628.6281
## 5          1107.274  886.6192    15.536997  622.5613
## 6          2149.956  819.2150    17.028206 1158.0176
## 7          1775.560 1413.4719    14.560832  935.1553
## 8          2020.777  937.9781    15.231283 1077.4227
## 9          1732.296 1099.9073    15.946521  922.2343
## 10         1435.862  802.2878    18.676549  782.2959
## 11         2285.766 1647.3015    11.201577 1186.0906
## 12         2505.630 1309.5456    19.587636 1296.0553
## 13         1184.495  935.3712    17.142404  668.5949
## 14         1614.616 1601.1505     8.892274  852.8520
## 15         2984.160 1686.6797    16.922136 1549.7349
## 16         1237.962 1974.1262    11.377039  635.0541
## 17         2050.883 1182.6023     9.573209 1064.6692
## 18         1082.535 1421.9483    10.069110  593.0178
## 19         2877.778 1492.5941    15.618654 1488.7473
## 20         1134.337 1671.5559    10.745682  620.6092
## 21         1059.467 1161.1036    11.323586  576.7738
## 22         1262.576 1033.1737    12.032361  686.2597
## 23         2637.930 1305.2809     8.906672 1350.4593
## 24         2793.357 1095.3487    13.590448 1459.4921
## 25         1191.738 1160.6227     9.786599  618.5084
## 26         2391.007 1781.4871    13.497797 1240.5847
## 27         2033.560  922.2782    17.004378 1087.4291
## 28         1886.625 1000.4219    15.798472  999.0829
## 29         1432.260 1218.1343     8.856404  750.9731
## 30         1642.751  854.1976    17.218419  879.0370
## 31         2774.347 1533.1809    16.714087 1440.4798
## 32         1987.137 1879.5710     9.549566 1032.5792
## 33         1355.201 1579.9341    17.663089  731.2146
## 34         1403.572 1856.6300    19.994865  759.0422
## 35         1497.753 1054.2531    12.648311  832.1832
## 36         2458.765  968.7764    12.797220 1279.3105
## 37         2817.192 1429.8524    19.312092 1465.8866
## 38         2000.014 1198.8751    15.431178 1068.6743
## 39         2356.340 1632.8935     8.419075 1220.6110
## 40         1906.487 1270.3020    18.697537 1010.6364
## 41         1192.841 1189.1349    16.138036  649.4360
## 42         1099.911 1081.1475    18.484672  599.0526
## 43         2732.350  962.2988    14.595602 1424.4464
## 44         1053.741 1722.6175    16.540738  570.1896
## 45         1440.033 1059.5340    15.966075  770.7853
## 46         1979.604 1367.9428    10.999221 1026.1553
## 47         1498.298 1952.1090    19.394710  807.6184
## 48         1262.415 1483.8662     8.503212  663.4846
## 49         2357.572 1620.8023     8.621667 1202.9881
## 50         2457.952 1941.0084     8.795707 1250.1245
## 51         1051.138 1185.3772    15.319967  580.7307
## 52         1536.064 1500.7131     8.306032  796.2410
## 53         1291.153 1274.5254     8.026371  688.0464
## 54         2579.872 1998.2482    14.965788 1292.5505
## 55         1906.219  838.7442    16.095642 1022.7353
## 56         1901.891 1160.5684    13.264856  981.0942
## 57         1795.233 1511.5289     8.448967  945.0067
## 58         1105.958  892.2600    11.512517  613.7904
## 59         1080.423 1722.5350    18.012257  606.9104
## 60         1494.901 1699.5904    10.167660  784.2503
## 61         1363.422 1452.8808    18.338588  743.4719
## 62         2333.819  968.2770     9.600767 1220.2944
## 63         2163.928 1032.5082     9.291862 1120.8397
## 64         2993.173 1806.5742    16.502623 1554.2542
## 65         2246.079  951.5002    16.003868 1190.7714
## 66         2532.457 1682.0371    13.667321 1296.6054
## 67         2754.672 1187.7246    18.285067 1432.4822
## 68         1628.764 1489.3368     9.327661  864.9168
## 69         1090.267 1504.3481    10.578284  596.0359
## 70         2967.214 1807.4199    10.770826 1518.7839
## 71         2699.433 1111.0299     9.043534 1396.1843
## 72         1689.548 1615.5153    18.321506  909.1621
## 73         2494.483 1783.5171    16.662807 1309.6949
## 74         1930.304 1280.9241    17.254451 1015.7595
## 75         1203.412 1006.9309    11.986087  649.7298
## 76         1315.514 1903.5770    15.396728  700.6265
## 77         2457.899 1285.1989    19.199229 1269.1494
## 78         2142.967 1697.1213    15.303667 1111.8995
## 79         2588.336 1814.2647     8.150378 1338.9692
## 80         2181.052 1868.8870    19.266884 1132.3904
## 81         2512.863 1636.3872     9.480997 1296.7776
## 82         2498.063 1892.2452    11.509167 1287.4183
## 83         2988.621 1544.7440    13.309716 1548.2634
## 84         2184.903 1947.9392    15.362401 1139.1222
## 85         2348.906 1695.2172    18.348444 1220.4269
## 86         2618.079 1486.5207     8.025142 1353.0260
## 87         2677.212 1984.1449    11.906527 1379.1621
## 88         1783.053 1731.0642    15.991832  929.4490
## 89         1899.328  824.7230    13.797599 1006.8434
## 90         1416.821 1416.5718    11.405284  750.1093
## 91         2393.383 1887.4834    18.553449 1265.2496
## 92         2283.083 1789.0723    10.219198 1190.0947
## 93         2592.290 1291.8924    16.045170 1346.7427
## 94         1582.750 1710.3232    15.794851  824.5315
## 95         1185.612 1719.2568    13.559629  640.1959
## 96         2251.155 1602.4746    19.858883 1183.4323
## 97         1745.520 1443.3724    19.122599  935.7991
## 98         2495.275  905.2723     8.287281 1309.3085
## 99         1576.935 1443.8086    14.637810  836.5921
## 100        2339.864  912.4766     9.314138 1226.3428
## 101        1366.749 1693.2186     9.744580  706.6104
## 102        1622.485 1347.7547    17.575183  845.4721
## 103        1257.787 1169.5638    13.887435  680.3254
## 104        2620.432 1602.7754    15.991322 1360.5783
## 105        2380.868 1107.8967    18.269886 1254.3709
## 106        2998.201 1039.8066    12.403292 1547.4032
## 107        1583.885 1294.0449     9.617369  830.9322
## 108        1412.012 1802.9910    16.820991  750.5590
## 109        1928.763 1886.0875    13.848349 1005.9351
## 110        1515.919  879.6625    19.493236  841.2551
## 111        1033.092 1717.2393    13.797876  572.9220
## 112        1689.236 1280.0026    16.376106  889.1066
## 113        1367.740 1940.3181    10.868432  717.8048
## 114        1885.846  946.1697    16.370458 1017.0135
## 115        2781.355 1130.6941    14.308715 1428.0965
## 116        2742.316 1270.4482    15.679692 1410.0254
## 117        2063.808 1229.6131     8.155322 1066.7064
## 118        2386.667  967.2894    13.404572 1230.5758
## 119        2332.035 1413.9073    18.902190 1214.4745
## 120        2348.381 1441.0799    10.019906 1219.3843
cat("\n=== Model ===\n")
## 
## === Model ===
model <- lm(harga ~ kapasitas_mesin + berat + konsumsi_bbm, data = data)
summary(model)
## 
## Call:
## lm(formula = harga ~ kapasitas_mesin + berat + konsumsi_bbm, 
##     data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.058  -5.986   0.125   7.498  30.237 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     50.874120   6.301481   8.073 7.12e-13 ***
## kapasitas_mesin  0.499069   0.001649 302.615  < 2e-16 ***
## berat           -0.017377   0.002839  -6.120 1.30e-08 ***
## konsumsi_bbm     1.732191   0.269325   6.432 2.93e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.54 on 116 degrees of freedom
## Multiple R-squared:  0.9987, Adjusted R-squared:  0.9987 
## F-statistic: 3.069e+04 on 3 and 116 DF,  p-value: < 2.2e-16
cat("\n=== Evaluasi ===\n")
## 
## === Evaluasi ===
pred <- predict(model, data)

rmse <- sqrt(mean((data$harga - pred)^2))
mae <- mean(abs(data$harga - pred))
r2 <- summary(model)$r.squared
rmse
## [1] 10.36351
mae
## [1] 8.175079
r2
## [1] 0.9987419
cat("\n=== Visualisasi ===\n")
## 
## === Visualisasi ===
plot(data$harga, pred,
     main = "Actual vs Predicted Harga Mobil",
     xlab = "Actual",
     ylab = "Predicted")
abline(0,1,col="red")

install.packages(“openxlsx”) library(openxlsx)

write.xlsx(data, “data_mobil.xlsx”)