Teknik Informatika

Universitas Islam Negeri Maulana Malik Ibrahim Malang

Regresi Linier Berganda

Regresi Linear Berganda adalah model regresi linear dengan melibatkan lebih dari satu variable bebas atau predictor. Tujuan dari regresi linier berganda ini untuk memodelkan hubungan linier antara variabel penjelas (independen) dan variabel respon (dependen).

Ambil Data

Import data dari file excel ke Rpubs dengan fungsi read_excel().

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.3
datameninggal <- read_excel(path = "MeninggalDes2020.xlsx")
datameninggal
## # A tibble: 31 x 8
##    Tanggal             Meninggal retail_and_recreation_p~ grocery_and_pharmacy_~
##    <dttm>                  <dbl>                    <dbl>                  <dbl>
##  1 2020-12-01 00:00:00      3287                      -24                      1
##  2 2020-12-02 00:00:00      3266                      -24                     -3
##  3 2020-12-03 00:00:00      3246                      -26                     -6
##  4 2020-12-04 00:00:00      3226                      -23                     -2
##  5 2020-12-05 00:00:00      3204                      -25                     -2
##  6 2020-12-06 00:00:00      3182                      -33                    -13
##  7 2020-12-07 00:00:00      3167                      -28                     -9
##  8 2020-12-08 00:00:00      3146                      -26                     -6
##  9 2020-12-09 00:00:00      3130                      -26                     -9
## 10 2020-12-10 00:00:00      3115                      -27                     -7
## # ... 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 Data

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

summary(datameninggal)
##     Tanggal                      Meninggal   
##  Min.   :2020-12-01 00:00:00   Min.   :2689  
##  1st Qu.:2020-12-08 12:00:00   1st Qu.:2851  
##  Median :2020-12-16 00:00:00   Median :3010  
##  Mean   :2020-12-16 00:00:00   Mean   :2997  
##  3rd Qu.:2020-12-23 12:00:00   3rd Qu.:3138  
##  Max.   :2020-12-31 00:00:00   Max.   :3287  
##  retail_and_recreation_percent_change_from_baseline
##  Min.   :-36.00                                    
##  1st Qu.:-28.50                                    
##  Median :-27.00                                    
##  Mean   :-27.48                                    
##  3rd Qu.:-25.00                                    
##  Max.   :-23.00                                    
##  grocery_and_pharmacy_percent_change_from_baseline
##  Min.   :-17.000                                  
##  1st Qu.: -8.500                                  
##  Median : -6.000                                  
##  Mean   : -6.548                                  
##  3rd Qu.: -3.500                                  
##  Max.   :  1.000                                  
##  parks_percent_change_from_baseline
##  Min.   :-59.00                    
##  1st Qu.:-49.50                    
##  Median :-47.00                    
##  Mean   :-47.52                    
##  3rd Qu.:-45.50                    
##  Max.   :-37.00                    
##  transit_stations_percent_change_from_baseline
##  Min.   :-53.00                               
##  1st Qu.:-39.00                               
##  Median :-36.00                               
##  Mean   :-36.39                               
##  3rd Qu.:-33.50                               
##  Max.   :-27.00                               
##  workplaces_percent_change_from_baseline
##  Min.   :-66.00                         
##  1st Qu.:-32.50                         
##  Median :-30.00                         
##  Mean   :-30.77                         
##  3rd Qu.:-27.50                         
##  Max.   :-10.00                         
##  residential_percent_change_from_baseline
##  Min.   : 6.00                           
##  1st Qu.:10.50                           
##  Median :12.00                           
##  Mean   :11.87                           
##  3rd Qu.:13.00                           
##  Max.   :22.00

Matriks Pairs

pairs(datameninggal)

pairs(datameninggal, lower.panel=NULL)

Visualisasi dengan Fungsi Plot

plot(datameninggal$Meninggal ~ datameninggal$Tanggal, data = datameninggal)

plot(datameninggal$Meninggal ~ datameninggal$
              retail_and_recreation_percent_change_from_baseline+datameninggal$
      grocery_and_pharmacy_percent_change_from_baseline+datameninggal$
      parks_percent_change_from_baseline+datameninggal$
      transit_stations_percent_change_from_baseline+datameninggal$
      workplaces_percent_change_from_baseline+datameninggal$
      residential_percent_change_from_baseline, data = datameninggal)

Korelasi

cor(datameninggal$Meninggal,datameninggal$
      retail_and_recreation_percent_change_from_baseline)
## [1] 0.4762492
cor(datameninggal$Meninggal,datameninggal$
      grocery_and_pharmacy_percent_change_from_baseline)
## [1] 0.2914278
cor(datameninggal$Meninggal,datameninggal$
      parks_percent_change_from_baseline)
## [1] -0.04223129
cor(datameninggal$Meninggal,datameninggal$
      transit_stations_percent_change_from_baseline)
## [1] 0.1923779
cor(datameninggal$Meninggal,datameninggal$
      workplaces_percent_change_from_baseline)
## [1] 0.2676248
cor(datameninggal$Meninggal,datameninggal$
      residential_percent_change_from_baseline)
## [1] -0.2444782

Permodelan

