Tugas Kelompok “Membuat Regresi Linier Berganda Menggunakan Data Covid Pasien Dirawat DKI Jakarta dan Google Mobility Index Pada Bulan Mei 2021”

Yuzema Mala Nazira, Prof.Dr.Suhartono, M.Kom
26 Maret 2022
Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang
Prodi : Teknik Informatika

Membangun Regresi Linier Berganda

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.
1. Mengambil Data dan Menampilkannya
library(readxl)
datacovidmobility <- read_excel(path = "datadirawat.xlsx")
datacovidmobility
## # A tibble: 31 x 8
##    Tanggal             Dirawat Retail Grocery  Park Station Workplace Residental
##    <dttm>                <dbl>  <dbl>   <dbl> <dbl>   <dbl>     <dbl>      <dbl>
##  1 2021-05-01 00:00:00    3622     -6      21   -19     -20       -36          8
##  2 2021-05-02 00:00:00    3589     -7      19   -27     -22        -7          6
##  3 2021-05-03 00:00:00    3537     -2      25    -9     -21       -24          5
##  4 2021-05-04 00:00:00    3564     -3      26    -9     -16       -25          5
##  5 2021-05-05 00:00:00    3738     -1      27    -7     -16       -26          5
##  6 2021-05-06 00:00:00    3843     -2      26    -9     -31       -26          7
##  7 2021-05-07 00:00:00    3928     -2      25   -12     -34       -23          7
##  8 2021-05-08 00:00:00    3970     -4      25   -20     -33       -17          6
##  9 2021-05-09 00:00:00    3974     -2      26   -23     -35        -6          6
## 10 2021-05-10 00:00:00    3941      6      36     1     -31       -32          7
## # ... with 21 more rows
2. Mengetahui summary ()Data
summary() atau ringkasan data digunakan untuk mencari nilai statistik lima serangkai (minimum, Q1, Q2 atau median, Q3, maksimum).
summary(datacovidmobility)
##     Tanggal                       Dirawat         Retail           Grocery     
##  Min.   :2021-05-01 00:00:00   Min.   :3537   Min.   :-13.000   Min.   : 8.00  
##  1st Qu.:2021-05-08 12:00:00   1st Qu.:3936   1st Qu.: -5.000   1st Qu.:18.50  
##  Median :2021-05-16 00:00:00   Median :4128   Median : -2.000   Median :23.00  
##  Mean   :2021-05-16 00:00:00   Mean   :4474   Mean   : -2.161   Mean   :23.87  
##  3rd Qu.:2021-05-23 12:00:00   3rd Qu.:5403   3rd Qu.: -1.000   3rd Qu.:25.50  
##  Max.   :2021-05-31 00:00:00   Max.   :5633   Max.   :  8.000   Max.   :55.00  
##       Park            Station         Workplace        Residental    
##  Min.   :-27.000   Min.   :-45.00   Min.   :-73.00   Min.   : 2.000  
##  1st Qu.: -8.000   1st Qu.:-31.50   1st Qu.:-35.00   1st Qu.: 5.000  
##  Median :  5.000   Median :-22.00   Median :-24.00   Median : 6.000  
##  Mean   :  3.677   Mean   :-24.32   Mean   :-28.65   Mean   : 6.129  
##  3rd Qu.: 14.500   3rd Qu.:-17.50   3rd Qu.:-19.50   3rd Qu.: 7.000  
##  Max.   : 34.000   Max.   :-14.00   Max.   : -4.00   Max.   :12.000
3. Membuat Matriks dengan Fungsi Pairs
Untuk membuat matriks scatterplot kita hanya perlu memasukkan objek datacovidmobility kedalam fungsi pairs(). Berikut adalah sintaks yang digunakan dan output yang dihasilkan
pairs (datacovidmobility)

Kita juga dapat melakukan drop terhadap panel bawah grafik tersebut, yaitu dengan memasukkan argumen lower.panel=NULL.
pairs(datacovidmobility, lower.panel=NULL)

Visualisasi Data Menggunakan Fungsi Plot ()
plot(datacovidmobility$Dirawat ~ datacovidmobility$Tanggal, data = datacovidmobility)

