Penerapan Analisis Regresi Komponen Utama dalam Mengatasi Multikolinearitas

Najla Salsabila Pulungan

MEI 2022


1 PENDAHULUAN

1.1 Latar Belakang

Analisis regresi adalah salah satu analisis yang sering digunakan untuk mengetahui hubungan dari suatu variabel terhadap variabel lainnya. Menurut Kurniawan (2016), analisis regresi merupakan pengukur hubungan dua variabel atau lebih yang dinyatakan dengan bentuk hubungan atau fungsi. Variabel yang digunakan dalam analisis harus memiliki ketergantungan antar satu sama lainnya. Selain itu, variabel tersebut biasanya bersifat kausal atau sebab akibat yaitu saling berpengaruh. Analisis ini memiliki beberapa asumsi yang tidak dapat dilanggar, asumsi tersebut biasa disebut asumsi klasik. Asumsi klasik yang terdapat dalam analisis regresi yaitu normalitas, heteroskedastisitas, galat tidak mengalami autokorelasi, dan tidak terdapat multikolinearitas.

Normalitas digunakan untuk menguji apakah galat berdistribusi normal atau tidak. Heteroskedastisitas digunakan untuk menguji apakah terdapat ketidaksamaan varian dari galat suatu pengamatan dengan galat pengamatan lainnya. Autokorelasi digunakan untuk menguji apakah terjadi korelasi antar suatu periode t dengan periode lainnya (t-1). Multikolinearitas digunakan untuk menguji apakah variabel-variabel bebas memiliki hubungan yang cenderung tinggi atau tidak. Saat asumsi klasik terlanggar, maka model persamaan regresi yang terbentuk menjadi tidak baik. Salah satu asumsi klasik yang akan dibahas adalah multikolinearitas. Multikolinearitas adalah keadaan saat variabel bebas memiliki hubungan atau korelasi yang cenderung tinggi. Multikolinearitas dapat dideteksi melalui nilai Variance Inflation Factors (VIF).

Masalah multikolinearitas ini dapat diatasi menggunakan analisis regresi komponen utama atau Principal Component Analysis (PCA) dan analisis regresi ridge. Menurut Johnson & Wichern (2002), analisis komponen utama dapat digunakan untuk mereduksi dimensi suatu data tanpa mengurangi karakteristik data tersebut. Sedangkan menurut Rahmadeni & Anggreni (2014), analisis regresi ridge dapat mengurangi multikolinearitas dengan menentukan pendugaan yang bias tetapi varians yang dimiliki lebih kecil dari varians penduga regresi linear berganda. Dari kedua metode tersebut, pada kasus ini akan digunakan analisis regresi komponen utama untuk mengatasi masalah multikolinearitas.

2 TINJAUAN PUSTAKA

2.1 Multikolinearitas

Menurut Sunaryo(2011), Multikolinearitas didefinisikan sebagai suatu kondisi dimana dua atau lebih variabel prediktor pada Multiple Linier Regression (MLR) berkorelasi tinggi. Dalam situasi terjadi multikolinearitas dalam sebuah model regresi berganda, maka nilai koefisien beta dari sebuah prediktor dapat berubah secara dramatis apabila ada penambahan atau pengurangan variabel prediktor di dalam model. Dampak lain dari adanya multikolinieritas adalah satu variabel prediktor menjelaskan variabel respon sama dengan yang dijelaskan variabel prediktor lainnya dan mempengaruhi kemampuan model untuk menduga koefisien regresi.

Terdapat beberapa penyebab multikolinieritas, yaitu cara pengambilan data dan kecilnya ukuran sampel, model memiliki lebih banyak variabel dari pada jumlah sampel, dan pembatasan pada populasi yang diambil sampel. Cara mendeteksi adanya multikolinieritas adalah dengan Uji VIF dan menganalisis koefisien korelasi antar variabel prediktor. Apabila nilai VIF > 10 dan nilai keofisien korelasi mendekati -1 atau 1, maka hal tersebut menunjukkan adanya kolinieritas antar variabel prediktor.

2.2 Analisis Regresi Komponen Utama

Metode Principal Component Analysis (PCA) atau Analisis Komponen Utama adalah salah satu teknik statistik yang dikenal bertujuan mereduksi dimensi dan sekaligus mengatasi masalah multikolinearitas pada data. Pada dasarnya PCA mentransformasi secara linier variabel asal yang umumnya saling berkorelasi menjadi sejumlah variabel yang lebih sedikit yang tidak berkorelasi dan disebut komponen utama (Principal Component). Berikut merupakan persamaan regresi PCA :

