Perbandingan Lasso dan Regresi Linear

Kelompok 4

  1. Wawan Saputra (M0501241017)
  2. Mega Maulina (M0501241047)
  3. Rizqi Annafi Muhadi (M0501241061)
  4. Zulhijrah (M0501241069)

Memanggil Packages

Sebelum membangkitkan data dan melakukan analisis terlebih dahulu kita menginstal dan memanggil package yang dibutuhkan

library(caret)
Warning: package 'caret' was built under R version 4.3.3
Loading required package: ggplot2
Loading required package: lattice
library(glmnet)
Loading required package: Matrix
Loaded glmnet 4.1-8
library(ggplot2)

Membangkitkan Data

Membangkitkan High Dimensional Data dimana High Dimensional Data adalah data yang memiliki variabel prediktor lebih banyak dibandingkan dengan jumlah observasi (p>n).

# Membuat dataset dengan 50 observasi dan 100 fitur
set.seed(4)
n <- 50  # Jumlah observasi
p <- 100  # Jumlah fitur
X <- matrix(rnorm(n * p), nrow = n)  # Matriks fitur
beta <- rnorm(p)  # Koefisien sebenarnya
Y <- X %*% beta + rnorm(n)  # Respon dengan noise

Membentuk data frame

# Mengubah ke dalam data frame
data <- data.frame(Y = Y, X)
colnames(data) <- c("Y", paste0("X", 1:p))
head(data)
          Y         X1          X2          X3         X4         X5         X6
1  2.091198  0.2167549 -0.66374314  0.68480194  0.8769847  1.2147301  0.3956022
2  1.022120 -0.5424926 -0.62372649 -0.11511351 -0.8161958 -1.5478003 -0.9213633
3  7.773145  0.8911446 -0.07963243 -0.35647518  1.5392933 -0.3022460 -0.6765726
4  2.964362  0.5959806  0.43562476 -0.10577161  1.3745257  1.0392077 -1.9438953
5 11.016032  1.6356180  1.97090097  0.04488279 -0.4832487 -0.7678417  0.1199832
6  6.547478  0.6892754 -0.59675867 -1.72617323  0.5503500  1.5246726  1.2660773
          X7          X8         X9         X10         X11         X12
1 -2.8395831 -0.71583924 -1.1821160 -1.13435201 -1.64468033 -0.88678473
2  1.5114691  0.42260087  0.4562593 -0.06336075 -0.81997592  0.63708824
3  1.4423546  0.43293337 -0.2382873 -0.73257620 -1.67823964  1.49909001
4  0.5053693  0.08453164  0.8121637  1.07403842  0.42416496 -1.50117861
5 -0.7572932  0.55209611 -0.7306545  1.47886441 -0.34878658  2.69071637
6  0.2492381 -0.53776548 -2.1942811 -2.53300932 -0.05233181 -0.02356869
         X13         X14        X15        X16         X17        X18
1 -2.1532042  0.29885946  0.5611550 -0.5590896 -0.62460194  0.2664096
2 -0.5727423  0.05603444 -0.4925805  0.4284152  0.99398457  0.3194472
3  0.7410241 -0.07867610  0.9287592  1.0411428 -1.51694287 -0.5224024
4 -0.2328005 -0.63971381 -0.8391556  0.9747173 -0.01582282  0.8801450
5 -1.3468950 -0.33579648  0.6387659 -0.8636018 -1.19966157 -0.5510220
6 -0.8018559  0.05982538 -0.2085062 -0.5048082  0.22345571 -0.3568450
          X19        X20        X21        X22        X23        X24
1 -0.85655057  0.1140694  0.1766140  0.3800386 -1.1319941 -1.8783140
2  0.83316749 -0.2013592  1.6890457  0.7554258 -0.6031070  1.5051473
3  0.30131260  0.8119475 -1.3473420 -2.2325162 -0.1051017 -1.5893500
4  0.03953677  0.8753986  1.0756224  0.9016771 -1.8771582 -0.4179477
5 -1.42924102  1.0220232 -0.4562090 -1.2181184  0.5664940  2.3758554
6  0.62213803  0.6422129 -0.6814446  0.8337485 -3.2742948  0.8891183
          X25        X26        X27         X28        X29        X30
1  0.03349124  1.8415048  1.3674711  1.05713895 -0.9558132  0.2108975
2 -1.45849674 -1.5548505  0.9731017 -0.30865625 -0.6200614 -0.2770894
3  2.05823333  0.3274960 -0.7746421 -0.14406770 -0.1328299 -1.4928595
4 -0.10141340 -2.3813614  0.4487602 -0.01087518  1.5037602 -0.4127304
5  1.06008873 -0.6762463  0.8743079  0.06489215 -1.3524944 -1.2314822
6 -0.50323913  0.4805412  1.7124423  1.56098382 -0.7486184  0.5945011
         X31         X32        X33        X34        X35        X36
1 -0.7407025 -1.12616940  0.1476839 -0.1045861 -0.4151231 -0.5222624
2 -0.1869517  0.00353926  0.2767196 -0.8589762  0.7801822 -1.4249270
3 -0.1342514 -0.33561291 -1.0080757  2.0189189  0.6015845  1.0929428
4 -0.9421407  0.32609499 -0.3935427  0.1404494 -0.4685464  0.8773956
5 -0.3494721 -0.44611484 -0.1163648 -1.7554604  1.3135831  0.1313666
6  1.5568594  0.26589089  0.7636429 -0.5826481  0.3589778  0.6027325
           X37        X38        X39        X40         X41        X42
1 -0.508285662  1.2653957  1.1946614  1.2017962 -1.39435937 -0.2229140
2  1.653733498 -1.0335000 -2.0820327  1.1946518  0.05127472  0.4938824
3  1.638213725 -0.6498962  0.3039926 -0.5257046  1.09701990  1.0105000
4 -0.005652903  1.0192268 -0.5512309  0.1176178 -0.20297368  0.6007656
5 -0.663376790  0.8922975  2.3676371 -1.8732506 -0.42776051 -0.2971910
6 -1.059202039 -1.0148619  1.3844704  0.9492217 -0.42851671  0.3111199
          X43        X44        X45         X46         X47        X48
1  1.54432610 -0.8108742 -0.3503439  0.02308401  0.54100302 -0.3863098
2  0.07915112 -2.2758338 -0.5670894 -0.11431794 -2.25804321  0.7550744
3 -0.14018556 -1.2520160  1.0695106  1.22314400  1.03095476 -0.3567135
4 -0.83848163 -0.7397987  0.5336084 -0.34796837  0.10338470  0.6569884
5 -0.55121827 -2.0803020  0.4978123 -0.27291525 -0.99746478  1.4039734
6  1.24861665  0.6591871  1.6756695  1.24764354  0.04477032  0.3447434
         X49        X50        X51         X52        X53         X54
