Regresi Multivariate

Regresi multivariat adalah teknik statistik yang digunakan untuk menganalisis hubungan antara satu variabel dependen (atau respons) dan dua atau lebih variabel independen (atau prediktor). Berbeda dengan regresi sederhana, yang hanya melibatkan satu variabel independen, regresi multivariat memungkinkan kita untuk memahami bagaimana beberapa variabel independen secara simultan mempengaruhi variabel dependen.

Input Data

data = read.csv("C:/Users/Fadhail/Documents/Semester 3/ADM/DataIPGIPM.csv")
head(data)
##     IPM   IPG   AHH   APS Persentase.Penduduk.Miskin
## 1 73.40 92.55 70.38 83.41                      14.45
## 2 73.37 91.31 70.03 79.25                       8.15
## 3 73.75 94.93 70.24 84.33                       5.95
## 4 74.04 88.98 72.29 78.15                       6.68
## 5 72.77 89.29 71.82 72.46                       7.58
## 6 71.62 93.25 70.71 71.71                      11.78
##   Akses.Terhadap.Hunian.Layak  TPT Akses.Terhadap.Sanitasi.Layak  TPAK
## 1                       65.91 6.03                         78.85 64.77
## 2                       70.95 5.89                         84.18 71.06
## 3                       59.85 5.94                         70.97 69.61
## 4                       71.53 4.23                         84.58 64.45
## 5                       64.12 4.53                         83.04 68.75
## 6                       61.82 4.11                         80.54 70.72

Definisi Variabel

# Variabel Independen 
x1 <- (data[,3]) 
x2 <- (data[,6])
x3 <- (data[,8])
x4 <- (data[,9])
# Variabel Dependen 
y1 <- (data[,1])
y2 <- (data[,2])

Cek Korelasi Antar Variabel Dependen

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.3.3
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.3.3
## corrplot 0.94 loaded
# Menghitung matriks korelasi
correlation_matrix <- cor(cbind(y1, y2))
correlation_matrix
##          y1       y2
## y1 1.000000 0.599022
## y2 0.599022 1.000000
# Membuat heatmap menggunakan ggplot2
corrplot(correlation_matrix, method = "circle", 
         type = "upper", 
         tl.col = "red", tl.srt = 45, 
         addCoef.col = "red")

  • Korelasi antara y1 dan y2 adalah 0.60, yang menunjukkan korelasi positif sedang antara kedua variabel ini. Artinya, ketika nilai y1 meningkat, y2 cenderung meningkat juga, tetapi korelasinya tidak sempurna.

Pembentukan Model Regresi Multivariate

Membentuk model regresi multivariate menggunakan fungsi lm() dengan variabel dependen y1 dan y2 sebagai matriks dan variabel independen x1 hingga x4. Fungsi summary() digunakan untuk memberikan ringkasan statistik dari model yang telah dibangun.

model = lm(cbind(y1,y2) ~ x1+x2+x3+x4, data=data)
summary(model)
## Response y1 :
## 
## Call:
## lm(formula = y1 ~ x1 + x2 + x3 + x4, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2147 -1.2371 -0.0941  1.1760  4.2538 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.93993   13.27403   0.372 0.712487    
## x1           0.87242    0.17436   5.004 2.51e-05 ***
## x2          -0.02162    0.03193  -0.677 0.503718    
## x3           0.18259    0.04846   3.768 0.000749 ***
## x4          -0.11207    0.09824  -1.141 0.263291    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.965 on 29 degrees of freedom
## Multiple R-squared:  0.7723, Adjusted R-squared:  0.7409 
## F-statistic:  24.6 on 4 and 29 DF,  p-value: 5.847e-09
## 
## 
## Response y2 :
## 
## Call:
## lm(formula = y2 ~ x1 + x2 + x3 + x4, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.6354 -1.7894  0.1006  1.3630  5.8415 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 7.253e+01  1.846e+01   3.929 0.000485 ***
## x1          3.543e-02  2.425e-01   0.146 0.884856    
## x2          6.623e-04  4.441e-02   0.015 0.988204    
## x3          1.712e-01  6.740e-02   2.541 0.016681 *  
## x4          2.691e-02  1.366e-01   0.197 0.845250    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.732 on 29 degrees of freedom
## Multiple R-squared:  0.2944, Adjusted R-squared:  0.1971 
## F-statistic: 3.025 on 4 and 29 DF,  p-value: 0.03354