Memvisualisasikan Data dengan Pasien Dirawat sebagai variabel Y dan Google Mobility Index sebagai variabel X
plot(datacovidmobility$Dirawat ~ datacovidmobility$Retail+datacovidmobility$Grocery+datacovidmobility$Park+datacovidmobility$Station+datacovidmobility$Workplace+datacovidmobility$Residental, data = datacovidmobility)

5. Membuat Korelasi Antar Variabel
a. korelasi variabel y dengan x1
cor(datacovidmobility$Dirawat,datacovidmobility$Retail)
## [1] 0.08571958
b. korelasi variabel y dengan x2
cor(datacovidmobility$Dirawat,datacovidmobility$Grocery)
## [1] -0.2506931
c. korelasi variabel y dengan x3
cor(datacovidmobility$Dirawat,datacovidmobility$Park)
## [1] 0.3062791
d. Koreladi variabel y dengan x4
cor(datacovidmobility$Dirawat,datacovidmobility$Station)
## [1] 0.517357
e. Korelasi variabel y dengan x5
cor(datacovidmobility$Dirawat,datacovidmobility$Workplace)
## [1] 0.2699286
f. Korelasi variabel y dengan x6
cor(datacovidmobility$Dirawat,datacovidmobility$Residental)
## [1] 0.007208197
j
6. Melakukan Permodelan
Berikut cara melakukan permodelan regresi linier berganda
model <- lm(datacovidmobility$Dirawat ~ datacovidmobility$Tanggal, data = datacovidmobility)
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 = datacovidmobility$Dirawat ~ datacovidmobility$Tanggal, 
##     data = datacovidmobility)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -516.71 -181.83   44.83  179.40  440.95 
## 
## Coefficients:
##                             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               -1.455e+06  1.017e+05  -14.31 1.13e-14 ***
## datacovidmobility$Tanggal  9.004e-04  6.273e-05   14.35 1.04e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 269.9 on 29 degrees of freedom
## Multiple R-squared:  0.8766, Adjusted R-squared:  0.8723 
## F-statistic:   206 on 1 and 29 DF,  p-value: 1.042e-14
7. Menjelaskan rincian Model dengan fungsi summary()
Di posisi paling atas terdapat lm formula adalah datacovidmobilityMeninggal datacovidmobilityTanggal, data = datacovidmobility.
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 = -516.71
Nilai maximum = -181.83
Nilai median = 44.83
Nilai quartil 1 = 179.40
Nilai quartil 3 = 440.95
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
Selanjutnya terdapat dua R2 yaitu:
1). Multiple R-squared (pelipatan daripada variabel): 0.8766. Hal ini menunjukkan bahwa 0.8766% 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.
2). Adjusted R-squared (tidak pelipatan pada variabel): 0.8723 .
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
8. Menggunakan Fungsi anova ()
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: datacovidmobility$Dirawat
##                           Df   Sum Sq  Mean Sq F value    Pr(>F)    
## datacovidmobility$Tanggal  1 15007931 15007931     206 1.042e-14 ***
## Residuals                 29  2112777    72854                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Membuat plot()Model dari Data Real dan Data Prediksi
plot(datacovidmobility$Dirawat ~ datacovidmobility$
              Tanggal, 
     data = datacovidmobility, col = "red", pch = 20, cex = 1.5, 
     main = "Data Covid Pasien Dirawat di DKI Jakarta dan Google Mobility Index")
abline(model) #Add a regression line

Dari Plot di atas perlu kita ketahui bahwa titik-titik kuning yang ada pada grafik tersebut adalah data real dan garis hitam di dalam kotak adalah data prediksi.
plot(cooks.distance(model), pch = 16, col = "green") #Plot the Cooks Distances.

plot(model)

10. Penggunaan AIC dan BIC
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] 438.9895
BIC(model)
## [1] 443.2915
11. Memunculkan Nilai Predicted dan Memvisualisasikannya
head(predict(model), n = 11)
##        1        2        3        4        5        6        7        8 
## 3306.831 3384.623 3462.415 3540.206 3617.998 3695.790 3773.582 3851.374 
##        9       10       11 
## 3929.166 4006.958 4084.750
plot (head(predict(model), n = 10))

