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.
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.
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.
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.
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) |
> library(knitr)
> library(stats)
> library(car)
> library(factoextra)
> dataKS1 <- read.csv("C:/Users/Ali Imran/Documents/datalaprak2.csv",
+ header=TRUE,sep = ';')
> dataKS1
y x1 x2 x31 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.
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
:
Calllm(formula = y ~ x1 + x2 + x3, data = dataKS1)
:
Coefficients
(Intercept) x1 x2 x3 -19.85806 0.03133 0.43144 0.24450
> summary(modelregresiKS2)
:
Calllm(formula = y ~ x1 + x2 + x3, data = dataKS1)
:
Residuals
Min 1Q Median 3Q Max -2.7693 -1.8761 -0.3555 1.3489 4.0391
:
CoefficientsPr(>|t|)
Estimate Std. Error t value -19.85806 4.14574 -4.790 0.000288 ***
(Intercept) 0.03133 0.18781 0.167 0.869900
x1 0.43144 0.32386 1.332 0.204077
x2 0.24450 0.28678 0.853 0.408239
x3 ---
: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Signif. codes
: 2.269 on 14 degrees of freedom
Residual standard error-squared: 0.9729, Adjusted R-squared: 0.9671
Multiple R-statistic: 167.5 on 3 and 14 DF, p-value: 3.34e-11
F> 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
.
> 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.1 Comp.2 Comp.3
Comp1.4435669 0.9565820 0.0326408823
Standard deviation 0.6946285 0.3050164 0.0003551424
Proportion of Variance 0.6946285 0.9996449 1.0000000000
Cumulative Proportion > pcaKS$loadings
:
Loadings.1 Comp.2 Comp.3
Comp1,] 0.681 0.190 0.707
[2,] 0.270 -0.963
[3,] 0.681 0.192 -0.707
[
.1 Comp.2 Comp.3
Comp1.000 1.000 1.000
SS loadings 0.333 0.333 0.333
Proportion Var 0.333 0.667 1.000
Cumulative Var > 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)
:
Calllm(formula = y ~ pcaKS1)
:
Residuals
Min 1Q Median 3Q Max -4.6909 -1.8541 -0.0296 1.2809 5.4663
:
CoefficientsPr(>|t|)
Estimate Std. Error t value 30.0944 0.6257 48.10 < 2e-16 ***
(Intercept) 8.4774 0.4459 19.01 2.09e-12 ***
pcaKS1 ---
: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Signif. codes
: 2.655 on 16 degrees of freedom
Residual standard error-squared: 0.9576, Adjusted R-squared: 0.955
Multiple R-statistic: 361.4 on 1 and 16 DF, p-value: 2.089e-12
F> 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.
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.
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
\]
Interpretasi :
\[
Y = -19.5636 + 0.091 x1 + 1.314 x2 + 0.139 x3
\]
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.
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.