Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Fakultas : Sains dan Teknologi
Jurusan : Teknik Informatika
Mata Kuliah : Linier Algebra
Regresi Linear Berganda adalah model regresi linear dengan melibatkan lebih dari satu variable bebas atau predictor. Dalam bahasa inggris, istilah ini disebut dengan multiple linear regression.
Data diambil dari file Excel. Kita dapat menggunakan package {readxl} dengan fungsi read_excel() untuk mengimport data dari file Excel. Argumen path adalah lokasi dan nama file Excel yang akan kita gunakan.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
datasembuhmobility <- read_excel(path = "sembuh.xlsx")
datasembuhmobility
\(summary()\) yaitu ringkasan data yang digunakan untuk mencari nilai statistik (minimum, maksimum, Q1, Q2, Q3, mean, dan median).
summary(datasembuhmobility)
## Tanggal Sembuh
## Min. :2021-02-01 00:00:00 Min. :244202
## 1st Qu.:2021-02-07 18:00:00 1st Qu.:267931
## Median :2021-02-14 12:00:00 Median :294581
## Mean :2021-02-14 12:00:00 Mean :288952
## 3rd Qu.:2021-02-21 06:00:00 3rd Qu.:310996
## Max. :2021-02-28 00:00:00 Max. :323892
## retail_and_recreation_percent_change_from_baseline
## Min. :-39.00
## 1st Qu.:-35.00
## Median :-32.50
## Mean :-32.39
## 3rd Qu.:-29.75
## Max. :-24.00
## grocery_and_pharmacy_percent_change_from_baseline
## Min. :-23.00
## 1st Qu.:-15.50
## Median :-12.00
## Mean :-11.68
## 3rd Qu.: -7.00
## Max. : 4.00
## parks_percent_change_from_baseline
## Min. :-66.00
## 1st Qu.:-55.00
## Median :-52.00
## Mean :-51.79
## 3rd Qu.:-48.75
## Max. :-41.00
## transit_stations_percent_change_from_baseline
## Min. :-55.00
## 1st Qu.:-43.00
## Median :-42.00
## Mean :-41.21
## 3rd Qu.:-39.75
## Max. :-30.00
## workplaces_percent_change_from_baseline
## Min. :-67.00
## 1st Qu.:-37.00
## Median :-34.50
## Mean :-32.46
## 3rd Qu.:-28.75
## Max. :-13.00
## residential_percent_change_from_baseline
## Min. : 5.00
## 1st Qu.: 8.75
## Median :11.00
## Mean :10.57
## 3rd Qu.:12.00
## Max. :20.00
Untuk membuat matriks scatterplot kita hanya perlu memasukkan objek \(datasembuhmobility\) kedalam fungsi \(pairs()\). Berikut adalah sintaks yang digunakan dan outputnya.
pairs(datasembuhmobility)
Kita juga dapat melakukan drop terhadap panel bawah grafik dengan memasukkan argumen \(lower.panel=NULL\).
pairs(datasembuhmobility, lower.panel=NULL)
Fungsi \(plot()\) adalah fungsi umum untuk membuat plot pada \(R\).
plot(datasembuhmobility$Sembuh ~ datasembuhmobility$Tanggal, data = datasembuhmobility)
Memvisualisasikan Data dengan Pasien sembuh sebagai variabel Y dan Google Mobility Index sebagai variabel X.
plot(datasembuhmobility$Sembuh~ datasembuhmobility$
retail_and_recreation_percent_change_from_baseline+datasembuhmobility$
grocery_and_pharmacy_percent_change_from_baseline+datasembuhmobility$
parks_percent_change_from_baseline+datasembuhmobility$
transit_stations_percent_change_from_baseline+datasembuhmobility$
workplaces_percent_change_from_baseline+datasembuhmobility$
residential_percent_change_from_baseline, data = datasembuhmobility)
Korelasi adalah hubungan antar variabel. Untuk mengetahui seberapa jauh hubungan antara satu variabel dengan variabel lain, kita dapat menggunakan fungsi \(cor()\).
A. Korelasi variabel y dengan x1.
cor(datasembuhmobility$Sembuh,datasembuhmobility$
retail_and_recreation_percent_change_from_baseline)
## [1] 0.176117
B. Korelasi variabel y dengan x2.
cor(datasembuhmobility$Sembuh,datasembuhmobility$
grocery_and_pharmacy_percent_change_from_baseline)
## [1] 0.145598
C. Korelasi variabel y dengan x3
cor(datasembuhmobility$Sembuh,datasembuhmobility$
parks_percent_change_from_baseline)
## [1] 0.309144
D. Korelasi variabel y dengan x4
cor(datasembuhmobility$Sembuh,datasembuhmobility$
transit_stations_percent_change_from_baseline)
## [1] 0.2940435
E. Korelasi variabel y dengan x5
cor(datasembuhmobility$Sembuh,datasembuhmobility$
workplaces_percent_change_from_baseline)
## [1] 0.290171
- Korelasi variabel y dengan x6
cor(datasembuhmobility$Sembuh,datasembuhmobility$
residential_percent_change_from_baseline)
## [1] -0.272328
Dari hasil seluruh output di atas, kita dapat menyimpulkan 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 terhubung karena nilai yang dihasilkan di bawah 0,4.
Berikut merupakan cara membuat permodelan regresi linier berganda.
model <- lm(datasembuhmobility$Sembuh ~ datasembuhmobility$Tanggal, data = datasembuhmobility)
Setelah membuat model, kita akan menggunakan fungsi summary() untuk menjelaskan atau mereview hasil dari model tersebut. Dengan ringkasan summary(model), kita dapat melihat informasi terperinci tentang kinerja dan koefisian model.
summary(model)
##
## Call:
## lm(formula = datasembuhmobility$Sembuh ~ datasembuhmobility$Tanggal,
## data = datasembuhmobility)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6621.2 -2084.5 -364.5 2322.6 6124.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.720e+07 1.428e+06 -40.06 <2e-16 ***
## datasembuhmobility$Tanggal 3.563e-02 8.851e-04 40.26 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3269 on 26 degrees of freedom
## Multiple R-squared: 0.9842, Adjusted R-squared: 0.9836
## F-statistic: 1621 on 1 and 26 DF, p-value: < 2.2e-16
Di posisi paling atas pada model di atas terdapat lm formula adalah datasembuhmobility\(Sembuh ~ datasembuhmobility\)Tanggal, data = datasembuhmobility.
Lalu di bawahnya terdapat 5 nilai residual. Residual adalah perbedaan antara nilai nyata dan nilai prediksi. Semakin kecil nilai residual, maka akan semakin baik atau benar model yang kita buat. Berikut nilai-nilai residual yang dihasilkan:
Nilai minimum = -6621.2
Nilai maximum = 6124.9
Nilai median = -364.5
Nilai quartil 1 = -2084.5
Nilai quartil 3 = 2322.6
Dari nilai-nilai tersebut dapat kita lihat bahwa dalam konteks ini berupa nilai minimum, maximum, median, quartil 1 dan quartil 3. Dapat kita simpulkan bahwa model yang telah kita buat belum bisa dikatakan baik atau benar karena nilai-nilai yang dihasilkan tidak mendekati nol.
Di bawah nilai residual terdapat koefisien, yang mana dalam koefisien tersebut terdapat nilai intersep, dan tanggal. Selain itu juga terdapat nilai-p dari koefisien.
Terdapat dua R2 yaitu sebagai berikut.
Multiple R-squared (pelipatan daripada variabel): 0.9842. Hal ini menunjukkan bahwa 0.009739% variasi variabel respon, y, dapat dijelaskan oleh variabel prediktor, x. Multiple R-squared tidak dapat berkurang saat kita menambahkan lebih banyak variabel independen ke model yang kita buat.
Adjusted R-squared (tidak pelipatan pada variabel): 0.9836. Adjusted R-squared lebih baik ada penambahan variabel. Jadi jika kita menambahkan lebih dari satu variabel ke model, itu hanya meningkat jika itu mengurangi kesalahan prediksi secara keseluruhan
ANOVA (analysis of variance) adalah pengujian yang dilakukan dengan membandingkan varians sehingga dapat diketahui ada tidaknya perbedaan rata-rata dari tiga atau lebih kelompok. Asumsi normalitas pada ANOVA adalah pada residual yaitu selisih antara Y Prediksi dengan Y Aktual. Tepatnya residual dapat dihitung sebagai berikut: Y Aktual – Y Prediksi. Dimana Y Aktual adalah Y sesungguhnya atau kenyataan. Sedangkan Y prediksi adalah Y hasil persamaan ANOVA.
anova(model)
plot(datasembuhmobility$Sembuh ~ datasembuhmobility$
Tanggal,
data = datasembuhmobility, col = "blue", pch = 20, cex = 1.5,
main = "Data Pasien Sembuh Covid di DKI Jakarta dan Google Mobility Index")
abline(model) #Add a regression line
Dari Plot di atas perlu kita ketahui bahwa titik-titik biru yang ada pada grafik tersebut adalah data real dan garis hitam di dalam kotak adalah data prediksi.
plot(cooks.distance(model), pch = 16, col = "red") #Plot the Cooks Distances.
plot(model)
AIC dan BIC banyak digunakan dalam kriteria pemilihan model. AIC yang berarti Kriteria Informasi Akaike dan BIC yang berarti Kriteria Informasi Bayesian. Meskipun kedua istilah ini membahas pemilihan model, keduanya tidak sama. Seseorang dapat menemukan perbedaan antara dua pendekatan pemilihan model.
AIC(model)
## [1] 536.5429
BIC(model)
## [1] 540.5395
head(predict(model), n = 11)
## 1 2 3 4 5 6 7 8
## 247391.7 250470.2 253548.8 256627.4 259706.0 262784.5 265863.1 268941.7
## 9 10 11
## 272020.3 275098.8 278177.4
plot(head(predict(model), n = 10))
head(resid(model), n = 11)
## 1 2 3 4 5 6 7
## -3189.6552 -1955.2310 -3738.8068 -2472.3826 -3003.9584 -1757.5342 -494.1100
## 8 9 10 11
## -156.6858 -447.2616 -281.8374 644.5868
coef(model)
## (Intercept) datasembuhmobility$Tanggal
## -5.719575e+07 3.563166e-02
Tabel di bawah merupakan semua proses yang telah dilakukan, sehingga terbuat tabel yang ada nilai residuals dan nilai protected.
datasembuhmobility$residuals <- model$residuals
datasembuhmobility$predicted <- model$fitted.values
datasembuhmobility
scatter.smooth(x=datasembuhmobility$Tanggal, y=datasembuhmobility$Sembuh,
main="Tanggal ~ Sembuh")
boxplot(datasembuhmobility$Sembuh, main="Sembuh",
boxplot.stats(datasembuhmobility$Sembuh)$out)
plot(density(datasembuhmobility$Sembuh), main="Google Mobility Index: Sembuh",
ylab="Frequency")
coefs <- coef(model)
plot(Sembuh ~ Tanggal, data = datasembuhmobility)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2), '+',
round(coefs[2], 2), '*Sembuh'))
Adanya korelasi antar variabel dapat dilakukan melalui visualisasi menggunakan scatterplot dan perhitungan matematis menggunakan metode Pearson untuk metode parametrik dan metode rangking Spearman dan Kendall untuk metode non-parametrik. Pada R uji korelasi dapat dilakukan dengan menggunakan fungsi \(cor.test()\). Format fungsi tersebut adalah sebagai berikut:
A. uji korelasi variabel y dengan x1
cor.test(datasembuhmobility$
retail_and_recreation_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$retail_and_recreation_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = 0.91228, df = 26, p-value = 0.37
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2108114 0.5153338
## sample estimates:
## cor
## 0.176117
B. uji korelasi variabel y dengan x2
cor.test(datasembuhmobility$
grocery_and_pharmacy_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$grocery_and_pharmacy_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = 0.7504, df = 26, p-value = 0.4597
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2405452 0.4919524
## sample estimates:
## cor
## 0.145598
C. uji korelasi variabel y dengan x3
cor.test(datasembuhmobility$
parks_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$parks_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = 1.6575, df = 26, p-value = 0.1094
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.07226788 0.61167386
## sample estimates:
## cor
## 0.309144
D. uji korelasi variabel y dengan x4
cor.test(datasembuhmobility$
transit_stations_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$transit_stations_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = 1.5687, df = 26, p-value = 0.1288
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.08877181 0.60117138
## sample estimates:
## cor
## 0.2940435
E. uji korelasi variabel y dengan x5
cor.test(datasembuhmobility$
workplaces_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$workplaces_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = 1.5461, df = 26, p-value = 0.1342
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.0929706 0.5984609
## sample estimates:
## cor
## 0.290171
F. uji korelasi variabel y dengan x6
cor.test(datasembuhmobility$
residential_percent_change_from_baseline,
datasembuhmobility$Sembuh)
##
## Pearson's product-moment correlation
##
## data: datasembuhmobility$residential_percent_change_from_baseline and datasembuhmobility$Sembuh
## t = -1.4432, df = 26, p-value = 0.1609
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.5858800 0.1121425
## sample estimates:
## cor
## -0.272328
Berdasarkan seluruh output yang dihasilkan, metode Pearson menghasilkan output berupa nilai t uji, derajat kebebasan, nilai p-value, rentang estimasi nilai korelasi berdasarkan tingkat kepercayaan, dan estimasi nilai korelasi.