respone y1 :

  • Variabel x1 dan x3 memiliki pengaruh signifikan terhadap y1, sementara x2 dan x4 tidak signifikan.

  • Model ini memiliki kemampuan yang baik dalam menjelaskan variabilitas y1 (Adjusted R-squared sekitar 74%).

  • Model ini secara keseluruhan signifikan, tetapi hanya beberapa prediktor yang berkontribusi secara signifikan.

respone y2 :

  • Hanya variabel x3 yang berpengaruh signifikan terhadap y2, sementara x1, x2, dan x4 tidak signifikan.

  • Model ini memiliki kemampuan yang rendah dalam menjelaskan variabilitas y2 (Adjusted R-squared sekitar 19.71%).

  • Meskipun model signifikan secara keseluruhan, hanya satu prediktor yang berkontribusi signifikan, dan nilai R-squared menunjukkan model ini kurang efektif dalam memprediksi y2.

Asumsi dalam regresi multivariate

Asumsi normalitas residual

Menghitung residual dari model dan menguji asumsi normalitas menggunakan uji Shapiro-Wilk dengan fungsi mshapiro.test(). Uji ini akan membantu menentukan apakah residual terdistribusi normal.

Hipotesis :

H0 : Residual Berdistribusi Normal Multivariate

H1 : Residual Tidak Berdistribusi Normal Multivariate

Taraf Signifikansi :

α = 5% = 0,05

Kriteria Uji :

Tolak H0 jika nilai p-value < α

resid(model)
##             y1          y2
## 1   1.34564646  2.23343436
## 2   1.46166260 -0.07942991
## 3   3.66800298  5.84149354
## 4  -0.64127899 -2.38051490
## 5  -0.89835591 -1.90096065
## 6  -0.45244236  2.47496391
## 7   1.26884640  0.86527849
## 8  -2.22229016 -0.72030624
## 9  -2.93225259 -3.04134746
## 10  2.48941922  1.42745803
## 11  4.25383605  2.30158132
## 12 -0.89592028  0.42292904
## 13 -2.82872807  1.12090121
## 14  3.05818242  1.16970403
## 15 -0.13903297  0.72365077
## 16 -0.04720539  0.86408684
## 17  1.43337454  0.95087091
## 18  0.46346391 -0.12722045
## 19 -1.82623266  3.41973810
## 20 -3.21465440 -2.59368668
## 21  0.71947797 -0.44847063
## 22  0.87928364 -1.45481029
## 23  0.34536235 -5.48734425
## 24 -1.85908701 -3.01350506
## 25 -0.72546409  3.47519313
## 26  0.89744670  2.74428057
## 27 -1.84292172  0.27324852
## 28 -1.35002053 -1.04159456
## 29 -0.04918894 -2.67040859
## 30 -0.51831984 -0.40002304
## 31  1.91732330  3.46829753
## 32 -0.72177213 -0.07207121
## 33 -1.76665904 -5.63536459
## 34  0.73049858 -2.71005179
library(mvnormtest)
## Warning: package 'mvnormtest' was built under R version 4.3.3
mshapiro.test(t(resid(model)))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.98658, p-value = 0.9429

Kesimpulan :

Berdasarkan perhitungan menggunakan software R didapatkan nilai pvalue sebesar 0,9429 karena pvalue lebih besar dari α maka terima H0, artinya residual berdistribusi normal multivariate. Oleh karena itu dapat disimpulkan bahwa asumsi normalitas residual terpenuhi.

Asumsi Multikolinearitas

Membuat dataframe untuk variabel independen dan menghitung matriks korelasi. Variabel Inflasi Faktor (VIF) dihitung untuk mengidentifikasi multikolinearitas. VIF yang tinggi (umumnya di atas 10) menunjukkan adanya masalah multikolinearitas.

Multikolinearitas di cek berdasarkan nilai VIF, adapun batasan nilai VIF yang dapat digunakan adalah 3, 5, atau 10. Jika nilai VIF lebih besar daripada batas yang ditentukan maka terjadi multikolinearitas antar variabel independen.

x = data.frame(x1=x1, x2=x2, x3=x3, x4=x4)
R <- cor(x) ; R
##            x1          x2         x3          x4
## x1  1.0000000  0.39944036  0.5721543 -0.15705487
## x2  0.3994404  1.00000000  0.5081694 -0.04399359
## x3  0.5721543  0.50816937  1.0000000 -0.23339464
## x4 -0.1570549 -0.04399359 -0.2333946  1.00000000
VIF <- diag(solve(R)) ; VIF 
##       x1       x2       x3       x4 
## 1.525673 1.393353 1.796637 1.068131