1 -0.2886730 -0.4507642  0.6860869  1.10912146  0.1285375  0.96916711
2 -2.5155468 -1.3280826 -0.7716132 -1.24084806  1.7717138 -1.20505834
3  0.9757407  0.4712651  0.4994783 -0.38550512  0.3537376  0.07991105
4  1.7341173  0.9146380  1.1332841 -0.99629132  1.7333971 -0.33157904
5 -0.2983519  0.9562234 -1.6327327  0.06261724 -1.6385044 -0.16339068
6  0.2286913 -0.6905775 -0.3040525  0.30946293  0.7232139 -1.49068604
         X55        X56        X57        X58         X59        X60        X61
1 -2.1685180 -0.4476224 -0.4224992 -0.3033593 -0.06036912  0.1254543  0.8565420
2 -1.4651846  0.6178473 -0.2582333  0.7605534  0.74544165  1.0911814  0.1272281
3 -0.5021542 -0.1699967  0.4294924 -1.0239304  1.06824604  0.9534492  0.5711275
4  0.7121580 -1.2705051  0.5311146 -0.4302856  0.36994627 -0.3796534 -0.1563883
5 -0.6762043  0.7104356 -0.6537411  0.7486111 -0.05669593  1.4440794 -0.8233831
6  0.2692877 -0.3719463 -0.8976903  1.9088707 -0.22026962  0.7312755  0.6558651
         X62        X63         X64        X65        X66        X67        X68
1  0.8500492 -0.4648501 -0.56988303 -0.1592822  1.0927954 -1.5151028  0.5462649
2 -1.0244080  1.2166747  0.18702282  0.9732088 -0.5082020 -0.7155276 -1.4926848
3  1.1075040 -0.5166571  1.24422937 -0.2090810  1.2361112 -1.4412784 -2.7380208
4  1.7629345 -0.6018340 -0.02532564  2.1511598  0.9097096  0.9046135  0.6956646
5 -1.4066224  0.9900587 -0.19382610  0.7131085  0.3335478  0.2720992  0.7077290
6 -1.1222022 -2.1402576 -0.47427743  1.4513982 -0.8441256 -0.2049255  0.6084623
          X69        X70        X71         X72        X73        X74
1 -0.12451742 -0.2698384  0.8157347 -0.06684089 -0.1498813  0.7065524
2 -0.64310457 -1.1664208  0.2768949 -0.06192968  0.4945106  0.6108402
3  1.26727592  1.4792675  1.6145702 -0.43489524  0.2430760 -0.4602193
4  0.25827106 -0.3708818 -1.0707223  0.26054478 -0.7463864 -0.4005009
5 -0.58061458 -0.4172875 -0.6491449 -0.26175536  0.2343198  1.1407488
6  0.05580977 -0.4954837  1.0081776  0.82628528 -0.1810466  0.8438454
         X75        X76        X77         X78        X79         X80
1 -0.6895872  1.6058593  0.9392960  0.80663191 -1.7284028 -0.33497852
2 -0.0119665  2.1279437  1.0724297 -0.75608815 -1.2197018  0.24384556
3  1.1823622 -0.1665949 -0.8866102 -0.08444098 -0.8263891 -1.02174732
4  1.4967564 -1.1079829  1.1053040  1.16653457 -1.2144283  0.50925516
5  0.5850341 -0.7121835 -2.9266939 -0.02427581  0.2273202  0.02509264
6 -0.6786129 -0.5581186 -0.2521770  0.01623869 -0.7721258 -0.20026684
          X81          X82         X83        X84          X85        X86
1 -0.08169317 -0.172548462 -1.58330556  0.6853028  0.003707947 -0.2943130
2 -0.85455117  0.455137342 -0.56019658  2.4613006 -1.008261078 -1.5713491
3 -0.94360110 -0.409387384  0.01258543  1.0661056 -0.580078713 -2.4038252
4  1.16230454 -0.002037362  1.77679153  0.1611182  0.087877719  1.1456582
5 -1.15672230  0.527526293  0.04659051 -2.3595352  0.488061728 -0.9393311
6 -1.38196869  0.148288377 -0.23602244 -0.4184855 -0.081827849 -0.7182127
         X87         X88        X89        X90        X91         X92
1  0.1267700 -0.15754415  0.3506164  1.2791707 -0.5287586  0.47451293
2  0.4896448  0.55151822  0.9896884 -2.3033346 -1.4891622 -1.15412589
3 -0.9686689  1.91756177 -1.0723485 -0.6805169  1.0831477 -0.25255568
4 -0.7217680  0.84287264 -0.1808508 -0.1245596 -1.4422766 -0.06105225
5  0.6227866 -0.03845555 -0.5001877 -0.2056928 -0.2367194  0.01650693
6  0.5830694 -0.03963838 -0.5828170 -0.9473909  0.4452406 -1.19797832
          X93        X94         X95         X96        X97         X98
1  0.16880455  0.3201131 -0.13315155 -0.08096087 -0.8500702 -1.38086907
2  2.18957370 -0.5753853  0.08508669 -1.02240980  1.3910851  0.02804937
3 -1.02333662  0.1999023 -0.37738518  0.23762104  0.1475909 -0.47501710
4  0.62161405  0.1081278  0.66234548  0.22930116  1.4676380 -0.43860268
5  0.06478683  0.2921734 -0.90262787 -0.19756741  1.2092559  1.43470844
6 -0.14757877  0.8885889  0.95236212  1.85940045  0.9500346  0.85288902
         X99      X100
1 -0.3392388  1.031385
2 -1.3968572 -1.026085
3  0.3867600  1.770532
4 -1.9040992  1.401735
5 -1.4949127 -1.092702
6 -1.2007310  1.279054

Memisahkan data latih dan data uji

Memisahkan data menjadi data latih dan data uji memiliki fungsi untuk:

  • Mengukur kemampuan generalisasi model.

  • Menghindari overfitting.

  • Memastikan model yang dibangun dapat berfungsi dengan baik pada data baru yang belum pernah dilihat.

# Memisahkan data menjadi data latih dan data uji
set.seed(4)
index <- createDataPartition(data$Y, p = 0.8, list = FALSE)
train_data <- data[index, ]
head(train_data)
          Y         X1          X2          X3         X4         X5         X6
1  2.091198  0.2167549 -0.66374314  0.68480194  0.8769847  1.2147301  0.3956022
2  1.022120 -0.5424926 -0.62372649 -0.11511351 -0.8161958 -1.5478003 -0.9213633
3  7.773145  0.8911446 -0.07963243 -0.35647518  1.5392933 -0.3022460 -0.6765726
4  2.964362  0.5959806  0.43562476 -0.10577161  1.3745257  1.0392077 -1.9438953
5 11.016032  1.6356180  1.97090097  0.04488279 -0.4832487 -0.7678417  0.1199832
6  6.547478  0.6892754 -0.59675867 -1.72617323  0.5503500  1.5246726  1.2660773
          X7          X8         X9         X10         X11         X12
1 -2.8395831 -0.71583924 -1.1821160 -1.13435201 -1.64468033 -0.88678473
2  1.5114691  0.42260087  0.4562593 -0.06336075 -0.81997592  0.63708824
3  1.4423546  0.43293337 -0.2382873 -0.73257620 -1.67823964  1.49909001
4  0.5053693  0.08453164  0.8121637  1.07403842  0.42416496 -1.50117861
5 -0.7572932  0.55209611 -0.7306545  1.47886441 -0.34878658  2.69071637
6  0.2492381 -0.53776548 -2.1942811 -2.53300932 -0.05233181 -0.02356869
         X13         X14        X15        X16         X17        X18
