Universitas : UIN MAULANA MALIK IBRAHIM MALANG
Jurusan : Teknik Informatika
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.
Disini data diambil dari Excel. Excel adalah salah satu jenis file eksternal yang sering digunakan untuk menyimpan data. Kita dapat menggunakan package {readxl} dengan fungsi read_excel() untuk import data dari file Excel. Argumen path = adalah lokasi dan nama file Excel yang akan kita gunakan.
library(readxl)datacovidmeninggal <- read_excel(path = "Meniggal.xlsx")
datacovidmeninggal## # A tibble: 31 x 8
## Tanggal Meninggal retail_and_recreation_percent~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2021-12-01 00:00:00 13576 -6 18
## 2 2021-12-02 00:00:00 13576 -6 17
## 3 2021-12-03 00:00:00 13577 -1 18
## 4 2021-12-04 00:00:00 13578 -8 13
## 5 2021-12-05 00:00:00 13579 -10 8
## 6 2021-12-06 00:00:00 13581 -14 2
## 7 2021-12-07 00:00:00 13582 -13 8
## 8 2021-12-08 00:00:00 13583 -6 11
## 9 2021-12-09 00:00:00 13583 -7 9
## 10 2021-12-10 00:00:00 13583 -1 15
## # ... with 21 more rows, and 4 more variables:
## # 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>
summary() atau ringkasan data digunakan untuk mencari nilai statistik lima serangkai (minimum, Q1, Q2 atau median, Q3, maksimum).
summary(datacovidmeninggal)## Tanggal Meninggal
## Min. :2021-12-01 00:00:00 Min. :13576
## 1st Qu.:2021-12-08 12:00:00 1st Qu.:13583
## Median :2021-12-16 00:00:00 Median :13583
## Mean :2021-12-16 00:00:00 Mean :13583
## 3rd Qu.:2021-12-23 12:00:00 3rd Qu.:13584
## Max. :2021-12-31 00:00:00 Max. :13588
## retail_and_recreation_percent_change_from_baseline
## Min. :-14.000
## 1st Qu.: -8.000
## Median : -6.000
## Mean : -6.129
## 3rd Qu.: -4.000
## Max. : 2.000
## grocery_and_pharmacy_percent_change_from_baseline
## Min. : 2.00
## 1st Qu.: 8.00
## Median :11.00
## Mean :11.58
## 3rd Qu.:13.00
## Max. :34.00
## parks_percent_change_from_baseline
## Min. :-30.00
## 1st Qu.:-21.00
## Median :-19.00
## Mean :-17.13
## 3rd Qu.:-14.50
## Max. : 4.00
## transit_stations_percent_change_from_baseline
## Min. :-28.00
## 1st Qu.:-25.00
## Median :-23.00
## Mean :-22.13
## 3rd Qu.:-21.00
## Max. :-14.00
## workplaces_percent_change_from_baseline
## Min. :-37.00
## 1st Qu.:-24.50
## Median :-22.00
## Mean :-19.94
## 3rd Qu.:-18.50
## Max. : -1.00
## residential_percent_change_from_baseline
## Min. : 2.000
## 1st Qu.: 6.000
## Median : 7.000
## Mean : 6.645
## 3rd Qu.: 8.000
## Max. :10.000
Untuk membuat matriks scatterplot kita hanya perlu memasukkan objek datacovidmeninggal kedalam fungsi pairs(). Berikut adalah sintaks yang digunakan dan output yang dihasilkan.
pairs(datacovidmeninggal) Kita juga dapat melakukan drop terhadap panel bawah grafik tersebut, yaitu dengan memasukkan argumen lower.panel=NULL.
pairs(datacovidmeninggal, lower.panel=NULL)Fungsi plot() merupakan fungsi umum yang digunakan untuk membuat plot pada R.
plot(datacovidmeninggal$Meninggal ~ datacovidmeninggal$Tanggal, data = datacovidmeninggal) Memvisualisasikan Data dengan Meninggal sebagai variabel Y dan Google Mobility Index sebagai variabel X
plot(datacovidmeninggal$Meninggal ~ datacovidmeninggal$
retail_and_recreation_percent_change_from_baseline+datacovidmeninggal$
grocery_and_pharmacy_percent_change_from_baseline+datacovidmeninggal$
parks_percent_change_from_baseline+datacovidmeninggal$
transit_stations_percent_change_from_baseline+datacovidmeninggal$
workplaces_percent_change_from_baseline+datacovidmeninggal$
residential_percent_change_from_baseline, data = datacovidmeninggal)Korelasi merupakan keterhubungan antar variabel. Untuk mengukur seberapa jauh hubungan antara satu variabel dengan variabel yang lain kita dapat menggunakan fungsi cor().
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
retail_and_recreation_percent_change_from_baseline)## [1] 0.2193365
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
grocery_and_pharmacy_percent_change_from_baseline)## [1] 0.04951181
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
parks_percent_change_from_baseline)## [1] 0.2138968
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
transit_stations_percent_change_from_baseline)## [1] -0.1187016
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
workplaces_percent_change_from_baseline)## [1] -0.1504957
cor(datacovidmeninggal$Meninggal,datacovidmeninggal$
residential_percent_change_from_baseline)## [1] 0.02674358
Berikut cara melakukan permodelan regresi linier berganda.
model <- lm(datacovidmeninggal$Meninggal ~ datacovidmeninggal$Tanggal, data = datacovidmeninggal)Selanjutnya dengan model yang telah dibuat di atas, kita akan menggunakan fungsi summary() untuk menjelaskan atau mereview hasil dari model tersebut. Dan dengan ringkasan summary(model) kita dapat melihat informasi terperinci tentang kinerja dan koefisian model.
summary(model)##
## Call:
## lm(formula = datacovidmeninggal$Meninggal ~ datacovidmeninggal$Tanggal,
## data = datacovidmeninggal)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.86532 -0.95565 0.01573 1.07520 2.48710
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.372e+03 5.453e+02 15.352 1.84e-15 ***
## datacovidmeninggal$Tanggal 3.178e-06 3.326e-07 9.556 1.83e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.431 on 29 degrees of freedom
## Multiple R-squared: 0.759, Adjusted R-squared: 0.7507
## F-statistic: 91.32 on 1 and 29 DF, p-value: 1.831e-10
Menjelaskan rincian Model dengan fungsi summary() Di atas merupakan rincian dari model yang telah dibuat.
Di posisi paling atas terdapat lm formula adalah datacovidmeninggal$Meninggal ~ datacovidmeninggal$Tanggal, data = datacovidmeninggal.
Lalu di bawahnya terdapat 5 nilai residual, sebelumnya kita perlu tahu bahwa Residual adalah perbedaan antara nilai nyata dan nilai prediksi. Yang mana semakin kecil nilai residual maka semakin baik atau benar model yang kita buat. Berikut nilai-nilai residual yang dihasilkan:
Nilai minimum = -2.86532
Nilai maximum = 2.48710
Nilai median = 0.01573
Nilai quartil 1 = -0.95565
Nilai quartil 3 = 1.07520
ANOVA (analysis of variance) adalah pengujian yang dilakukan dengan membandingkan varians. Dengan membandingkan varians tersebut, 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)## Analysis of Variance Table
##
## Response: datacovidmeninggal$Meninggal
## Df Sum Sq Mean Sq F value Pr(>F)
## datacovidmeninggal$Tanggal 1 187.000 187.000 91.317 1.831e-10 ***
## Residuals 29 59.387 2.048
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(datacovidmeninggal$Meninggal ~ datacovidmeninggal$
Tanggal,
data = datacovidmeninggal, col = "Blue", pch = 20, cex = 1.5,
main = "Data Covid Meninggal di DKI Jakarta dan Google Mobility Index")
abline(model) 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 = "Blue") plot(model)AIC dan BIC banyak digunakan dalam kriteria pemilihan model. AIC berarti Kriteria Informasi Akaike dan BIC 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] 114.1268
BIC(model)## [1] 118.4287
head(predict(model), n = 11)## 1 2 3 4 5 6 7 8
## 13578.59 13578.87 13579.14 13579.41 13579.69 13579.96 13580.24 13580.51
## 9 10 11
## 13580.79 13581.06 13581.34
head(resid(model), n = 11)## 1 2 3 4 5 6 7
## -2.5907258 -2.8653226 -2.1399194 -1.4145161 -0.6891129 1.0362903 1.7616935
## 8 9 10 11
## 2.4870968 2.2125000 1.9379032 1.6633065
coef(model)## (Intercept) datacovidmeninggal$Tanggal
## 8.371687e+03 3.178203e-06
Tabel di bawah merupakan semua proses yang telah dilakukan, sehingga terbuat tabel yang ada nilai residuals dan nilai protected.
datacovidmeninggal$residuals <- model$residualsdatacovidmeninggal$predicted <- model$fitted.values
datacovidmeninggal## # A tibble: 31 x 10
## Tanggal Meninggal retail_and_recreation_percent~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2021-12-01 00:00:00 13576 -6 18
## 2 2021-12-02 00:00:00 13576 -6 17
## 3 2021-12-03 00:00:00 13577 -1 18
## 4 2021-12-04 00:00:00 13578 -8 13
## 5 2021-12-05 00:00:00 13579 -10 8
## 6 2021-12-06 00:00:00 13581 -14 2
## 7 2021-12-07 00:00:00 13582 -13 8
## 8 2021-12-08 00:00:00 13583 -6 11
## 9 2021-12-09 00:00:00 13583 -7 9
## 10 2021-12-10 00:00:00 13583 -1 15
## # ... with 21 more rows, and 6 more variables:
## # 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>, residuals <dbl>,
## # predicted <dbl>
scatter.smooth(x=datacovidmeninggal$Tanggal, y=datacovidmeninggal $Meninggal,
main="Tanggal ~ Meninggal")boxplot(datacovidmeninggal$Meninggal, main="Meninggal",
boxplot.stats(datacovidmeninggal$Meninggal)$out)plot(density(datacovidmeninggal$Meninggal), main="Google Mobility Index: Pasien Meninggal",
ylab="Frequency")coefs <- coef(model)
plot(Meninggal ~ Tanggal, data = datacovidmeninggal)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2), '+',
round(coefs[2], 2), '*Meninggal'))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:
cor.test(datacovidmeninggal$
retail_and_recreation_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$retail_and_recreation_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = 1.2106, df = 29, p-value = 0.2358
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1463803 0.5323059
## sample estimates:
## cor
## 0.2193365
cor.test(datacovidmeninggal$
grocery_and_pharmacy_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$grocery_and_pharmacy_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = 0.26696, df = 29, p-value = 0.7914
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.3102717 0.3968889
## sample estimates:
## cor
## 0.04951181
cor.test(datacovidmeninggal$
parks_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$parks_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = 1.1792, df = 29, p-value = 0.2479
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1519607 0.5282032
## sample estimates:
## cor
## 0.2138968
cor.test(datacovidmeninggal$
transit_stations_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$transit_stations_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = -0.64378, df = 29, p-value = 0.5248
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.4539483 0.2459849
## sample estimates:
## cor
## -0.1187016
cor.test(datacovidmeninggal$
workplaces_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$workplaces_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = -0.81978, df = 29, p-value = 0.419
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.4792775 0.2153271
## sample estimates:
## cor
## -0.1504957
cor.test(datacovidmeninggal$
residential_percent_change_from_baseline,
datacovidmeninggal$Meninggal)##
## Pearson's product-moment correlation
##
## data: datacovidmeninggal$residential_percent_change_from_baseline and datacovidmeninggal$Meninggal
## t = 0.14407, df = 29, p-value = 0.8864
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.3307306 0.3775063
## sample estimates:
## cor
## 0.02674358