\[ Y = \beta_0 +\sum \limits_{j=1}^{M} {\beta_j}{\alpha}_{ij} + \varepsilon_i \] Keterangan =

\[ \begin{aligned} \beta_j &: parameter\ model\ regresi\ komponen\ utama\ \\ \alpha_{ij} &: variabel\ komponen\ utama\ \\ \varepsilon_i &: galat \end{aligned} \]

Tahapan dalam analisis regresi komponen utama adalah :
1. Analisis hubungan antara 2 peubah.
2. Pemeriksaan multikolinieritas.
3. Analisis Komponen Utama.
4. Regresi KU dengan peubah Respon Y.
5. Transformasi Regresi KU ke peubah Baku Z.
6. Transformasi Regresi Z ke peubah Asal X.

2.3 Data

Jenis data yang digunakan adalah data sekunder yang diperoleh dari buku Regression Analysis by Example edisi kedua yang ditulis oleh Samprit Chatterjee dan Bertram Price pada tahun 1977. Data tersebut merupakan data barang import dan faktor yang mempengaruhinya.

Variabel Penelitian
No Variabel Keterangan
1 \(Y\) Barang Import (milliard Franc Paris)
2 \(X_1\) Barang yang dipesan
3 \(X_2\) Persediaan barang (milliard Franc Paris)
4 \(X_3\) Barang yang dikonsumsi (milliard Franc Paris)

3 SOURCE CODE

3.1 Library yang Dibutuhkan

> library(knitr)
> library(stats)
> library(car)
> library(factoextra)

3.2 Memanggil Data

> dataKS1 <- read.csv("C:/Users/Ali Imran/Documents/datalaprak2.csv",
+                     header=TRUE,sep = ';')
> dataKS1
      y    x1  x2    x3
1  15.9 149.3 4.2 108.1
2  16.4 161.2 4.1 114.8
3  19.0 171.5 3.1 123.2
4  19.1 175.5 3.1 126.9
5  18.8 180.8 1.1 132.1
6  20.4 190.7 2.2 137.7
7  22.7 202.1 2.1 146.0
8  26.5 212.4 5.6 154.1
9  28.1 226.1 5.0 162.3
10 27.6 231.9 5.1 164.3
11 26.3 239.0 0.7 167.6
12 31.1 258.0 5.6 176.8
13 33.3 269.8 3.9 186.6
14 37.0 288.4 3.1 199.7
15 43.3 304.5 4.6 213.9
16 49.3 323.4 7.0 223.8
17 50.3 336.8 1.2 232.0
18 56.6 353.9 4.5 242.9

Function read.csv digunakan untuk memanggil file tipe csv dengan nama prakKS1 yang didefinisikan sebagai dataKS1 dalam RStudio. Argumen yang diisikan dalam function adalah lokasi penyimpanan data tersebut.dataKS1 dipanggil untuk menampilkan data tersebut.

3.3 Pengecekan Multikolinearitas

Pemeriksaan dilakukan terhadap model regresi yang terbentuk di awal apakah terdapat multikolinearitas atau tidak. Multikolinearitas dideteksi dengan nilai Variance Inflation Factor (VIF). Jika nilai VIF > 10, maka terdapat multikolinearitas pada model yang terbentuk.

> modelregresiKS2 <- lm(y ~x1+x2+x3, data = dataKS1)
> modelregresiKS2

Call:
lm(formula = y ~ x1 + x2 + x3, data = dataKS1)

Coefficients:
(Intercept)           x1           x2           x3  
  -19.85806      0.03133      0.43144      0.24450  
> summary(modelregresiKS2)

Call:
lm(formula = y ~ x1 + x2 + x3, data = dataKS1)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7693 -1.8761 -0.3555  1.3489  4.0391 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -19.85806    4.14574  -4.790 0.000288 ***
x1            0.03133    0.18781   0.167 0.869900    
x2            0.43144    0.32386   1.332 0.204077    
x3            0.24450    0.28678   0.853 0.408239    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.269 on 14 degrees of freedom
Multiple R-squared:  0.9729,    Adjusted R-squared:  0.9671 
F-statistic: 167.5 on 3 and 14 DF,  p-value: 3.34e-11
> vif(modelregresiKS2)
        x1         x2         x3 
469.742135   1.049877 469.371343 