1 -2.1532042  0.29885946  0.5611550 -0.5590896 -0.62460194  0.2664096
2 -0.5727423  0.05603444 -0.4925805  0.4284152  0.99398457  0.3194472
3  0.7410241 -0.07867610  0.9287592  1.0411428 -1.51694287 -0.5224024
4 -0.2328005 -0.63971381 -0.8391556  0.9747173 -0.01582282  0.8801450
5 -1.3468950 -0.33579648  0.6387659 -0.8636018 -1.19966157 -0.5510220
6 -0.8018559  0.05982538 -0.2085062 -0.5048082  0.22345571 -0.3568450
          X19        X20        X21        X22        X23        X24
1 -0.85655057  0.1140694  0.1766140  0.3800386 -1.1319941 -1.8783140
2  0.83316749 -0.2013592  1.6890457  0.7554258 -0.6031070  1.5051473
3  0.30131260  0.8119475 -1.3473420 -2.2325162 -0.1051017 -1.5893500
4  0.03953677  0.8753986  1.0756224  0.9016771 -1.8771582 -0.4179477
5 -1.42924102  1.0220232 -0.4562090 -1.2181184  0.5664940  2.3758554
6  0.62213803  0.6422129 -0.6814446  0.8337485 -3.2742948  0.8891183
          X25        X26        X27         X28        X29        X30
1  0.03349124  1.8415048  1.3674711  1.05713895 -0.9558132  0.2108975
2 -1.45849674 -1.5548505  0.9731017 -0.30865625 -0.6200614 -0.2770894
3  2.05823333  0.3274960 -0.7746421 -0.14406770 -0.1328299 -1.4928595
4 -0.10141340 -2.3813614  0.4487602 -0.01087518  1.5037602 -0.4127304
5  1.06008873 -0.6762463  0.8743079  0.06489215 -1.3524944 -1.2314822
6 -0.50323913  0.4805412  1.7124423  1.56098382 -0.7486184  0.5945011
         X31         X32        X33        X34        X35        X36
1 -0.7407025 -1.12616940  0.1476839 -0.1045861 -0.4151231 -0.5222624
2 -0.1869517  0.00353926  0.2767196 -0.8589762  0.7801822 -1.4249270
3 -0.1342514 -0.33561291 -1.0080757  2.0189189  0.6015845  1.0929428
4 -0.9421407  0.32609499 -0.3935427  0.1404494 -0.4685464  0.8773956
5 -0.3494721 -0.44611484 -0.1163648 -1.7554604  1.3135831  0.1313666
6  1.5568594  0.26589089  0.7636429 -0.5826481  0.3589778  0.6027325
           X37        X38        X39        X40         X41        X42
1 -0.508285662  1.2653957  1.1946614  1.2017962 -1.39435937 -0.2229140
2  1.653733498 -1.0335000 -2.0820327  1.1946518  0.05127472  0.4938824
3  1.638213725 -0.6498962  0.3039926 -0.5257046  1.09701990  1.0105000
4 -0.005652903  1.0192268 -0.5512309  0.1176178 -0.20297368  0.6007656
5 -0.663376790  0.8922975  2.3676371 -1.8732506 -0.42776051 -0.2971910
6 -1.059202039 -1.0148619  1.3844704  0.9492217 -0.42851671  0.3111199
          X43        X44        X45         X46         X47        X48
1  1.54432610 -0.8108742 -0.3503439  0.02308401  0.54100302 -0.3863098
2  0.07915112 -2.2758338 -0.5670894 -0.11431794 -2.25804321  0.7550744
3 -0.14018556 -1.2520160  1.0695106  1.22314400  1.03095476 -0.3567135
4 -0.83848163 -0.7397987  0.5336084 -0.34796837  0.10338470  0.6569884
5 -0.55121827 -2.0803020  0.4978123 -0.27291525 -0.99746478  1.4039734
6  1.24861665  0.6591871  1.6756695  1.24764354  0.04477032  0.3447434
         X49        X50        X51         X52        X53         X54
1 -0.2886730 -0.4507642  0.6860869  1.10912146  0.1285375  0.96916711
2 -2.5155468 -1.3280826 -0.7716132 -1.24084806  1.7717138 -1.20505834
3  0.9757407  0.4712651  0.4994783 -0.38550512  0.3537376  0.07991105
4  1.7341173  0.9146380  1.1332841 -0.99629132  1.7333971 -0.33157904
5 -0.2983519  0.9562234 -1.6327327  0.06261724 -1.6385044 -0.16339068
6  0.2286913 -0.6905775 -0.3040525  0.30946293  0.7232139 -1.49068604
         X55        X56        X57        X58         X59        X60        X61
1 -2.1685180 -0.4476224 -0.4224992 -0.3033593 -0.06036912  0.1254543  0.8565420
2 -1.4651846  0.6178473 -0.2582333  0.7605534  0.74544165  1.0911814  0.1272281
3 -0.5021542 -0.1699967  0.4294924 -1.0239304  1.06824604  0.9534492  0.5711275
4  0.7121580 -1.2705051  0.5311146 -0.4302856  0.36994627 -0.3796534 -0.1563883
5 -0.6762043  0.7104356 -0.6537411  0.7486111 -0.05669593  1.4440794 -0.8233831
6  0.2692877 -0.3719463 -0.8976903  1.9088707 -0.22026962  0.7312755  0.6558651
         X62        X63         X64        X65        X66        X67        X68
1  0.8500492 -0.4648501 -0.56988303 -0.1592822  1.0927954 -1.5151028  0.5462649
2 -1.0244080  1.2166747  0.18702282  0.9732088 -0.5082020 -0.7155276 -1.4926848
3  1.1075040 -0.5166571  1.24422937 -0.2090810  1.2361112 -1.4412784 -2.7380208
4  1.7629345 -0.6018340 -0.02532564  2.1511598  0.9097096  0.9046135  0.6956646
5 -1.4066224  0.9900587 -0.19382610  0.7131085  0.3335478  0.2720992  0.7077290
6 -1.1222022 -2.1402576 -0.47427743  1.4513982 -0.8441256 -0.2049255  0.6084623
          X69        X70        X71         X72        X73        X74
1 -0.12451742 -0.2698384  0.8157347 -0.06684089 -0.1498813  0.7065524
2 -0.64310457 -1.1664208  0.2768949 -0.06192968  0.4945106  0.6108402
3  1.26727592  1.4792675  1.6145702 -0.43489524  0.2430760 -0.4602193
4  0.25827106 -0.3708818 -1.0707223  0.26054478 -0.7463864 -0.4005009
5 -0.58061458 -0.4172875 -0.6491449 -0.26175536  0.2343198  1.1407488
6  0.05580977 -0.4954837  1.0081776  0.82628528 -0.1810466  0.8438454
         X75        X76        X77         X78        X79         X80
