1. Regresi Linier Berganda

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

1.1 Pengambilan Dan Hasil Data

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)
## Warning: package 'readxl' was built under R version 4.1.2
datadirawat<- read_excel(path = "DataDirawatSeptember.xlsx")
datadirawat
## # A tibble: 30 x 8
##    Tanggal             Dirawat retail_and_recreation_percent_c~ grocery_and_pha~
##    <dttm>                <dbl>                            <dbl>            <dbl>
##  1 2020-09-01 00:00:00    3341                              -24               -2
##  2 2020-09-02 00:00:00    3568                              -25               -6
##  3 2020-09-03 00:00:00    3709                              -25               -6
##  4 2020-09-04 00:00:00    3827                              -22               -5
##  5 2020-09-05 00:00:00    3677                              -25               -4
##  6 2020-09-06 00:00:00    4082                              -30              -10
##  7 2020-09-07 00:00:00    4341                              -25               -8
##  8 2020-09-08 00:00:00    4432                              -26               -9
##  9 2020-09-09 00:00:00    4554                              -26              -10
## 10 2020-09-10 00:00:00    4728                              -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>
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.1.3
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.1.3
x <- datadirawat$Dirawat
retail <- datadirawat$retail_and_recreation_percent_change_from_baseline
grocery <- datadirawat$grocery_and_pharmacy_percent_change_from_baseline
park <- datadirawat$parks_percent_change_from_baseline
station <- datadirawat$transit_stations_percent_change_from_baseline
workplace <- datadirawat$workplaces_percent_change_from_baseline
residental <- datadirawat$residential_percent_change_from_baseline
df <- data.frame(x, retail, grocery, park, station, workplace,residental  )
# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")

# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable))+
  geom_point() +
  geom_line() + 
  theme(legend.justification = "top") +
  labs(title = "Google Mobility Index", 
         subtitle = "Provinsi DKI Jakarta Indonesia Bulan September 2020", 
         y = "Mobility", x = "Data Dirawat") +
theme(axis.text.x = element_text(angle = -90))

1.2 Mengetahui Summary dari Data

summary() atau ringkasan data digunakan untuk mencari nilai statistik lima serangkai (minimum, Q1, Q2 atau median, Q3, maksimum).

summary(datadirawat)
##     Tanggal                       Dirawat    
##  Min.   :2020-09-01 00:00:00   Min.   :1964  
##  1st Qu.:2020-09-08 06:00:00   1st Qu.:3530  
##  Median :2020-09-15 12:00:00   Median :3834  
##  Mean   :2020-09-15 12:00:00   Mean   :3818  
##  3rd Qu.:2020-09-22 18:00:00   3rd Qu.:4612  
##  Max.   :2020-09-30 00:00:00   Max.   :4802  
##  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

1.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(datadirawat)

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

pairs(datadirawat, lower.panel=NULL)

1.4. Visualisasi Data Menggunakan scatter.smooth, boxplot dan plot

Fungsi plot() merupakan fungsi umum yang digunakan untuk membuat plot pada R.

plot(datadirawat$Dirawat ~ datadirawat$retail_and_recreation_percent_change_from_baseline, data = datadirawat)

Memvisualisasikan Data dengan Self Isolation sebagai variabel Y dan Google Mobility Index sebagai variabel X

plot(datadirawat$Dirawat ~ datadirawat$
              retail_and_recreation_percent_change_from_baseline+datadirawat$
      grocery_and_pharmacy_percent_change_from_baseline+datadirawat$
      parks_percent_change_from_baseline+datadirawat$
      transit_stations_percent_change_from_baseline+datadirawat$
      workplaces_percent_change_from_baseline+datadirawat$
      residential_percent_change_from_baseline, data = datadirawat)

1.5 Membuat Korelasi Antar Variabel

Korelasi merupakan keterhubungan antar variabel. Untuk mengukur seberapa jauh hubungan antara satu variabel dengan variabel yang lain kita dapat menggunakan fungsi cor().

  1. Korelasi variabel y dengan x1
cor(datadirawat$Dirawat,datadirawat$
      retail_and_recreation_percent_change_from_baseline)
## [1] 0.3679375

Korelasi variabel y dengan x2