Function lm() digunakan untuk membentuk model regresi dari data yang digunakan. Argumen yang diisikan adalah variabel penelitiannya yaitu y, x1, x2, dan x3 yang terdapat di dalam data penelitian yaitu dataKS1.
Function summary() digunakan untuk menampilkan hasil ringkasan dari pembentukan model tersebut. Argumen yang diisikan adalah nama tempat disimpannya model regresi yaitu modelregresiKS2.
Function vif digunakan untuk memeriksa multikolinearitas pada model yang terbentuk dengan menghitung nilai VIFnya. Argumen yang diisikan adalah nama tempat disimpannya model regresi yaitu modelregresiKS2.

3.4 Analisis Regresi Komponen Utama

> z1 <- scale(dataKS1$x1)
> z1
             [,1]
 [1,] -1.38887262
 [2,] -1.20152045
 [3,] -1.03935848
 [4,] -0.97638296
 [5,] -0.89294040
 [6,] -0.73707599
 [7,] -0.55759575
 [8,] -0.39543379
 [9,] -0.17974263
[10,] -0.08842813
[11,]  0.02335342
[12,]  0.32248714
[13,]  0.50826493
[14,]  0.80110110
[15,]  1.05457757
[16,]  1.35213690
[17,]  1.56310489
[18,]  1.83232524
attr(,"scaled:center")
[1] 237.5167
attr(,"scaled:scale")
[1] 63.51674
> z2 <- scale(dataKS1$x2)
> z2
            [,1]
 [1,]  0.2998892
 [2,]  0.2424636
 [3,] -0.3317923
 [4,] -0.3317923
 [5,] -1.4803040
 [6,] -0.8486226
 [7,] -0.9060482
 [8,]  1.1038474
 [9,]  0.7592939
[10,]  0.8167195
[11,] -1.7100064
[12,]  1.1038474
[13,]  0.1276124
[14,] -0.3317923
[15,]  0.5295915
[16,]  1.9078056
[17,] -1.4228784
[18,]  0.4721659
attr(,"scaled:center")
[1] 3.677778
attr(,"scaled:scale")
[1] 1.741384
> z3 <- scale(dataKS1$x3)
> z3
              [,1]
 [1,] -1.425595790
 [2,] -1.264464719
 [3,] -1.062449646
 [4,] -0.973466816
 [5,] -0.848409866
 [6,] -0.713733150
 [7,] -0.514123018
 [8,] -0.319322768
 [9,] -0.122117578
[10,] -0.074018750
[11,]  0.005344314
[12,]  0.226598918
[13,]  0.462283171
[14,]  0.777330488
[15,]  1.118832160
[16,]  1.356921354
[17,]  1.554126544
[18,]  1.816265152
attr(,"scaled:center")
[1] 167.3778
attr(,"scaled:scale")
[1] 41.58106
> dataKS1Standarisasi <- cbind(z1, z2, z3)
> dataKS1Standarisasi
             [,1]       [,2]         [,3]
 [1,] -1.38887262  0.2998892 -1.425595790
 [2,] -1.20152045  0.2424636 -1.264464719
 [3,] -1.03935848 -0.3317923 -1.062449646
 [4,] -0.97638296 -0.3317923 -0.973466816
 [5,] -0.89294040 -1.4803040 -0.848409866
 [6,] -0.73707599 -0.8486226 -0.713733150
 [7,] -0.55759575 -0.9060482 -0.514123018
 [8,] -0.39543379  1.1038474 -0.319322768
 [9,] -0.17974263  0.7592939 -0.122117578
[10,] -0.08842813  0.8167195 -0.074018750
[11,]  0.02335342 -1.7100064  0.005344314
[12,]  0.32248714  1.1038474  0.226598918
[13,]  0.50826493  0.1276124  0.462283171
[14,]  0.80110110 -0.3317923  0.777330488
[15,]  1.05457757  0.5295915  1.118832160
[16,]  1.35213690  1.9078056  1.356921354
[17,]  1.56310489 -1.4228784  1.554126544
[18,]  1.83232524  0.4721659  1.816265152
> eigen(cov(dataKS1Standarisasi))
eigen() decomposition
$values
[1] 2.083885517 0.915049056 0.001065427

$vectors
           [,1]       [,2]         [,3]
[1,] -0.6810390  0.1897074  0.707246074
[2,] -0.2695946 -0.9629730 -0.001302688
[3,] -0.6808118  0.1915569 -0.706966261
> pcaKS <- princomp(dataKS1Standarisasi, cor = T, scores = T)
> summary(pcaKS)
Importance of components:
                          Comp.1    Comp.2       Comp.3
Standard deviation     1.4435669 0.9565820 0.0326408823
Proportion of Variance 0.6946285 0.3050164 0.0003551424
Cumulative Proportion  0.6946285 0.9996449 1.0000000000
> pcaKS$loadings