diperoleh nilai VIF sebagai berikut :

  • x1: VIF sekitar 1,53.

  • x2: VIF sekitar 1,39.

  • x3: VIF sekitar 1,80.

  • x4: VIF sekitar 1,07.

Semua nilai VIF berada di bawah 10 artinya tidak ada multikolinearitas yang di antara variabel-variabel tersebut. Hal ini menunjukkan bahwa variabel prediktor dalam model ini tidak memiliki korelasi yang tinggi satu sama lain, sehingga asumsi tidak adanya multikolinearitas terpenuhi.

Asumsi Linearitas

Menggunakan resettest() dari paket lmtest untuk menguji asumsi linearitas. Uji ini memeriksa apakah model telah ditentukan dengan benar dan apakah hubungan antara variabel independen dan dependen adalah linear.

Hipotesis

H0 : Model Persamaan Regresi Linier

H1 : Bukan Model Persamaan Regresi Linier

Taraf Signifikansi :

α = 5% = 0,05

Kriteria Uji :

Tolak H0 jika nilai p-value < α

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
resettest(model)
## 
##  RESET test
## 
## data:  model
## RESET = 2.5078, df1 = 4, df2 = 25, p-value = 0.06751

Kesimpulan :

Berdasarkan perhitungan menggunakan software R didapatkan nilai pvalue sebesar 0,06751 karena pvalue lebih besar dari α maka terima H0, artinya model persamaan regresi linier. Oleh karena itu dapat disimpulkan bahwa asumsi linearitas terpenuhi.

Asumsi Homoskedastisitas

Menggunakan bptest() untuk melakukan uji Breusch-Pagan guna memeriksa homoskedastisitas residual. Homoskedastisitas menunjukkan bahwa varians residual adalah konstan.

Hipotesis

H0 : Homoskedastisitas

H1 : Heteroskedastisitas

Taraf Signifikansi :

α = 5% = 0,05

Kriteria Uji :

Tolak H0 jika nilai p-value < α

bptest(model)
## 
##  studentized Breusch-Pagan test
## 
## data:  model
## BP = 15.071, df = 4, p-value = 0.004556

Kesimpulan :

Berdasarkan perhitungan menggunakan software R didapatkan nilai pvalue sebesar 0,004556 karena pvalue lebih kecil dari α maka tolak H0, artinya terdapat heteroskedastisitas . Oleh karena itu dapat disimpulkan bahwa asumsi homoskedastisitas tidak terpenuhi, namun untuk tujuan pembelajaran diasumsikan bahwasanya asumsi homoskedastisitas terpenuhi.

Uji Signifikansi Parameter (Serentak)

Menggunakan Wilk’s Lamda

\[ \Lambda=\frac{|E|}{|E+H|}=\frac{|Y^TY-T(X)T(Y)|}{|Y^TY-nyy^T|} \]

Hipotesis :

H0 : Model tidak signifikan (Seluruh variabel bebas tidak memiliki pengaruh yang signifikan secara statistika terhadap variabel tak bebas)

H1 : Model signifikan (terdapat minimal satu variabel bebas yang memiliki pengaruh signifikan secara statistika terhadap variabel tak bebas)

Taraf Signifikansi :

α = 5% = 0,05

Kriteria Uji :

Tolak H0 jika nilai p-value < α

# MATRIKS X
u = matrix(1, nrow=34, ncol=1)
x = data.frame(x1=x1, x2=x2, x3=x3, x4=x4)
X = cbind(u, x)
# MATRIKS Y
Y = as.matrix(data.frame(y1=y1, y2=y2)) 
# MATRIKS YBAR
YBAR = colMeans(Y)
YBAR1 = matrix(c(YBAR), ncol=1, nrow=2) 
# MATRIKS BETA
Beta = cbind(coef(model)) 
# ukuran sampel
n = 34
# PERHITUNGAN
E = t(Y)%*%Y-t(Beta)%*%t(X)%*%Y ; E
##           y1        y2
## y1 111.92010  72.64023
## y2  72.64023 216.49624
detE = det(E) 
detE
## [1] 18953.68
EH = (t(Y)%*%Y)-(n*(YBAR1%*%t(YBAR1)))
detEH = det(EH)
det(EH)
## [1] 96718.92
WilksLambda = detE/detEH
WilksLambda
## [1] 0.1959666

Diperoleh nilai Wilks Lambda sebesar 0,1959666 < nilai tabel Wilks Lamda (0,05;2;31) 0,725, maka tolak H0. Sehingga dapat disimpulkan bahwa model signifikan (Setidaknya terdapat satu variabel independen yang memiliki pengaruh signifikan terhadap variabel dependen).