12. Memunculkan Nilai Residuals
head(resid(model), n = 11)
##          1          2          3          4          5          6          7 
##  315.16935  204.37742   74.58548   23.79355  120.00161  147.20968  154.41774 
##          8          9         10         11 
##  118.62581   44.83387  -65.95806 -153.75000
coef(model)
##               (Intercept) datacovidmobility$Tanggal 
##             -1.455136e+06              9.003696e-04
13. Membuat Tabel untuk Menambah Data Residuals dan Data Predicted
datacovidmobility$residuals <- model$residuals
datacovidmobility$predicted <- model$fitted.values
datacovidmobility
## # A tibble: 31 x 10
##    Tanggal             Dirawat Retail Grocery  Park Station Workplace Residental
##    <dttm>                <dbl>  <dbl>   <dbl> <dbl>   <dbl>     <dbl>      <dbl>
##  1 2021-05-01 00:00:00    3622     -6      21   -19     -20       -36          8
##  2 2021-05-02 00:00:00    3589     -7      19   -27     -22        -7          6
##  3 2021-05-03 00:00:00    3537     -2      25    -9     -21       -24          5
##  4 2021-05-04 00:00:00    3564     -3      26    -9     -16       -25          5
##  5 2021-05-05 00:00:00    3738     -1      27    -7     -16       -26          5
##  6 2021-05-06 00:00:00    3843     -2      26    -9     -31       -26          7
##  7 2021-05-07 00:00:00    3928     -2      25   -12     -34       -23          7
##  8 2021-05-08 00:00:00    3970     -4      25   -20     -33       -17          6
##  9 2021-05-09 00:00:00    3974     -2      26   -23     -35        -6          6
## 10 2021-05-10 00:00:00    3941      6      36     1     -31       -32          7
## # ... with 21 more rows, and 2 more variables: residuals <dbl>, predicted <dbl>
14. Visualisasi Data Menggunakan scatter, smooth, boxplot dan plot
scatter.smooth(x=datacovidmobility$Tanggal, y=datacovidmobility$Dirawat, 
               main="Tanggal ~ Dirawat")

boxplot(datacovidmobility$Dirawat, main="Dirawat", 
        boxplot.stats(datacovidmobility$Dirawat)$out)

plot(density(datacovidmobility$Dirawat), main="Google Mobility Index: Dirawat", 
     ylab="Frequency")

coefs <- coef(model)
plot(Dirawat ~ Tanggal, data = datacovidmobility)
abline(coefs)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2),  '+', 
                           round(coefs[2], 2), '*Dirawat'))

15. Melakukan Uji Korelasi Antar Variabel
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 koreladi variabel y dengan x 1
cor.test(datacovidmobility$
 Retail, 
         datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Retail and datacovidmobility$Dirawat
## t = 0.46332, df = 29, p-value = 0.6466
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.2770352  0.4270874
## sample estimates:
##        cor 
## 0.08571958
b. uji korelasi variabel y dengan x2
cor.test(datacovidmobility$Grocery, 
         datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Grocery and datacovidmobility$Dirawat
## t = -1.3946, df = 29, p-value = 0.1737
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.5556725  0.1137517
## sample estimates:
##        cor 
## -0.2506931
c. uji korelasi variabel dengan x3
cor.test(datacovidmobility$Park, datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Park and datacovidmobility$Dirawat
## t = 1.7326, df = 29, p-value = 0.09379
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.05391193  0.59594329
## sample estimates:
##       cor 
## 0.3062791
d. uji korelasi variabel y dengan x4
cor.test(datacovidmobility$
 Station, 
         datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Station and datacovidmobility$Dirawat
## t = 3.2556, df = 29, p-value = 0.002878
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1996093 0.7366535
## sample estimates:
##      cor 
## 0.517357
e. uji korelasi variabel y dengan x5
cor.test(datacovidmobility$
 Workplace, 
         datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Workplace and datacovidmobility$Dirawat
## t = 1.5096, df = 29, p-value = 0.142
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.09333912  0.56977197
## sample estimates:
##       cor 
## 0.2699286
f. uji korelasi variabel y dengan x6
cor.test(datacovidmobility$
 Residental, 
         datacovidmobility$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datacovidmobility$Residental and datacovidmobility$Dirawat
## t = 0.038818, df = 29, p-value = 0.9693
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.3480208  0.3606272
## sample estimates:
##         cor 
## 0.007208197
Referensi