Regresi linear berganda ialah salah satu model regresi yang di dalamnya melibatkan lebih dari satu variabel independen. Analisis ini berfungsi untuk mengetahui arah dan seberapa besar pengaruh variabel independen terhadap variabel dependen
Data yang digunakan adalah data kematian Covid-19 Bulan September yang disimpan di dalam excel, data disimpan di dalam excel karena excel berfungsi dalam pengolahan data yang dapat berupa angka maupun perhitunga.
library(readxl)
dataKematianSeptember <- read_excel(path = "KematianCovidSeptember.xlsx")
dataKematianSeptember
## # A tibble: 30 x 8
## Tanggal Meninggal retail_and_recreation_percent~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2020-09-01 00:00:00 1219 -24 -2
## 2 2020-09-02 00:00:00 1237 -25 -6
## 3 2020-09-03 00:00:00 1253 -25 -6
## 4 2020-09-04 00:00:00 1260 -22 -5
## 5 2020-09-05 00:00:00 1277 -25 -4
## 6 2020-09-06 00:00:00 1289 -30 -10
## 7 2020-09-07 00:00:00 1318 -25 -8
## 8 2020-09-08 00:00:00 1330 -26 -9
## 9 2020-09-09 00:00:00 1347 -26 -10
## 10 2020-09-10 00:00:00 1365 -26 -10
## # ... with 20 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>
Ringkasan data digunakan untuk mencari nilai statistik lima serangkai yang terdiri dari Minimum, Q1, Median, Q3, Dan Maksimum.
summary(dataKematianSeptember)
## Tanggal Meninggal
## Min. :2020-09-01 00:00:00 Min. :1219
## 1st Qu.:2020-09-08 06:00:00 1st Qu.:1334
## Median :2020-09-15 12:00:00 Median :1483
## Mean :2020-09-15 12:00:00 Mean :1479
## 3rd Qu.:2020-09-22 18:00:00 3rd Qu.:1644
## Max. :2020-09-30 00:00:00 Max. :1731
## retail_and_recreation_percent_change_from_baseline
## Min. :-53.00
## 1st Qu.:-41.75
## Median :-38.50
## Mean :-35.00
## 3rd Qu.:-26.00
## Max. :-22.00
## grocery_and_pharmacy_percent_change_from_baseline
## Min. :-30.00
## 1st Qu.:-18.75
## Median :-12.00
## Mean :-13.47
## 3rd Qu.: -8.00
## Max. : -2.00
## parks_percent_change_from_baseline
## Min. :-76.00
## 1st Qu.:-65.00
## Median :-61.50
## Mean :-61.83
## 3rd Qu.:-59.00
## Max. :-51.00
## transit_stations_percent_change_from_baseline
## Min. :-55.0
## 1st Qu.:-52.0
## Median :-47.0
## Mean :-45.6
## 3rd Qu.:-41.0
## Max. :-34.0
## workplaces_percent_change_from_baseline
## Min. :-39.00
## 1st Qu.:-37.00
## Median :-32.00
## Mean :-30.27
## 3rd Qu.:-23.25
## Max. :-13.00
## residential_percent_change_from_baseline
## Min. : 8.0
## 1st Qu.:13.0
## Median :14.0
## Mean :14.9
## 3rd Qu.:18.0
## Max. :19.0
Dalam pembuatan matriks scatterplot yang diperlukan hanya memasukkan objek dataKematianSeptember kedalam fungsi pairs().
pairs(dataKematianSeptember)
Selain itu di dalam program ini juga dapat melakukan drop terhadap panel bawah grafik, caranya ialah memasukkan argumen lower.panel=NULL.
pairs(dataKematianSeptember, lower.panel=NULL)
plot(dataKematianSeptember$Meninggal ~ dataKematianSeptember$retail_and_recreation_percent_change_from_baseline, data = dataKematianSeptember)
Visualisasi Data Kematian Covid Bulan September dengan Self Isolation sebagai variabel Y dan Google Mobility Index sebagai variabel X
plot(dataKematianSeptember$Meninggal ~ dataKematianSeptember$
retail_and_recreation_percent_change_from_baseline+ dataKematianSeptember$
grocery_and_pharmacy_percent_change_from_baseline+dataKematianSeptember$
parks_percent_change_from_baseline+dataKematianSeptember$
transit_stations_percent_change_from_baseline+dataKematianSeptember$
workplaces_percent_change_from_baseline+dataKematianSeptember$
residential_percent_change_from_baseline, data = dataKematianSeptember)
Korelasi antar variabel berarti menjelaskan tentang keterhubungan atau keterkaitan antar variabel. Keterkaitan atau keterhubungan itu bisa di ukur dengan menggunakan fungsi cor(). Jadi fungsi cor () berfungsi dalam mengukur seberapa jauh hubungan antara satu variabel dengan variabel yang lain.
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
retail_and_recreation_percent_change_from_baseline)
## [1] -0.8508943
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
grocery_and_pharmacy_percent_change_from_baseline)
## [1] -0.5516343
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
parks_percent_change_from_baseline)
## [1] -0.5532132
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
transit_stations_percent_change_from_baseline)
## [1] -0.6831169
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
workplaces_percent_change_from_baseline)
## [1] -0.2632221
cor(dataKematianSeptember$Meninggal,dataKematianSeptember$
residential_percent_change_from_baseline)
## [1] 0.5879545
Dari percobaan program yang sidah dilakukan, maka bisa di tarik suatu kesimpulan bahwa tingkat suatu keterhubungan antara variabel Y memiliki hubungan dengan X5, hal ini disebabkan nilai yang dihasilkan berjumlah lebih dari 0.5. Sedangkan untuk tingkat keterhubungan antara variabel Y dengan X1, X2, X3, X4, dan X5 tidak berhubungan karena nilai yang dihasilkan berjumlah kurang dari 0 atau bernilai negatif.
Langkah - langkah membuat permodelan regresi linier berganda ialah sebagai berikut :
modelData <- lm(dataKematianSeptember$Meninggal ~ dataKematianSeptember$Tanggal, data = dataKematianSeptember)
Setelah membuat model seperti contoh di atas,diperlukan pengaplikasian dari fungsi summary() yang berfungsi untuk menjelaskan hasil dari model yang telah dibuat. Selain itu summary(modelData) juga membantu dalam memantau informasi terperinci tentang kinerja dan koefisian model.
summary(modelData)
##
## Call:
## lm(formula = dataKematianSeptember$Meninggal ~ dataKematianSeptember$Tanggal,
## data = dataKematianSeptember)
##
## Residuals:
## Min 1Q Median 3Q Max
## -23.011 -10.049 -1.815 8.928 28.544
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.492e+05 5.275e+03 -66.21 <2e-16 ***
## dataKematianSeptember$Tanggal 2.192e-04 3.296e-06 66.49 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 13.5 on 28 degrees of freedom
## Multiple R-squared: 0.9937, Adjusted R-squared: 0.9935
## F-statistic: 4421 on 1 and 28 DF, p-value: < 2.2e-16
Contoh sebelumnya merupakan salah satu contoh dari model yang sudah dibuat.
Merupakan dataKematianSeptember Meninggal dataKematianSeptember, data = dataKematianSeptember.
Yaitu perbedaan antara nilai nyata dan nilai prediksi.Semakin kecil nilai residual maka semakin baik atau benar model yang kita buat. Terdapat 5 nilai residual yang dihasilkan diantaranya :
*) Nilai Minimum = -358.0
*) Nilai Quartil 1 = -316.5
*) Nilai Median = -245.1
*) Nilai Quartil 3 = -164.1
*) Nilai Maximum = 3437.0
Nilai dari residual terdapat koefisien yang di dalamnya terdapat nilai intersep, dan tanggal.
Hal ini menunjukkan bahwa 0.009937% variasi variabel respon, y, dapat dijelaskan oleh variabel prediktor, x. Suatu multiple R-squared tidak dapat berkurang saat kita menambahkan lebih banyak variabel independen ke model yang kita buat.
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) merupakan salah satu pengujian yang dilakukan dengan cara membandingkan varians, sehingga dapat diketahui perbedaan rata-rata dari tiga atau lebih kelompok. Asumsi normalitas pada ANOVA adalah pada residual yaitu selisih antara Y Aktual(Y sesungguhnya atau kenyataan) – Y Prediksi(Y hasil persamaan ANOVA).
anova(modelData)
## Analysis of Variance Table
##
## Response: dataKematianSeptember$Meninggal
## Df Sum Sq Mean Sq F value Pr(>F)
## dataKematianSeptember$Tanggal 1 805923 805923 4420.5 < 2.2e-16 ***
## Residuals 28 5105 182
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(dataKematianSeptember$Meninggal ~ dataKematianSeptember$
Tanggal,
data = dataKematianSeptember, col = "red", pch = 20, cex = 1.5,
main = "Data Orang Meninggal Covid-19 di DKI Jakarta dan Google Mobility Index")
abline(modelData)
) Titik-titik merah pada grafik merupakan data real ) Garis hitam yang membelah diagonal adalah data prediksi.
plot(cooks.distance(modelData), pch = 16, col = "blue")
plot(modelData)
AIC (Kriteria Informasi Akaike) dan BIC (Kriteria Informasi Bayesian). Kedua model ini memiliki karakteristik yang berbeda meskipun sekilas terlihat sama, adapun perbedaannya dapat dilihat melalui pendekatan pemilihan model.
AIC(modelData)
## [1] 245.2383
BIC(modelData)
## [1] 249.4419
head(predict(modelData), n = 20)
## 1 2 3 4 5 6 7 8
## 1204.856 1223.792 1242.729 1261.665 1280.601 1299.538 1318.474 1337.411
## 9 10 11 12 13 14 15 16
## 1356.347 1375.283 1394.220 1413.156 1432.092 1451.029 1469.965 1488.902
## 17 18 19 20
## 1507.838 1526.774 1545.711 1564.647
plot(head(predict(modelData), n = 20))
head(resid(modelData), n = 15)
## 1 2 3 4 5 6
## 14.1440860 13.2077123 10.2713385 -1.6650352 -3.6014090 -10.5377827
## 7 8 9 10 11 12
## -0.4741565 -7.4105302 -9.3469040 -10.2832777 -12.2196515 -9.1560252
## 13 14 15
## -22.0923990 -11.0287727 -1.9651465
coef(modelData)
## (Intercept) dataKematianSeptember$Tanggal
## -3.492317e+05 2.191710e-04
Pada Tabel di bawah ini memuat proses yang telah dilakukan sebelumnya, sehingga terbuat tabel yang ada nilai residuals dan nilai protected.
dataKematianSeptember$residuals <- modelData$residuals
dataKematianSeptember$predicted <- modelData$fitted.values
dataKematianSeptember
## # A tibble: 30 x 10
## Tanggal Meninggal retail_and_recreation_percent~ grocery_and_pha~
## <dttm> <dbl> <dbl> <dbl>
## 1 2020-09-01 00:00:00 1219 -24 -2
## 2 2020-09-02 00:00:00 1237 -25 -6
## 3 2020-09-03 00:00:00 1253 -25 -6
## 4 2020-09-04 00:00:00 1260 -22 -5
## 5 2020-09-05 00:00:00 1277 -25 -4
## 6 2020-09-06 00:00:00 1289 -30 -10
## 7 2020-09-07 00:00:00 1318 -25 -8
## 8 2020-09-08 00:00:00 1330 -26 -9
## 9 2020-09-09 00:00:00 1347 -26 -10
## 10 2020-09-10 00:00:00 1365 -26 -10
## # ... with 20 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=dataKematianSeptember$Tanggal, y=dataKematianSeptember$Meninggal,
main="Tanggal ~ MENINGGAL")
boxplot(dataKematianSeptember$Meninggal, main="Kasus Meninggal Covid",
boxplot.stats(dataKematianSeptember$Kematian)$out)
## Warning: Unknown or uninitialised column: `Kematian`.
plot(density(dataKematianSeptember$Meninggal), main="Google Mobility Index: Kasus Covid Meninggal",
ylab="Frequency")
coefs <- coef(modelData)
plot(Meninggal ~ Tanggal, data = dataKematianSeptember)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2), '+',
round(coefs[2], 2), '*Meninggal'))
Keterkaitan atau keterhubungan antar variabel bisa dilakukan dengan cara melakukan visualisasi menggunakan scatterplot dengan hitungan matematis yang menggunakan metode Pearson. Sedangkan metode parametrik, metode rangking Spearman dan Kendall digunakan untuk metode non-parametrik. Pada R uji keterhubungan dilakukan dengan menggunakan fungsi cor.test().
cor.test(dataKematianSeptember$
retail_and_recreation_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$retail_and_recreation_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = -8.5707, df = 28, p-value = 2.579e-09
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.9269929 -0.7075143
## sample estimates:
## cor
## -0.8508943
cor.test(dataKematianSeptember$
grocery_and_pharmacy_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$grocery_and_pharmacy_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = -3.4996, df = 28, p-value = 0.001578
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.7607204 -0.2388293
## sample estimates:
## cor
## -0.5516343
cor.test(dataKematianSeptember$
parks_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$parks_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = -3.514, df = 28, p-value = 0.00152
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.7616761 -0.2409709
## sample estimates:
## cor
## -0.5532132
cor.test(dataKematianSeptember$
transit_stations_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$transit_stations_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = -4.9496, df = 28, p-value = 3.183e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.8373173 -0.4282402
## sample estimates:
## cor
## -0.6831169
cor.test(dataKematianSeptember$
workplaces_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$workplaces_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = -1.4438, df = 28, p-value = 0.1599
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.5694865 0.1072143
## sample estimates:
## cor
## -0.2632221
cor.test(dataKematianSeptember$
residential_percent_change_from_baseline,
dataKematianSeptember$Meninggal)
##
## Pearson's product-moment correlation
##
## data: dataKematianSeptember$residential_percent_change_from_baseline and dataKematianSeptember$Meninggal
## t = 3.8462, df = 28, p-value = 0.0006337
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2888754 0.7824778
## sample estimates:
## cor
## 0.5879545
Dari seluruh output yang dihasilkan maka dapat dilihat bahwa Metode Pearson menghasilkan output berupa nilai t uji, derajat kebebasan, nilai p-value, rentang estimasi nilai korelasi berdasarkan tingkat kepercayaan, dan estimasi nilai korelasi.