model <- lm(datameninggal$Meninggal ~ datameninggal$Tanggal, data = datameninggal)
summary(model)
## 
## Call:
## lm(formula = datameninggal$Meninggal ~ datameninggal$Tanggal, 
##     data = datameninggal)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -13.7621  -5.6069   0.4831   3.4972  13.3226 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            3.677e+05  2.953e+03   124.5   <2e-16 ***
## datameninggal$Tanggal -2.268e-04  1.836e-06  -123.5   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.902 on 29 degrees of freedom
## Multiple R-squared:  0.9981, Adjusted R-squared:  0.998 
## F-statistic: 1.525e+04 on 1 and 29 DF,  p-value: < 2.2e-16

Fungsi Anova

ANOVA (analysis of variance) yaitu pengujian yang dilakukan dengan membandingkan varians.

anova(model)
## Analysis of Variance Table
## 
## Response: datameninggal$Meninggal
##                       Df Sum Sq Mean Sq F value    Pr(>F)    
## datameninggal$Tanggal  1 952168  952168   15250 < 2.2e-16 ***
## Residuals             29   1811      62                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Plot Data Prediksi dan Data Real

plot(datameninggal$Meninggal ~ datameninggal$
              Tanggal, 
     data = datameninggal, col = "Magenta", pch = 20, cex = 1.5, 
     main = "Data Covid di DKI Jakarta dan Google Mobility Index")
abline(model)

plot(cooks.distance(model), pch = 15, col = "Red")

plot(model)

AIC dan BIC

AIC(model)
## [1] 220.066
BIC(model)
## [1] 224.368

Nilai Predicted

head(predict(model), n = 11)
##        1        2        3        4        5        6        7        8 
## 3290.593 3270.998 3251.404 3231.810 3212.215 3192.621 3173.027 3153.432 
##        9       10       11 
## 3133.838 3114.244 3094.649
plot(head(predict(model), n = 10))

Nilai Residuals

head(resid(model), n = 11)
##           1           2           3           4           5           6 
##  -3.5927419  -4.9983871  -5.4040323  -5.8096774  -8.2153226 -10.6209677 
##           7           8           9          10          11 
##  -6.0266129  -7.4322581  -3.8379032   0.7564516   2.3508065
coef(model)
##           (Intercept) datameninggal$Tanggal 
##          3.676868e+05         -2.267865e-04
datameninggal$residuals <- model$residuals
datameninggal$predicted <- model$fitted.values
datameninggal
## # A tibble: 31 x 10
##    Tanggal             Meninggal retail_and_recreation_p~ grocery_and_pharmacy_~
##    <dttm>                  <dbl>                    <dbl>                  <dbl>
##  1 2020-12-01 00:00:00      3287                      -24                      1
##  2 2020-12-02 00:00:00      3266                      -24                     -3
##  3 2020-12-03 00:00:00      3246                      -26                     -6
##  4 2020-12-04 00:00:00      3226                      -23                     -2
##  5 2020-12-05 00:00:00      3204                      -25                     -2
##  6 2020-12-06 00:00:00      3182                      -33                    -13
##  7 2020-12-07 00:00:00      3167                      -28                     -9
##  8 2020-12-08 00:00:00      3146                      -26                     -6
##  9 2020-12-09 00:00:00      3130                      -26                     -9
## 10 2020-12-10 00:00:00      3115                      -27                     -7
## # ... 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, Boxplot dan Plot untuk visualisasi data

scatter.smooth(x=datameninggal$Tanggal, y=datameninggal$Meninggal, 
               main="Tanggal ~ Meninggal")

boxplot(datameninggal$Meninggal, main="Meninggal", 
        boxplot.stats(datameninggal$Meninggal)$out)

plot(density(datameninggal$Meninggal), main="Google Mobility Index : Pasien Meninggal", 
     ylab="Frekuensi")

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

cor.test(datameninggal$
 retail_and_recreation_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$retail_and_recreation_percent_change_from_baseline and datameninggal$Meninggal
## t = 2.9167, df = 29, p-value = 0.006762
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1466583 0.7106621
## sample estimates:
##       cor 
## 0.4762492
cor.test(datameninggal$
 grocery_and_pharmacy_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$grocery_and_pharmacy_percent_change_from_baseline and datameninggal$Meninggal
## t = 1.6406, df = 29, p-value = 0.1117
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.07015705  0.58532463
## sample estimates:
##       cor 
## 0.2914278
cor.test(datameninggal$
 parks_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$parks_percent_change_from_baseline and datameninggal$Meninggal
## t = -0.22763, df = 29, p-value = 0.8215
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.3907245  0.3168503
## sample estimates:
##         cor 
## -0.04223129
cor.test(datameninggal$
 transit_stations_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$transit_stations_percent_change_from_baseline and datameninggal$Meninggal
## t = 1.0557, df = 29, p-value = 0.2998
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1738104  0.5118281
## sample estimates:
##       cor 
## 0.1923779
cor.test(datameninggal$
 workplaces_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$workplaces_percent_change_from_baseline and datameninggal$Meninggal
## t = 1.4958, df = 29, p-value = 0.1455
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.09580003  0.56809261
## sample estimates:
##       cor 
## 0.2676248
cor.test(datameninggal$
 residential_percent_change_from_baseline, 
         datameninggal$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  datameninggal$residential_percent_change_from_baseline and datameninggal$Meninggal
## t = -1.3578, df = 29, p-value = 0.185
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.5510792  0.1202818
## sample estimates:
##        cor 
## -0.2444782