Loadings:
     Comp.1 Comp.2 Comp.3
[1,]  0.681  0.190  0.707
[2,]  0.270 -0.963       
[3,]  0.681  0.192 -0.707

               Comp.1 Comp.2 Comp.3
SS loadings     1.000  1.000  1.000
Proportion Var  0.333  0.333  0.333
Cumulative Var  0.333  0.667  1.000
> pcaKS1 = 0.681*z1+0.270*z2+0.681*z3
> pcaKS1
               [,1]
 [1,] -1.8356829097
 [2,] -1.6138707295
 [3,] -1.5209152521
 [4,] -1.4174316155
 [5,] -1.5855416175
 [6,] -1.2171291147
 [7,] -0.9744734847
 [8,] -0.1887104167
 [9,] -0.0005574552
[10,]  0.1098879321
[11,] -0.4421585636
[12,]  0.6719664064
[13,]  0.6953986081
[14,]  0.9853279938
[15,]  1.6230817365
[16,]  2.3599761893
[17,]  1.7386574303
[18,]  2.6121748627
attr(,"scaled:center")
[1] 237.5167
attr(,"scaled:scale")
[1] 63.51674
> y = dataKS1$y
> y
 [1] 15.9 16.4 19.0 19.1 18.8 20.4 22.7 26.5 28.1 27.6 26.3 31.1 33.3 37.0 43.3
[16] 49.3 50.3 56.6
> regKS = lm(y ~pcaKS1)
> summary(regKS)

Call:
lm(formula = y ~ pcaKS1)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.6909 -1.8541 -0.0296  1.2809  5.4663 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  30.0944     0.6257   48.10  < 2e-16 ***
pcaKS1        8.4774     0.4459   19.01 2.09e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.655 on 16 degrees of freedom
Multiple R-squared:  0.9576,    Adjusted R-squared:  0.955 
F-statistic: 361.4 on 1 and 16 DF,  p-value: 2.089e-12
> fviz_pca(pcaKS)

Function scale() digunakan untuk menstandarisasi data pada variabel yang memiliki nilai VIF > 10 yang didefinisikan sebagai z1 dan z2 ada RStudio. Argumen yang diisikan adalah variabel yang memiliki nilai VIF > 10 yaitu x1 dan x3.
Function cbind() digunakan untuk membentuk matriks dari hasil standarisasi. Argumen yang diisikan adalah hasil standarisasi yaituu dataKS1Standarisasi lalu matriks tersebut ditampilkan.
Function eigen(cov()) digunakan untuk menghitung nilai dan vektor eigen untuk membentuk persamaan komponen utama. Argumen yang diisikan adalah hasil standarisasi yaitu dataKS1Standarisasi.
Function princomp() digunakan untuk melakukan analisis komponen utama terhadap hasil standarisasi, Argumen yang diisikan adalah hasil standarisasi yaitu dataKS1Standarisasi.
Function summary() digunakan untuk menampilkan hasil ringkasan dari analisis komponen utama. Argumen yang diisikan adalah nama tempat disimpannya analisis yaitu pcaKS.
Function $loadings digunakan untuk menghitung koefisien komponen utama yang didapatkan dari hasil standarisasi.
Function lm() digunakan untuk membentuk kembali model dengan regresi komponen utama. Argumen yang diisikan adalah model regresi dan variabel y yang sudah ada sebelumnya.
Function summary() digunakan untuk menampilkan hasil ringkasan dari model yang terbentuk. Argumen yang diisikan adalah nama tempat disimpannya model tersebut.
Function fviz_pca() digunakan untuk memvisualisasikan data analisis komponen utama dalam bentuk biplot.

4 HASIL DAN PEMBAHASAN

4.1 Pengecekan Multikolinearitas

Berdasarkan pengecekan multikolinearitas pada persamaan yang terbentuk, dapat terlihat bahwa x1 dan x3 memiliki nilai VIF lebih dari 10 yaitu 113.25704 dan 112.46441. Dapat ditarik kesimpulan bahwa terdapat multikolinearitas pada model tersebut dan harus ditangani.

4.2 Analisis Regresi Komponen Utama

Bedasarkan analisis regresi komponen utama yang telah dilakukan, didapat persamaan baru yaitu
\[ Y = 22.6583 + 3.5172pcaKS1 \] dengan \[ pcaKS1 = 0.707z1 + 0.707z2 \]