cor(datadirawat$Dirawat,datadirawat$
      grocery_and_pharmacy_percent_change_from_baseline)
## [1] -0.116743

Korelasi variabel y dengan x3

cor(datadirawat$Dirawat,datadirawat$
      parks_percent_change_from_baseline)
## [1] 0.218901

Korelasi variabel y dengan x4

cor(datadirawat$Dirawat,datadirawat$
      transit_stations_percent_change_from_baseline)
## [1] 0.1267941

Korelasi variabel y dengan x5

cor(datadirawat$Dirawat,datadirawat$
      workplaces_percent_change_from_baseline)
## [1] 0.04815023

Korelasi variabel y dengan x6

cor(datadirawat$Dirawat,datadirawat$
      residential_percent_change_from_baseline)
## [1] -0.1404836

Dari hasil seluruh output di atas dapat disimpulkan bahwa untuk tingkat keterhubungan antara variabel y dengan x1, x2, x3, x4, dan x5 memiliki hubungan karena nilai yang dihasilkan berjumlah lebih dari 0.3. Sedangkan untuk tingkat keterhubungan antara variabel y dan x6 tidak sangat terhubung karena nilai yang dihasilkan berjumlah kurang dari 0.

1.6 Melakukan Permodelan

Berikut cara melakukan permodelan regresi linier berganda.

model <- lm(datadirawat$Dirawat ~ datadirawat$Tanggal, data = datadirawat)

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 = datadirawat$Dirawat ~ datadirawat$Tanggal, data = datadirawat)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1291.1  -714.7   216.4   619.1  1012.2 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)   
## (Intercept)          1.044e+06  2.863e+05   3.646  0.00108 **
## datadirawat$Tanggal -6.499e-04  1.789e-04  -3.633  0.00111 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 732.8 on 28 degrees of freedom
## Multiple R-squared:  0.3203, Adjusted R-squared:  0.296 
## F-statistic:  13.2 on 1 and 28 DF,  p-value: 0.001115

1.7 Menjelaskan Rincian Model Dengan Fungsi summary()

Di atas merupakan rincian dari model yang telah dibuat.

Di posisi paling atas terdapat lm formula adalah datadirawatPOSITIF 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 = -1291.1

Nilai maximum = 1012.2

Nilai median = 216.4

Nilai quartil 1 = -714.7

Nilai quartil 3 = -619.1  

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:

Multiple R-squared (pelipatan daripada variabel): 0.6423. Hal ini menunjukkan bahwa 0.006423% 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.6295.

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

1.8. Aplikasi Fungsi anova()

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(model)
## Analysis of Variance Table
## 
## Response: datadirawat$Dirawat
##                     Df   Sum Sq Mean Sq F value   Pr(>F)   
## datadirawat$Tanggal  1  7085898 7085898  13.195 0.001115 **
## Residuals           28 15036174  537006                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

1.9. Membuat plot() Model Data Real Dan Data Prediksi

plot(datadirawat$Dirawat ~ datadirawat$
              Tanggal, 
     data = datadirawat, col = "red", pch = 20, cex = 1.5, 
     main = "Data Orang Dirawat Covid-19 di DKI Jakarta dan Google Mobility Index")
abline(model)

Keterangan : ) Titik-titik merah pada grafik merupakan data real ) Garis hitam yang membelah diagonal adalah data prediksi.

plot(cooks.distance(model), pch = 16, col = "blue") 

plot(model)

1.10. Penggunaan AIC dan BIC

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(model)
## [1] 484.8795
BIC(model)
## [1] 489.0831

1.11. Menampilkan Dan Memvisualisasikan Nilai Predicted

head(predict(model), n = 20)
##        1        2        3        4        5        6        7        8 
## 4632.071 4575.921 4519.772 4463.622 4407.472 4351.322 4295.173 4239.023 
##        9       10       11       12       13       14       15       16 
## 4182.873 4126.723 4070.574 4014.424 3958.274 3902.125 3845.975 3789.825 
##       17       18       19       20 
## 3733.675 3677.526 3621.376 3565.226
plot(head(predict(model), n = 20))

1.12. Menampilkan Nilai Residuals