1 -0.6895872  1.6058593  0.9392960  0.80663191 -1.7284028 -0.33497852
2 -0.0119665  2.1279437  1.0724297 -0.75608815 -1.2197018  0.24384556
3  1.1823622 -0.1665949 -0.8866102 -0.08444098 -0.8263891 -1.02174732
4  1.4967564 -1.1079829  1.1053040  1.16653457 -1.2144283  0.50925516
5  0.5850341 -0.7121835 -2.9266939 -0.02427581  0.2273202  0.02509264
6 -0.6786129 -0.5581186 -0.2521770  0.01623869 -0.7721258 -0.20026684
          X81          X82         X83        X84          X85        X86
1 -0.08169317 -0.172548462 -1.58330556  0.6853028  0.003707947 -0.2943130
2 -0.85455117  0.455137342 -0.56019658  2.4613006 -1.008261078 -1.5713491
3 -0.94360110 -0.409387384  0.01258543  1.0661056 -0.580078713 -2.4038252
4  1.16230454 -0.002037362  1.77679153  0.1611182  0.087877719  1.1456582
5 -1.15672230  0.527526293  0.04659051 -2.3595352  0.488061728 -0.9393311
6 -1.38196869  0.148288377 -0.23602244 -0.4184855 -0.081827849 -0.7182127
         X87         X88        X89        X90        X91         X92
1  0.1267700 -0.15754415  0.3506164  1.2791707 -0.5287586  0.47451293
2  0.4896448  0.55151822  0.9896884 -2.3033346 -1.4891622 -1.15412589
3 -0.9686689  1.91756177 -1.0723485 -0.6805169  1.0831477 -0.25255568
4 -0.7217680  0.84287264 -0.1808508 -0.1245596 -1.4422766 -0.06105225
5  0.6227866 -0.03845555 -0.5001877 -0.2056928 -0.2367194  0.01650693
6  0.5830694 -0.03963838 -0.5828170 -0.9473909  0.4452406 -1.19797832
          X93        X94         X95         X96        X97         X98
1  0.16880455  0.3201131 -0.13315155 -0.08096087 -0.8500702 -1.38086907
2  2.18957370 -0.5753853  0.08508669 -1.02240980  1.3910851  0.02804937
3 -1.02333662  0.1999023 -0.37738518  0.23762104  0.1475909 -0.47501710
4  0.62161405  0.1081278  0.66234548  0.22930116  1.4676380 -0.43860268
5  0.06478683  0.2921734 -0.90262787 -0.19756741  1.2092559  1.43470844
6 -0.14757877  0.8885889  0.95236212  1.85940045  0.9500346  0.85288902
         X99      X100
1 -0.3392388  1.031385
2 -1.3968572 -1.026085
3  0.3867600  1.770532
4 -1.9040992  1.401735
5 -1.4949127 -1.092702
6 -1.2007310  1.279054
test_data <- data[-index, ]
head(test_data)
           Y        X1          X2         X3          X4         X5
9  -8.066554 1.8965399 -0.15566396 -1.0985075 -2.09707753  1.1055339
24 -1.758924 1.2882569  0.18051729 -0.3373884 -2.25793822  0.2240893
30 -1.212214 1.2401808 -0.05169693 -2.3822428 -1.12798602 -0.1001847
32  3.501836 1.0519326 -0.21414966  0.6682451  0.07107173  0.6579243
35  4.090951 0.8611319 -1.03273843 -0.5847739  1.90054267 -0.9368292
41 17.839594 1.3437086 -1.27765990  1.0004999 -0.69012768 -0.9839442
             X6         X7         X8         X9        X10        X11
9   0.616393044 -0.2116086  1.0718372  0.7696422 -0.9701006 -1.3055200
24 -0.167633779 -0.9607200 -1.0606860  0.1310862 -0.4254430  0.8729256
30 -1.504148789  1.0576665 -0.1439235  0.6650744 -1.6597763  0.7017399
32 -0.008936688  1.2379969  1.2169697  3.1741867  0.3128825  0.5859914
35 -0.846030811 -0.3678351 -0.8890899  2.3036544 -0.3510310  0.8201874
41  0.681617710  0.5931282  0.1417910 -0.6959671 -0.1074024 -1.2422333
          X12         X13        X14         X15         X16         X17
9   0.4573882 -1.01593272 -1.1419633 -1.71371955 -0.58440849 -0.07826443
24  0.3441692  0.02884007  1.5460758  0.13787665 -2.42334442  2.09009774
30  1.3273958  0.43783890 -1.1493655  2.44921249  1.24779393 -0.21131465
32  0.4830591  0.45415062  0.2708819 -0.06967568 -0.07648675 -1.59739222
35 -0.7941988  1.03884902  0.7470113  0.15454935 -0.79469838  0.41184480
41  0.5151202 -1.16146312  0.2039769  0.95673460  0.33196155 -0.13755892
          X18        X19        X20         X21        X22        X23
9  -1.5249580 -1.6603657  0.8220220 -0.19119950 -0.7863374  0.1662335
24 -1.5954542 -1.3550545 -0.4172911  1.15647975 -0.2998218  1.0078662
30  1.6632220 -1.5421724 -2.4481340  0.46812647  0.2052361  0.6055421
32 -0.1019649 -1.3937465  0.7104087 -0.83533161  0.3416086 -1.4670985
35  0.1086962 -0.2526785  0.5928804 -0.02023719  0.7609246 -1.5651594
41  1.3543128  1.1936794  0.2885354 -0.58101106  1.1164555  1.0157032
          X24        X25        X26         X27         X28        X29
9   1.1379348 -0.1142239 -1.5075471  0.69687474 -0.06908903  1.9469659
24  0.9145629  1.2622013  0.1295915 -0.07167963  0.36458591  2.3462548
30 -0.8058012  0.2242466 -0.4236005  1.42856816  0.77520014 -0.5929622
32 -1.9086179 -0.3936096 -0.5511831 -0.76557137 -0.34436531 -0.6143830
35 -1.7359862 -1.2420278 -0.3079511  1.32864750  0.14722505 -0.4672300
41  0.1124214  1.4410974  1.1419371  0.40432899 -0.87277565 -0.1253656
          X30        X31        X32        X33         X34        X35
9   1.9462304 -0.2587344 -0.1448773 -0.3451572  1.42943982  0.7733544
24 -0.3816086 -0.8964341 -1.4780493  1.2063325 -0.08366789  0.2595309
30  0.4840686  1.9895696  2.3754104  0.5564482  1.31029759  0.4667587
32  0.3711435  0.9701017  0.5499083  1.1547092 -0.02708634 -1.5913026
35  0.2717229  0.5159045  0.2323446  1.6572233  0.07816647 -1.4682591
41 -0.5056213  0.6123879  0.3950852 -0.2622646 -0.66666512  1.2745554
           X36         X37        X38         X39        X40        X41