Langkah selanjutnya adalah mentransformasikan hasil regresi komponen utama tersebut ke peubah baku Z yang diperoleh \[ \begin{aligned} Y &= 30.0944 + 8.4774pcaKS1 \\ Y &= 30.0944 + 8.4774{(0.681z1 + 0.270 z2 + 0.681 z3)} \\ Y &= 30.0944 + 5.773 Z1 +2.288 Z2 + 5.773 Z3 \\ Y &= 30.0944 + 5.773 {(\frac{x_1-\mu_1}{\sigma})} +2.288 {(\frac{x_2-\mu_2}{\sigma})} + 5.773 {(\frac{x_3-\mu_3}{\sigma})}\\ Y &= -19.5636 + 0.091 x1 + 1.314 x2 + 0.139 x3 \end{aligned} \]

Interpretasi :
\[ Y = 30.08944 + 5.773 z1 +2.288 z2 + 5.773 z3 \]

  • Jika z1, z2, dan z3 bernilai konstan (0) maka akan menaikkan Y sebesar 30.094
  • Jika z2 dan z3 bernilai konstan (0) dan z1 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 5.773.
  • Jika z1 dan z3 bernilai konstan (0) dan z2 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 2.288.
  • Jika z1 dan z2 bernilai konstan (0) dan z3 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 5.773.

Interpretasi :
\[ Y = -19.5636 + 0.091 x1 + 1.314 x2 + 0.139 x3 \]

  • Jika x1, x2, dan x3 bernilai konstan (0) maka akan menurunkan Y sebesar 19.5636.
  • Jika x2 dan x3 bernilai konstan (0) dan x1 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 0.091.
  • Jika x1 dan x3 bernilai konstan (0) dan x2 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 1.314.
  • Jika x1 dan x2 bernilai konstan (0) dan x3 nilainya naik sebesar satu satuan maka akan menaikkan Y sebesar 0.139.

Interpretasi Biplot :
- Vektor variabel barang yang dipesan (x1) dan variabel barang yang dikonsumsi (x3) memiliki panjang yang sama sehingga variabel barang yang dipesan (x1) dan variabel barang yang dikonsumsi (x3) memiliki keragaman yang lebih tinggi dari variabel persediaan barang (x2) yang artinya variabel barang yang dipesan (x1) dan variabel barang yang dikonsumsi (x3) relatif bervariasi.
- Sudut yang terbentuk antara variabel barang yang dipesan (x1) dan variabel barang yang dikonsumsi (x3) sama maka variabel tersebut memiliki korelasi positif yang tinggi.Sedangkan variabel persediaan barang (x2) dengan variabel barang yang dipesan (x1) dan variabel barang yang dikonsumsi (x3) membentuk sudut yang tumpul (berlawanan arah) maka variabel barang yang dipesan (x1) memiliki korelasi negatif.
- Data ke-13, 14, 15, 17, dan 18 merupakan model PC2 yang memiliki koefisien variabel z1 dan z3 yang tinggi . Data ke-9, 10, 12, 16 merupakan model PC2 yang memiliki koefisien variabel z3 yang tinggi.
- Data ke-13, 14, 15, 17, dan 18 membentuk kelompok sendiri karena letaknya yang dekat sedangkan data ke-9, 10, 12, 16 juga membentuk kelompok sendiri karena letaknya yang dekat sehingga nilai peubahnya semakin mirip.

5 DAFTAR PUSTAKA

Chatterjee, Samprit and Price, Bertram. 1997. Regression Analysis by Example. 2nd edition. New York: University New York.

Draper, N.R., H. Smith. 1992. Analisis Regresi Terapan Edisi Kedua. Terjemahan oleh Bambang Sumantri. Gramedia Pustaka Utama, Jakarta.

Irwan, I., & Hasriani, H. (2016). PERBANDINGAN REGRESI RIDGE DAN PRINCIPAL COMPONENT ANALYSIS DALAM MENGATASI MASALAH MULTIKOLINEARITAS. TEKNOSAINS: MEDIA INFORMASI SAINS DAN TEKNOLOGI, 10(2), 125-135.

Johnson, R, A. & Wichern, D, W. (2002). Applied Multivariate Statistical Analysis. 5th edition. Pearson education International.

Kurniawan, R. (2016). Analisis regresi. Prenada Media.

Rahmadeni, R., & Anggreni, D. (2014). Analisis jumlah tenaga kerja terhadap jumlah pasien RSUD Arifin Achmad Pekanbaru menggunakan metode Regresi Gulud. SITEKIN: Jurnal Sains, Teknologi dan Industri, 12(1), 48-57.