Dosen Pengempu : Prof. Dr. Suhartono, M.Kom
UIN Maulana Malik Ibrahim Malang - Teknik Informatika
Regresi linear ganda adalah model regresi linear dengan melibatkan lebih dari satu variabel bebas atau predictor. Dalam bahasa inggris, istilah ini disebut dengan multiple linear regression.
Data ini diambil dan disimpan pada suatu platform yang bernama excel. Platform ini umumnya digunakan untuk menyimpan data. Dalam RStudio ini jika ingin memanggil data dari file excel menggunakan peckage readxl dengan fungsi read_excel(). Juga menggunakan argumen path = untuk meletakkan nama file excel yang akan ditampilkan.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
datacovidagustus<- read_excel(path = "DataMobility.xlsx")
datacovidagustus
## # A tibble: 31 x 13
## Nama_provinsi Tanggal POSITIF Dirawat Sembuh Meninggal
## <chr> <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 DKI Jakarta 2021-08-01 00:00:00 817354 6485 789261 12209
## 2 DKI Jakarta 2021-08-02 00:00:00 818764 5777 791422 12363
## 3 DKI Jakarta 2021-08-03 00:00:00 820365 5299 793928 12433
## 4 DKI Jakarta 2021-08-04 00:00:00 823346 4916 796381 12514
## 5 DKI Jakarta 2021-08-05 00:00:00 825657 4419 799151 12629
## 6 DKI Jakarta 2021-08-06 00:00:00 827842 3974 802373 12682
## 7 DKI Jakarta 2021-08-07 00:00:00 829850 3219 806924 12750
## 8 DKI Jakarta 2021-08-08 00:00:00 831499 3075 808087 12770
## 9 DKI Jakarta 2021-08-09 00:00:00 832226 2926 809087 12783
## 10 DKI Jakarta 2021-08-10 00:00:00 833651 3024 810308 12824
## # ... with 21 more rows, and 7 more variables: Self _isolation <dbl>,
## # retail_and_recreation_percent_change_from_baseline <dbl>,
## # grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## # parks_percent_change_from_baseline <dbl>,
## # transit_stations_percent_change_from_baseline <dbl>,
## # workplaces_percent_change_from_baseline <dbl>,
## # residential_percent_change_from_baseline <dbl>
Data yang akan ditampilkan dibawah ini adalah Data Covid bagian sembuh saja dan Data Mobility Index.
datacovidagustus<- read_excel(path = "DataMobilitySembuh.xlsx")
datacovidagustus
## # A tibble: 31 x 8
## Tanggal Sembuh retail_and_recr~ grocery_and_pha~ parks_percent_c~
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2021-08-01 00:00:00 789261 -42 -5 -67
## 2 2021-08-02 00:00:00 791422 -32 2 -51
## 3 2021-08-03 00:00:00 793928 -34 -1 -53
## 4 2021-08-04 00:00:00 796381 -34 -2 -52
## 5 2021-08-05 00:00:00 799151 -37 -6 -55
## 6 2021-08-06 00:00:00 802373 -31 2 -45
## 7 2021-08-07 00:00:00 806924 -36 2 -56
## 8 2021-08-08 00:00:00 808087 -39 -5 -63
## 9 2021-08-09 00:00:00 809087 -32 -2 -50
## 10 2021-08-10 00:00:00 810308 -35 -6 -55
## # ... with 21 more rows, and 3 more variables:
## # transit_stations_percent_change_from_baseline <dbl>,
## # workplaces_percent_change_from_baseline <dbl>,
## # residential_percent_change_from_baseline <dbl>
summary() atau yang juga disebut dengan ringkasan data digunakan untuk mencari nilai statistik lima serangkai yaitu ada minimum, Q1, Q2 atau median, Q3, dan maksimum.
summary(datacovidagustus)
## Tanggal Sembuh
## Min. :2021-08-01 00:00:00 Min. :789261
## 1st Qu.:2021-08-08 12:00:00 1st Qu.:808587
## Median :2021-08-16 00:00:00 Median :818700
## Mean :2021-08-16 00:00:00 Mean :815525
## 3rd Qu.:2021-08-23 12:00:00 3rd Qu.:825266
## Max. :2021-08-31 00:00:00 Max. :830197
## retail_and_recreation_percent_change_from_baseline
## Min. :-42.00
## 1st Qu.:-34.00
## Median :-31.00
## Mean :-31.16
## 3rd Qu.:-28.00
## Max. :-22.00
## grocery_and_pharmacy_percent_change_from_baseline
## Min. :-13.000
## 1st Qu.: -5.500
## Median : -2.000
## Mean : -2.161
## 3rd Qu.: 0.000
## Max. : 6.000
## parks_percent_change_from_baseline
## Min. :-67.0
## 1st Qu.:-54.0
## Median :-50.0
## Mean :-50.9
## 3rd Qu.:-47.0
## Max. :-41.0
## transit_stations_percent_change_from_baseline
## Min. :-61.00
## 1st Qu.:-51.00
## Median :-47.00
## Mean :-47.84
## 3rd Qu.:-45.00
## Max. :-39.00
## workplaces_percent_change_from_baseline
## Min. :-73.00
## 1st Qu.:-39.50
## Median :-35.00
## Mean :-34.03
## 3rd Qu.:-23.50
## Max. :-14.00
## residential_percent_change_from_baseline
## Min. : 7.00
## 1st Qu.:11.50
## Median :14.00
## Mean :13.61
## 3rd Qu.:16.00
## Max. :22.00
Untuk membuat matriks scatterplot kita hanya perlu memasukkan objek yang kita punya yaitu datacovidagustus kedalam fungsi pairs(). Berikut adalah sintaks yang digunakan dan output yang dihasilkan.
pairs(datacovidagustus)
Dapat juga dilakukan drop terhadap panel bawah grafik tersebut dengan menggunakan argumen lower.panel=NULL.
pairs(datacovidagustus, lower.panel=NULL)
Fungsi plot() ini merupakan fungsi yang umum digunakan untuk membuat grafik pada RStudio.
plot(datacovidagustus$Sembuh ~ datacovidagustus$Tanggal, data = datacovidagustus)
plot(datacovidagustus$Sembuh ~ datacovidagustus$
retail_and_recreation_percent_change_from_baseline+datacovidagustus$
grocery_and_pharmacy_percent_change_from_baseline+datacovidagustus$
parks_percent_change_from_baseline+datacovidagustus$
transit_stations_percent_change_from_baseline+datacovidagustus$
workplaces_percent_change_from_baseline+datacovidagustus$
residential_percent_change_from_baseline, data = datacovidagustus)
Korelasi itu adalah hubungan antar variabel. Untuk mengukur sejauh apa hubungan antara satu variabel dengan variabel lain dapat menggunakan fungsi cor().
a. Korelasi Variabel y dengan x1
cor(datacovidagustus$Sembuh,datacovidagustus$
retail_and_recreation_percent_change_from_baseline)
## [1] 0.700978
b. Korelasi Variabel y dengan x2
cor(datacovidagustus$Sembuh,datacovidagustus$
grocery_and_pharmacy_percent_change_from_baseline)
## [1] 0.120881
c. Korelasi Variabel y dengan x3
cor(datacovidagustus$Sembuh,datacovidagustus$
parks_percent_change_from_baseline)
## [1] 0.5065025
d. Korelasi Variabel y dengan x4
cor(datacovidagustus$Sembuh,datacovidagustus$
transit_stations_percent_change_from_baseline)
## [1] 0.5423694
e. Korelasi Variabel y dengan x5
cor(datacovidagustus$Sembuh,datacovidagustus$
workplaces_percent_change_from_baseline)
## [1] 0.1913632
f. Korelasi Variabel y dengan x6
cor(datacovidagustus$Sembuh,datacovidagustus$
residential_percent_change_from_baseline)
## [1] -0.3662697
Dari hasil seluruh output di atas dapat disimpulkan bahwa untuk tingkat keterhubungan antara variabel y dengan x1, x2, x3, x4, dan x5 tidak memiliki hubungan sama sekali karena nilai yang dihasilkan berjumlah kurang dari 0. Sedangkan untuk tingkat keterhubungan antara variabel y dan x6 tidak sangat terhubung karena nilai yang dihasilkan di bawah 0,4.
Beberapa cara permodelan regresi linear ganda
model <- lm(datacovidagustus$Sembuh ~ datacovidagustus$Tanggal, data = datacovidagustus)
Selanjutnya dengan syntax model yang telah dibuat di atas, kita akan menggunakan fungsi summary() untuk menjelaskan atau mereview hasil dari model tersebut. Dan dengan ringkasan fungsi summary(model) dapat terlihat informasi terperinci tentang kinerja dan koefisian model.
summary(model)
##
## Call:
## lm(formula = datacovidagustus$Sembuh ~ datacovidagustus$Tanggal,
## data = datacovidagustus)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7052 -2528 1017 2668 3785
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.333e+07 1.245e+06 -18.74 <2e-16 ***
## datacovidagustus$Tanggal 1.482e-02 7.643e-04 19.40 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3288 on 29 degrees of freedom
## Multiple R-squared: 0.9284, Adjusted R-squared: 0.926
## F-statistic: 376.2 on 1 and 29 DF, p-value: < 2.2e-16
Residual adalah perbedaan antara nilai nyata dan nilai prediksi. Dimana semakin kecil nilai residual maka semakin baik model yang dibuat. Dari model di atas, didapatkan 5 nilai residual, yaitu sebagai berikut :
Nilai Minimum = -7052
Nilai Maximum = 3785
Nilai Median = 1017
Nilai Quartil 1 = -2528
Nilai Quartil 3 = 2668
Dari nilai-nilai di atas dapat dilihat bahwa dalam konteks ini berupa nilai minimum, maximum, median, quartil 1 dan quartil 3. Dapat disimpulkan bahwa model yang telah dibuat belum bisa dikatakan baik karena nilai-nilai yang dihasilkan tidak mendekati nol.
Selanjutnya terdapat dua R2 yaitu :
Multiple R-squared (pelipatan daripada variabel) : 0.9284. Hal ini menunjukkan bahwa 0.008739% variasi variabel respon, y, dapat dijelaskan oleh variabel prediktor, x.
Multiple R-squared tidak dapat berkurang saat ditambahkan lebih banyak variabel independen ke model yang dibuat.
Adjusted R-squared (tidak pelipatan pada variabel) : 0.926.
Adjusted R-squared lebih baik ada penambahan variabel. Jadi jika ditambahkan lebih dari satu variabel ke model, itu hanya meningkat jika itu mengurangi kesalahan prediksi secara keseluruhan
Anova atau Analysis of Variance adalah pengujian yang dilakukan dengan pembandingan pada varians. Dengan pembandingan varians ini dilakukan, dapat diketahui ada tidaknya perbedaan rata-rata dari tiga atau lebih kelompok. Asumsi normalitas Anova ini ada pada residual, dan residual dapat dihitung dengan Y aktual - Y predikdi. Y aktual adalah nilai y yang sesungguhnya, sedangkan Y prediksi adalah nilai y hasil persamaan Anova.
anova(model)
## Analysis of Variance Table
##
## Response: datacovidagustus$Sembuh
## Df Sum Sq Mean Sq F value Pr(>F)
## datacovidagustus$Tanggal 1 4068161494 4068161494 376.21 < 2.2e-16 ***
## Residuals 29 313589326 10813425
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(datacovidagustus$Sembuh ~ datacovidagustus$
Tanggal,
data = datacovidagustus, col = "maroon", pch = 20, cex = 1.5,
main = "Data Covid Sembuh di Daerah DKI Jakarta dan Google Mobility Index")
abline(model) #Add a regression line
Dari Grafik di atas dapat dilihat titik-titik maroon yang menjadi sebuah garis tersebut, itu memperlihatkan data real atau nyata. Sedangkan garis hitam yang lurus di dalam kotak tersebut adalah data prediksinya.
plot(cooks.distance(model), pch = 16, col = "maroon") #Plot the Cooks Distances.
plot(model)
AIC dan BIC ini banyak digunakan dalam kriteria pemilihan model. AIC itu berarti Kriteria Informasi Akaike, dan BIC itu berarti Kriteria Informasi Bayesian. Kedua kriteria ini membahas mengenai model, namun keduanya ini tidaklah sama, masih ada perbedaan pada masing-masing kriteria ini walaupun mereka berdua hampir serupa.
AIC(model)
## [1] 593.992
BIC(model)
## [1] 598.294
head(predict(model), n = 11)
## 1 2 3 4 5 6 7 8
## 796313.4 797594.2 798875.0 800155.7 801436.5 802717.3 803998.1 805278.9
## 9 10 11
## 806559.6 807840.4 809121.2
plot(head(predict(model), n = 10))
head(resid(model), n = 11)
## 1 2 3 4 5 6 7
## -7052.4214 -6172.1976 -4946.9738 -3774.7500 -2285.5262 -344.3024 2925.9214
## 8 9 10 11
## 2808.1452 2527.3690 2467.5927 2520.8165
coef(model)
## (Intercept) datacovidagustus$Tanggal
## -2.333351e+07 1.482380e-02
datacovidagustus$residuals <- model$residuals
datacovidagustus$predicted <- model$fitted.values
datacovidagustus
## # A tibble: 31 x 10
## Tanggal Sembuh retail_and_recr~ grocery_and_pha~ parks_percent_c~
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2021-08-01 00:00:00 789261 -42 -5 -67
## 2 2021-08-02 00:00:00 791422 -32 2 -51
## 3 2021-08-03 00:00:00 793928 -34 -1 -53
## 4 2021-08-04 00:00:00 796381 -34 -2 -52
## 5 2021-08-05 00:00:00 799151 -37 -6 -55
## 6 2021-08-06 00:00:00 802373 -31 2 -45
## 7 2021-08-07 00:00:00 806924 -36 2 -56
## 8 2021-08-08 00:00:00 808087 -39 -5 -63
## 9 2021-08-09 00:00:00 809087 -32 -2 -50
## 10 2021-08-10 00:00:00 810308 -35 -6 -55
## # ... with 21 more rows, and 5 more variables:
## # transit_stations_percent_change_from_baseline <dbl>,
## # workplaces_percent_change_from_baseline <dbl>,
## # residential_percent_change_from_baseline <dbl>, residuals <dbl>,
## # predicted <dbl>
scatter.smoothscatter.smooth(x=datacovidagustus$Tanggal, y=datacovidagustus$Sembuh,
main="Tanggal ~ Sembuh")
boxplotboxplot(datacovidagustus$Sembuh, main="Sembuh",
boxplot.stats(datacovidagustus$Sembuh)$out)
plotplot(density(datacovidagustus$Sembuh), main="Google Mobility Index : Sembuh",
ylab="Frequency")
coefs <- coef(model)
plot(Sembuh ~ Tanggal, data = datacovidagustus)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2), '+',
round(coefs[2], 2), '*Sembuh'))
Korelasi dapat dilakukan dengan menggunakan scatterplot dan rumus matematis. Pada RStudio ini, korelasi dapat dilakukan dengan menggunakan fungsi cor.test(). Seperti pada sintax di bawah ini :
a. Uji Korelasi antara Variabel y dengan x1
cor.test(datacovidagustus$
retail_and_recreation_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$retail_and_recreation_percent_change_from_baseline and datacovidagustus$Sembuh
## t = 5.293, df = 29, p-value = 1.124e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4611906 0.8453469
## sample estimates:
## cor
## 0.700978
b. Uji Korelasi antara Variabel y dengan x2
cor.test(datacovidagustus$
grocery_and_pharmacy_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$grocery_and_pharmacy_percent_change_from_baseline and datacovidagustus$Sembuh
## t = 0.65577, df = 29, p-value = 0.5171
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2439064 0.4557020
## sample estimates:
## cor
## 0.120881
c. Uji Korelasi antara Variabel y dengan x3
cor.test(datacovidagustus$
parks_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$parks_percent_change_from_baseline and datacovidagustus$Sembuh
## t = 3.1634, df = 29, p-value = 0.003643
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1854450 0.7298529
## sample estimates:
## cor
## 0.5065025
d. Uji Korelasi antara Variabel y dengan x4
cor.test(datacovidagustus$
transit_stations_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$transit_stations_percent_change_from_baseline and datacovidagustus$Sembuh
## t = 3.4765, df = 29, p-value = 0.001621
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2327622 0.7521574
## sample estimates:
## cor
## 0.5423694
e. Uji Korelasi antara Variabel y dengan x5
cor.test(datacovidagustus$
workplaces_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$workplaces_percent_change_from_baseline and datacovidagustus$Sembuh
## t = 1.0499, df = 29, p-value = 0.3024
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1748319 0.5110502
## sample estimates:
## cor
## 0.1913632
f. Uji Korelasi antara Variabel y dengan x6
cor.test(datacovidagustus$
residential_percent_change_from_baseline,
datacovidagustus$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datacovidagustus$residential_percent_change_from_baseline and datacovidagustus$Sembuh
## t = -2.1197, df = 29, p-value = 0.04271
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.63782969 -0.01370874
## sample estimates:
## cor
## -0.3662697
Metode Pearson ini menghasilkan beberapa output, yaitu berupa nilai t uji, derajat kebebasan, nilai p-value, rentang estimasi nilai korelasi berdasarkan tingkat kepercayaan, dan estimasi nilai korelasi.