9   0.88856583 -1.62072237 -1.5695124 -1.02562425  0.7075069  0.9412302
24 -0.06291123 -0.04048736  1.0514422 -0.84328633 -1.2099687 -0.3423451
30  1.08759212 -0.58869492 -0.9505762  0.02615621 -1.0456647  1.8106180
32 -0.89285090 -2.44305799 -0.7276052 -1.37206097  1.1194992 -1.1463106
35 -0.31717876  0.64128219 -0.4879107  1.07812163 -1.4942073 -0.7741773
41  1.10310921  0.71352968 -0.7019232 -0.10840451  1.0749980 -0.1010368
          X42         X43         X44         X45        X46        X47
9   0.4234811 -1.05063004 -1.24208981 -0.02879283  0.3905585  0.2150492
24 -2.0886170  0.02532825  0.02077205  1.29389589 -0.8493276  1.0688323
30  0.5567070  1.52410075  0.91278384  0.31669206 -1.7425444 -1.1081970
32 -0.8682660 -1.12546647 -1.90655636 -0.55152207  0.7671294  0.4303743
35 -1.9928450  0.14417606  0.86915078  1.08421780 -0.8893878 -0.6524147
41 -0.5553702 -0.78877241 -2.33888226 -0.90544548 -0.8148679  0.2868039
          X48         X49        X50        X51         X52          X53
9  -1.6846769  0.87224113  2.3489897  0.2940840 -0.04185823  0.813608468
24  0.7019340 -0.09308302  0.1458283  0.1389830  0.34933555 -0.004297658
30 -0.5607158 -0.16973846 -0.7039675  1.2064344 -0.15234390  2.132535611
32  0.3843102  0.34833697 -0.4322014  0.7604815 -2.03149946 -0.078964297
35  0.9373833 -0.49950051 -0.5321537  0.4985830  0.79706789 -1.305771067
41 -1.0352928  0.66550313  0.9555771 -0.1260464  1.17284968  1.413468598
          X54         X55        X56         X57         X58         X59
9   1.2032821 -1.48213717  1.1532734  0.21614033 -0.12488977  0.88634830
24 -0.5293947  0.41446055  2.3042286 -0.30626523 -1.31385419  0.59266835
30 -0.2399243  0.50575895 -0.7778079 -1.10698785  0.01629495 -1.41135009
32 -1.0883657 -1.44162887 -1.6025382 -1.01208233 -0.30798172  0.07621274
35 -0.9205030  0.10478488 -0.6787302 -0.04781563 -0.40005339  1.07692625
41 -1.8396903 -0.06139124 -0.3767631  0.18871184  0.28464699  0.83234665
          X60        X61         X62         X63        X64        X65
9   0.2655156 -1.2383893  0.32375959 -2.24434705  0.4483867  0.9095563
24  0.6663546  0.3892722  0.80887376 -1.09833374  0.2829821 -0.9267589
30 -0.6117569 -0.9762422  0.73007600 -1.61521110 -0.7253106 -0.5475065
32 -0.6559683  1.8769951 -0.19426695 -0.40140333 -1.7158824  0.6681119
35  0.3062344 -0.4111351 -1.59840752  0.07321213  0.4330355  1.1430842
41 -0.2126932  0.7061126  0.04196899 -0.48254992  0.6525485 -1.2519380
          X66        X67         X68        X69         X70        X71
9  -0.3180060  0.2648721 -0.07840085 0.41678535  0.01356272  0.5973462
24 -0.3806120 -0.2369552 -1.50097570 0.31829841 -1.01631091  1.8824245
30 -1.5414487 -0.4686448  0.55997925 0.69705668 -1.21596703 -1.2520551
32 -0.6338493 -0.1063483  0.61788464 0.15850812  0.94569584 -0.6197527
35  0.2904673 -0.7880068  0.07966528 0.19828220 -0.70467876 -0.1928619
41  0.9414256 -1.4512564  0.88375865 0.07263767  0.37854678 -0.5488587
            X72         X73        X74         X75        X76        X77
9   0.106226718  0.78092389 -1.9791734  0.06274121  1.0824091  1.5543048
24 -0.943393302  0.50137577 -1.8099018 -0.01002347  0.2316924  1.0824553
30  1.012728371  0.72131177 -0.9363939 -0.68743182  0.8625508 -1.0635782
32  1.352492805  0.03768246  0.3305589  0.05464903 -1.2077498  0.6043491
35  1.806034884  0.82011440 -0.9696285  0.81856207  0.9889259 -1.5001144
41 -0.001045249 -0.41834968  1.4856712 -0.41744168 -0.4190303 -0.3196079
           X78        X79        X80        X81        X82        X83
9  -1.59492419 -1.5228337 -0.2249824  0.7972276 -0.6553943  1.0389970
24 -0.06109210 -0.2371708  0.2986415  0.2935550 -0.3219224 -0.1034308
30  0.08904691  0.1636031 -1.9036723  0.2343994 -1.5984945 -1.5928591
32 -0.16091189 -1.1790034  0.8345506  0.4653645 -1.9993013 -0.2792177
35 -0.14661989  1.4806635  0.4117957 -0.9251460 -0.1335188 -0.8848379
41  0.83980304 -0.5424590 -0.4660113  0.3949854  1.6484427  2.3770614
           X84        X85         X86        X87        X88        X89
9  -2.73969717  0.7866483 -1.56614233  1.1841190 -1.1279309  1.0659905
24  0.14738877  0.8405129 -0.14672060  1.2975543 -1.0091541 -1.6623021
30  1.52487344  1.8332584  0.05385413  0.2095246  0.6531906  1.1441991
32 -0.07230942 -0.2592048  1.47733811 -0.8302220  0.3739554 -1.1768554
35 -0.19886113 -1.0078876  0.10124250  0.7283093 -1.3419418 -0.3120668
41  0.83827145 -1.4048326  0.06044548  1.2017056  0.2383882 -0.4983174
          X90        X91        X92         X93        X94        X95
9   0.3498500 -2.6089688  1.5410803 -0.54391577  0.6777670 -0.2372023
24  0.7281475 -0.1201604 -1.0088552 -0.50492053 -0.2741725  1.0806077
30 -0.2160854  0.4863459 -0.1153178  0.01091970  1.0251335 -1.7441323
32 -1.3683390  0.5676410  0.9045220 -0.24064624 -0.5387261 -1.3271239
35  0.0696256 -1.2224369  1.1226814  0.47431581  0.7188144 -0.3866034
41 -0.8458695 -1.2559196  1.1047457 -0.06709917  1.8254662  0.2383070
           X96        X97         X98        X99        X100
9  -1.70446601 -0.2473182  0.58627296  0.5004545 -1.48938035
24  0.23176748 -0.7371562  0.21824338  0.2603793  1.14312138
30  1.16615768  0.8510299 -2.30941428  0.6623184  0.82856031
32  0.08081769 -1.4260704  0.06189098  0.6426237  0.26632978
35 -0.37665701  0.8822369  0.48836119 -0.6942307  0.04142827
41 -0.37983483 -0.8760212 -1.33084710  0.8568386  1.28357694

Regresi Lasso

Definisi regresi lasso