head(resid(model), n = 15)
##           1           2           3           4           5           6 
## -1291.07097 -1007.92125  -810.77152  -636.62180  -730.47208  -269.32236 
##           7           8           9          10          11          12 
##    45.82736   192.97709   371.12681   601.27653   610.42625   669.57597 
##          13          14          15 
##   690.72570   728.87542   622.02514
coef(model)
##         (Intercept) datadirawat$Tanggal 
##        1.043739e+06       -6.498810e-04

1.13. Membuat Tabel Untuk Menambah Data Residuals dan Data Predicted

Pada Tabel di bawah ini memuat proses yang telah dilakukan sebelumnya, sehingga terbuat tabel yang ada nilai residuals dan nilai protected.

datadirawat$residuals <- model$residuals
datadirawat$predicted <- model$fitted.values
datadirawat
## # A tibble: 30 x 10
##    Tanggal             Dirawat retail_and_recreation_percent_c~ grocery_and_pha~
##    <dttm>                <dbl>                            <dbl>            <dbl>
##  1 2020-09-01 00:00:00    3341                              -24               -2
##  2 2020-09-02 00:00:00    3568                              -25               -6
##  3 2020-09-03 00:00:00    3709                              -25               -6
##  4 2020-09-04 00:00:00    3827                              -22               -5
##  5 2020-09-05 00:00:00    3677                              -25               -4
##  6 2020-09-06 00:00:00    4082                              -30              -10
##  7 2020-09-07 00:00:00    4341                              -25               -8
##  8 2020-09-08 00:00:00    4432                              -26               -9
##  9 2020-09-09 00:00:00    4554                              -26              -10
## 10 2020-09-10 00:00:00    4728                              -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>

1.14. Visualisasi Data Menggunakan scatter.smooth, boxplot dan plot

scatter.smooth(x=datadirawat$Tanggal, y=datadirawat$Dirawat, 
               main="Tanggal ~ Dirawat")

boxplot(datadirawat$Dirawat, main="Kasus Dirawat Covid", 
        boxplot.stats(datadirawat$Dirawat)$out)

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

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

1.15. Uji Korelasi Antar Variabel

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(). a) Uji Korelasi Antara Variabel Y Dengan X1

cor.test(datadirawat$
 retail_and_recreation_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$retail_and_recreation_percent_change_from_baseline and datadirawat$Dirawat
## t = 2.0938, df = 28, p-value = 0.04545
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.008840048 0.642976009
## sample estimates:
##       cor 
## 0.3679375
  1. Uji Korelasi Antara Variabel Y Dengan X2
cor.test(datadirawat$
 grocery_and_pharmacy_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$grocery_and_pharmacy_percent_change_from_baseline and datadirawat$Dirawat
## t = -0.622, df = 28, p-value = 0.539
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4577593  0.2542184
## sample estimates:
##       cor 
## -0.116743
  1. Uji Korelasi Antara Variabel Y Dengan X3
cor.test(datadirawat$
 parks_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$parks_percent_change_from_baseline and datadirawat$Dirawat
## t = 1.1871, df = 28, p-value = 0.2452
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1534715  0.5368338
## sample estimates:
##      cor 
## 0.218901
  1. Uji Korelasi Antara Variabel Y Dengan X4
cor.test(datadirawat$
 transit_stations_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$transit_stations_percent_change_from_baseline and datadirawat$Dirawat
## t = 0.67639, df = 28, p-value = 0.5043
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.2446507  0.4657862
## sample estimates:
##       cor 
## 0.1267941
  1. Uji Korelasi Antara Variabel Y Dengan X5
cor.test(datadirawat$
 workplaces_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$workplaces_percent_change_from_baseline and datadirawat$Dirawat
## t = 0.25508, df = 28, p-value = 0.8005
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.3176289  0.4014554
## sample estimates:
##        cor 
## 0.04815023
  1. Uji Korelasi Antara Variabel Y Dengan X6
cor.test(datadirawat$
 residential_percent_change_from_baseline, 
         datadirawat$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  datadirawat$residential_percent_change_from_baseline and datadirawat$Dirawat
## t = -0.75082, df = 28, p-value = 0.459
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4766297  0.2315024
## sample estimates:
##        cor 
## -0.1404836

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.

2. Referensi

https://rpubs.com/suhartono-uinmaliki/877449