Regresi LASSO merupakan metode regresi berganda yang digunakan untuk menyusutkan koefisien taksiran mendekati angka nol, juga menyeleksi peubah-peubah penjelas sehingga menghasilkan model dengan peubah yang memiliki pengaruh terhadap peubah respon. Peubah penjelas yang tidak memiliki pengaruh terhadap peubah respon (tidak signifikan dalam model) dikeluarkan dari model (Wirdiastuti et al., 2023).

LASSO adalah metode regresi yang melakukan regularisasi L1, yang berarti ia menambahkan penalti terhadap besarnya koefisien regresi, sehingga beberapa koefisien regresi bisa ditekan menjadi nol. Hal ini membuat Lasso berguna untuk seleksi fitur dalam kasus data dengan banyak fitur (dimensi tinggi).

Model regresi lasso

Lasso memperluas model regresi linear dengan menambahkan penalti L1 terhadap fungsi kesalahan (Zhao & Yu, 2006). Fungsi objektif dari regresi Lasso dapat dituliskan sebagai berikut:

\[ \min_{\beta}\left(\frac{1}{2N}\sum_{i=1}^{N}(y_i-X_i\beta)^2+\lambda\sum_{j=1}^{p}|\beta_j|\right) \]

Keterangan:

  1. Komponen MSE:\(\frac{1}{2N}\sum_{i=1}^{N}(y_i-X_i\beta)^2\) komponen ini merupakan Mean Squared Error (MSE) dari regresi linear biasa, di mana \(y_i\) adalah nilai aktual dari variabel respon, \(X_i\) adalah variabel prediktor, dan \(\beta\) adalah koefisien dari variabel prediktor.

  2. Penalti L1: \(\lambda\sum_{j=1}^{p}|beta_j|\) adalah komponen penalti L1, di mana penalti dihitung dari jumlah nilai absolut koefisien \(\beta_j\) , untuk semua variabel prediktor \(j\). Penalti L1 (Lasso) adalah jumlah absolut dari nilai koefisien regresi:

    \[\sum_{j=1}^{p}|\beta_j|\]

    \(\lambda\) adalah parameter regularisasi yang mengontrol seberapa besar penalti yang diberikan. Jika \(\lambda\) besar, lebih banyak koefisien akan ditekan menuju nol. Nilai optimal \(\lambda\) biasanya ditemukan melalui cross-validation, di mana performa model diuji pada beberapa subset data untuk memilih nilai \(\lambda\) yang menghasilkan model terbaik.

Secara umum, asumsi LASSO sama dengan asumsi regresi linear yaitu normalitas galat, tidak terjadi autokorelasi, dan homogenitas hanya saja LASSO lebih cocok digunakan pada:

  1. data yang memiliki banyak variabel (data high-dimensional) dan hanya sebagian kecil dari fitur tersebut yang penting untuk prediksi.
  2. Data multikolinearitas di antara variabel, sehingga variabel yang berkorelasi dapat diabaikan kecuali satu yang paling relevan.
  3. Pada data yang ingin melakukan seleksi variabel otomatis dan meningkatkan generalisasi dengan menghindari overfitting.
# Membuat model Lasso
set.seed(4)
library(glmnet)
x_train <- model.matrix(Y ~ ., train_data)[, -1]
y_train <- train_data$Y

model_lasso <- cv.glmnet(x_train, y_train, alpha = 1, nfolds = 5, type.measure = "mae")  # Menggunakan 5-fold
model_lasso

Call:  cv.glmnet(x = x_train, y = y_train, type.measure = "mae", nfolds = 5,      alpha = 1) 

Measure: Mean Absolute Error 

    Lambda Index Measure     SE Nonzero
min 0.5744    51   6.472 0.2726      28
1se 0.9146    41   6.720 0.3841      23
best_lambda <- model_lasso$lambda.min
best_lambda
[1] 0.5744055
pred_lasso <- predict(model_lasso, s = best_lambda, newx = model.matrix(Y ~ ., test_data)[, -1])
head(pred_lasso)
           s1
9  -0.3708249
24 -8.2935232
30 -9.4099534
32  5.1324129
35 -4.9450305
41  3.2398910

Nilai lamda optimum berdasarkan nilai mae terkecil

lambda_op <- broom::glance(model_lasso)
lambda_op
# A tibble: 1 × 3
  lambda.min lambda.1se  nobs
       <dbl>      <dbl> <int>
1      0.574      0.915    42

Nilai prediksi lasso

pred_lasso <- predict(model_lasso, s = best_lambda, newx = model.matrix(Y ~ ., test_data)[, -1])
pred_lasso
           s1
9  -0.3708249
24 -8.2935232
30 -9.4099534
32  5.1324129
35 -4.9450305
41  3.2398910
43  9.8403926
48 -8.6282505

Nilai koefisien terpilih dapat dikeluarkan dengan bantuan package broom

broom::tidy(model_lasso)
# A tibble: 100 × 6
   lambda estimate std.error conf.low conf.high nzero
    <dbl>    <dbl>     <dbl>    <dbl>     <dbl> <int>
 1   5.88     8.64     0.608     8.03      9.25     0
 2   5.61     8.61     0.631     7.98      9.24     1
 3   5.36     8.58     0.650     7.93      9.23     1
 4   5.11     8.54     0.661     7.88      9.21     1
 5   4.88     8.51     0.667     7.85      9.18     1
 6   4.66     8.47     0.673     7.79      9.14     2
 7   4.45     8.41     0.678     7.73      9.09     2
 8   4.25     8.36     0.681     7.68      9.04     2
 9   4.05     8.31     0.683     7.62      8.99     3
10   3.87     8.26     0.675     7.59      8.94     3
# ℹ 90 more rows
broom::tidy(model_lasso$glmnet.fit)
# A tibble: 2,524 × 5
   term         step estimate lambda dev.ratio
   <chr>       <dbl>    <dbl>  <dbl>     <dbl>
 1 (Intercept)     1   -0.588   5.88    0     
 2 (Intercept)     2   -0.608   5.61    0.0258
 3 (Intercept)     3   -0.627   5.36    0.0492
 4 (Intercept)     4   -0.645   5.11    0.0706
 5 (Intercept)     5   -0.662   4.88    0.0901
 6 (Intercept)     6   -0.679   4.66    0.108 
 7 (Intercept)     7   -0.719   4.45    0.139 
 8 (Intercept)     8   -0.756   4.25    0.168 
 9 (Intercept)     9   -0.787   4.05    0.198 
10 (Intercept)    10   -0.813   3.87    0.229 
# ℹ 2,514 more rows

Nilai koefisien model lasso secara keseluruhan berdasarkan lambda minimum

coef_min <- coef(model_lasso, s = lambda_op$lambda.min)
coef_min
101 x 1 sparse Matrix of class "dgCMatrix"
                     s1
(Intercept) -0.92084969
X1           .         
X2           0.01591708
X3           .         
X4           .         
X5           .         
X6           .         
X7           .         
X8           .         
X9          -0.30543703
X10         -0.13380617
X11          .         
X12          .         
X13          .         
X14          .         
X15          .         
X16          .         
X17         -3.79349717
X18         -2.23928222
X19          .         
X20          .         
X21          0.12470048
X22          1.13575981
X23          .         
X24          .         
X25          .         
X26          0.79235974
X27          .         
X28          .         
X29          .         
X30          .         
X31          .         
X32          .         
X33          .         
X34         -0.50747831
X35          .         
X36          1.25243024
X37          0.54510065
X38          0.93825073
X39          .         
X40          .         
X41          .         
X42          0.50109022
X43         -1.23667959
X44         -1.58982382
X45          .         
X46          .         
X47          0.43919561
X48         -0.40531697
X49          .         
X50          .         
X51         -2.51973633
X52          .         
X53          .         
X54          .         
X55          .         
X56          .         
X57          .         
X58          .         
X59          .         
X60          .         
X61          .         
X62          .         
X63          .         
X64          0.05824626
X65          2.50706469
X66          .         
X67         -0.32698603
X68          .         
X69         -0.55398588
X70          .         
X71          .         
X72          .         
X73          .         
X74          .         
X75          .         
X76          .         
X77          .         
X78          .         
X79          .         
X80          .         
X81          .         
X82          0.01844419
X83          .         
X84          0.59774997
X85          .         
X86          .         
X87          .         
X88          .         
X89          .         
X90         -0.11114504
X91          .         
X92          0.35883246
X93          0.48971065
X94          .         
X95          .         
X96          1.80894119
X97          .         
X98          .         
X99          .         
X100         .         

Dari hasil yang diperoleh dapat dilihat bahwa hanya terdapat 28 variabel yang memiliki nilai koefisien. Hal tersebut terjadi karena peubah-peubah penjelas yang tidak memiliki pengaruh terhadap peubah respon mengalami menyusutan menjadi 0. Sehingga yang memiliki nilai koefisien hanya variabel penjelas yang memiliki pengaruh saja terhadap peubah respon.

Regresi Linear

Definisi regresi linear

Regresi Linear Berganda ditujukan untuk menguji pengaruh dua atau lebih variabel bebas (independent variable) terhadap satu variabel tak bebas (dependent variable). Model ini mengasumsikan adanya hubungan satu garis lurus/linear antara variabel dependen dengan masing-masing prediktornya (Janie, 2012). Salah satu asumsi yang harus terpenuhi untuk melakukan pengujian hipotesis terhadap parameter dalam analisis regresi linear berganda adalah tidak terjadinya korelasi antar variabel bebas (multikolinear) (Marcus, et al,. 2012). Secara umum model regresi linear berganda dinyatakan sebagai berikut:

\[ Y=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_nX_n+\varepsilon_i \]

Keterangan:

- \(Y\) = Variabel Tak Bebas

- \(X_n\) = Variabel Bebas

- \(\beta_0\) = Intercept (Konstanta)

- \(\beta_n\) = Koefisien Regresi

- \(\varepsilon_i\) = Galat acak (error term)

Evaluasi Model

Berikut beberapa aspek yang dapat diperhatikan untuk membandingkan model regresi linear berganda dengan regresi LASSO:

  1. Mean Squared Error (MSE) adalah rata-rata dari kuadrat galat antara lain nilai sebenarnya dan nilai prediksi model. Semakin kecil nilai MSE, semakin baik model tersebut dalam melakukan prediksi.
  2. Root Mean Squared Error (RMSE) adalah akar dari MSE dan lebih mudah diinterpretasikan karena berada pada satuan yang sama dengan variabel tak bebas.
  3. MAE (Mean Absolute Error) adalah rata-rata dari selisih absolut antara nilai aktual dan nilai prediksi. Semakin kecil nilai MAE, semakin baik model dalam memprediksi data, karena ini menunjukkan bahwa rata-rata kesalahan prediksi kecil.
  4. MAPE (Mean Absolute Percentage Error) adalah rata-rata dari persentase kesalahan absolut antara nilai aktual dan nilai prediksi, dibagi dengan nilai aktual. Semakin kecil nilai MAPE, semakin baik model. Nilai MAPE memberikan informasi tentang seberapa jauh prediksi, dalam persentase, dari nilai aktual. Nilai MAPE di bawah 10% umumnya dianggap sebagai prediksi yang sangat baik.

Model dengan MSE, MAE, MAPE ataupun RMSE yang lebih rendah umumnya dianggap lebih baik dalam hal prediksi.

# Membuat model regresi linear berganda
model_linear <- lm(Y ~ ., data = train_data)
model_linear

Call:
lm(formula = Y ~ ., data = train_data)

Coefficients:
(Intercept)           X1           X2           X3           X4           X5  
    -6.4655       7.4299       1.9080       4.5786     -13.2341      -4.0899  
         X6           X7           X8           X9          X10          X11  
    -7.5860      -2.4785      -1.7356      -2.2383     -10.0847       0.4372  
        X12          X13          X14          X15          X16          X17  
    -2.9202      -1.7972       2.3065      -1.9511      -9.1817      -3.0193  
        X18          X19          X20          X21          X22          X23  
    -3.0408      -0.4217       0.7553       5.1627       1.0812      -9.1002  
        X24          X25          X26          X27          X28          X29  
     4.6892       9.2519      -0.1101      -5.1101       3.2007       3.4262  
        X30          X31          X32          X33          X34          X35  
    -9.7326       2.5044      -4.0222       4.8505       4.5970      -6.1081  
        X36          X37          X38          X39          X40          X41  
     3.3358       5.7363       0.6175      -4.6442      -5.4785      -4.9243  
        X42          X43          X44          X45          X46          X47  
         NA           NA           NA           NA           NA           NA  
        X48          X49          X50          X51          X52          X53  
         NA           NA           NA           NA           NA           NA  
        X54          X55          X56          X57          X58          X59  
         NA           NA           NA           NA           NA           NA  
        X60          X61          X62          X63          X64          X65  
         NA           NA           NA           NA           NA           NA  
        X66          X67          X68          X69          X70          X71  
         NA           NA           NA           NA           NA           NA  
        X72          X73          X74          X75          X76          X77  
         NA           NA           NA           NA           NA           NA  
        X78          X79          X80          X81          X82          X83  
         NA           NA           NA           NA           NA           NA  
        X84          X85          X86          X87          X88          X89  
         NA           NA           NA           NA           NA           NA  
        X90          X91          X92          X93          X94          X95  
         NA           NA           NA           NA           NA           NA  
        X96          X97          X98          X99         X100  
         NA           NA           NA           NA           NA  
pred_linear <- predict(model_linear, newdata = test_data)
Warning in predict.lm(model_linear, newdata = test_data): prediction from
rank-deficient fit; attr(*, "non-estim") has doubtful cases
head(pred_linear)
         9         24         30         32         35         41 
 13.868679 109.763557 -15.928010 -11.427730   1.564326  -1.215505 

Asumsi regresi linear

Terdapat beberapa asumsi atau persyaratan yang harus terpenuhi dalam model regresi yang dibuktikan melalui serangakaian uji asumsi klasik, yaitu:

  1. Uji Normalitas : model regresi berdistribusi normal
  2. Uji Linearitas : hubungan yang berbentuk antara variabel-variabel bebas dengan variabel tak bebas secara parsial adalah linear
  3. Uji Multikolinearitas : Model regresi yang baik adalah tidak terjadi gejala multikolinearitas. Variabel bebas tidak boleh memiliki korelasi tinggi satu sama lain.
  4. Uji Heteroskedastisitas : Dalam model regresi tidak terjadi gejala heteroskedastitas. Varians galat (error) adalah konstan untuk semua nilai variabel bebas.
  5. Uji Autokorelasi : khusus untuk data time series, persyaratan yang harus terpenuhi adalah tidak terjadi autokorelasi.
# Uji Normalitas
# Plot Q-Q plot untuk melihat distribusi normal residual
qqnorm(residuals(model_linear))
qqline(residuals(model_linear), col = "red")

# Uji Linearitas
plot(model_linear, which = 1)

Dalam analisis regresi linear, ketika jumlah variabel prediktor (p) lebih besar dari jumlah observasi (n), model regresi linear menjadi tidak dapat diestimasi dengan benar. Kondisi ini disebut sebagai masalah underdetermined atau p > n problem.

  • Jika p > n : Uji asumsi regresi linear tidak dapat dilakukan atau hasilnya tidak valid karena jumlah variabel prediktor lebih banyak daripada jumlah observasi, sehingga model menjadi tidak stabil dan overfitted.

  • Jika p < n : Uji regresi linear dapat dilakukan dengan hasil yang lebih valid, karena jumlah observasi lebih banyak daripada variabel prediktor, yang memungkinkan model regresi diestimasi dengan benar.

Ketika variabel-variabel bebas berkorelasi tinggi, pengujian hipotesis menggunakan Metode Kuadrat Terkecil (Ordinary Least Square) menghasilkan estimasi yang tidak valid, seperti galat menjadi besar, variansi dan kovariansi parameter tak berhingga, serta koefisien regresi yang tidak stabil. Hal ini dapat menyebabkan variabel-variabel bebas yang seharusnya signifikan menjadi tidak signifikan secara statistik, tanda koefisien bertentangan dengan kondisi sebenarnya, dan prediksi yang tidak akurat. Masalah ini memunculkan kebutuhan akan metode atau Teknik yang mampu mengatasi multikolinearitas dalam analisis regresi linear berganda. Salah satu pendekatan yang dapat digunakan untuk mengatasi masalah ini adalah regresi LASSO.

Evaluasi Model Regresi Lasso dan Linear

# Menghitung metrik untuk model linear
MAE_linear <- mean(abs(test_data$Y - pred_linear))
MSE_linear <- mean((test_data$Y - pred_linear)^2)
RMSE_linear <- sqrt(MSE_linear)
MAPE_linear <- mean(abs((test_data$Y - pred_linear) / test_data$Y)) * 100
R2_linear <- summary(model_linear)$r.squared
# Menghitung metrik untuk model Lasso
MAE_lasso <- mean(abs(test_data$Y - pred_lasso))
MSE_lasso <- mean((test_data$Y - pred_lasso)^2)
RMSE_lasso <- sqrt(MSE_lasso)
MAPE_lasso <- mean(abs((test_data$Y - pred_lasso) / test_data$Y)) * 100
R2_lasso <- 1 - sum((test_data$Y - pred_lasso)^2) / sum((test_data$Y - mean(test_data$Y))^2)
# Menampilkan hasil
results <- data.frame(
  Metric = c("MAE", "MSE", "RMSE", "MAPE", "R-squared"),
  Linear = c(MAE_linear, MSE_linear, RMSE_linear, MAPE_linear, R2_linear),
  Lasso = c(MAE_lasso, MSE_lasso, RMSE_lasso,MAPE_lasso, R2_lasso)
)
print(results)
     Metric     Linear       Lasso
1       MAE   28.58949   7.1542187
2       MSE 1850.47058  68.0748754
3      RMSE   43.01710   8.2507500
4      MAPE 1091.93322 193.4433869
5 R-squared    1.00000   0.3036638
  • Lasso adalah model yang lebih baik jika dilihat dari MAE, MSE, RMSE, dan MAPE, yang semuanya lebih rendah dibandingkan model linear. Ini menunjukkan bahwa model Lasso memberikan prediksi yang lebih akurat dan stabil, terutama dalam hal mengurangi kesalahan rata-rata dan kesalahan kuadrat.

  • Linear memiliki nilai \(R^2\) yang sempurna, namun ini bisa mengindikasikan overfitting, terutama jika metrik kesalahan lainnya (MAE, MSE, RMSE, dan MAPE) jauh lebih tinggi dibandingkan Lasso. Overfitting berarti model linear mungkin terlalu menyesuaikan diri dengan data latih dan tidak memiliki kemampuan generalisasi yang baik.

Meskipun \(R^2\) model linear terlihat sangat baik, metrik kesalahan yang lebih rendah pada Lasso (MAE, MSE, RMSE, MAPE) menunjukkan bahwa model Lasso lebih baik dalam hal akurasi dan generalisasi, terutama karena Lasso dikenal dapat mengatasi overfitting dengan lebih baik melalui regularisasi.

Perbandingan Hasil Prediksi Regresi Lasso dan Linear

# Membuat data frame untuk visualisasi
results_df <- data.frame(
  Index = 1:length(test_data$Y),  # Indeks untuk sumbu x
  Data_Aktual = test_data$Y,
  Predicted_Linear = pred_linear,
  Predicted_Lasso = pred_lasso
)
colnames(results_df) <- c("Index", "Aktual",  "Predicted_Linear", "Predicted_Lasso")
# Visualisasi Perbandingan Hasil Prediksi Regresi Lasso dan Linear
ggplot(results_df, aes(x = Index)) +
  geom_line(aes(y = Aktual, color = "Aktual"), linewidth = 1) +
  geom_line(aes(y = Predicted_Linear, color = "Predicted Linear"), linetype = "dashed", linewidth = 1) +
  geom_line(aes(y = Predicted_Lasso, color = "Predicted Lasso"), linetype = "dotted", linewidth = 1) +
  labs(title = "Diagram Garis: Data Aktual vs. Prediksi",
       x = "Index",
       y = "Nilai") +
  scale_color_manual(name = "Legend", 
                     values = c("Aktual" = "black", "Predicted Lasso" = "red", "Predicted Linear" = "blue")) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

  • Model Lasso cenderung memberikan prediksi yang lebih stabil dan mendekati data aktual pada sebagian besar indeks. Hal ini mungkin disebabkan oleh regularisasi yang mengurangi efek dari variabel yang kurang signifikan.

  • Model Linear memberikan prediksi yang jauh lebih ekstrem pada titik tertentu (indeks kedua), yang menunjukkan potensi overfitting, di mana model terlalu mengikuti data pelatihan dan kurang mampu generalisasi.

Dari hasil ini, terlihat bahwa Lasso Regression dapat menjadi pilihan yang lebih baik dalam menangani data yang memiliki nilai ekstrim atau fluktuasi besar, karena regularisasi membantu menjaga model tetap sederhana dan lebih generalisasi.