Universitas :“UIN MAULANA MALIK IBRAHIM MALANG”

Jurusan : “Teknik Informatika”

Penjelasan

Program ini dibuat untuk menganalisa Regresi Linier pada data pasien isolasi covid Mei 2021 yang disandingkan dengan data mobility index di daerah DKI Jakarta.

Langkah 1

Langkah pertama adalah memasukkan tabel data yang akan digunakan kedalam sebuah variable.

library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
Mei <- read_excel(path = "isolasi.xlsx")
Mei
## # A tibble: 31 x 9
##    Nama_provinsi Tanggal             isolasi Retail Grocery  Park Station
##    <chr>         <dttm>                <dbl>  <dbl>   <dbl> <dbl>   <dbl>
##  1 DKI Jakarta   2021-05-01 00:00:00    3533     -6      21   -19     -20
##  2 DKI Jakarta   2021-05-02 00:00:00    3450     -7      19   -27     -22
##  3 DKI Jakarta   2021-05-03 00:00:00    3483     -2      25    -9     -21
##  4 DKI Jakarta   2021-05-04 00:00:00    3247     -3      26    -9     -16
##  5 DKI Jakarta   2021-05-05 00:00:00    3240     -1      27    -7     -16
##  6 DKI Jakarta   2021-05-06 00:00:00    3406     -2      26    -9     -31
##  7 DKI Jakarta   2021-05-07 00:00:00    3485     -2      25   -12     -34
##  8 DKI Jakarta   2021-05-08 00:00:00    3569     -4      25   -20     -33
##  9 DKI Jakarta   2021-05-09 00:00:00    3648     -2      26   -23     -35
## 10 DKI Jakarta   2021-05-10 00:00:00    3723      6      36     1     -31
## # ... with 21 more rows, and 2 more variables: Workplace <dbl>,
## #   Residental <dbl>

Langkah 2

Perintah summary digunakan untuk menampilkan beberapa informasi terkait data yang diberikan seperti: panjang data (length), tipe data (mode), nilai minimal (Min), nilai Maksimal (Max), Quartil 1 (1st Qu), Quartil 3 (3rd Qu), nilai rata-rata (mean), dan nilai tengan (median) setiap kolomnya.

summary(Mei)
##  Nama_provinsi         Tanggal                       isolasi    
##  Length:31          Min.   :2021-05-01 00:00:00   Min.   :3158  
##  Class :character   1st Qu.:2021-05-08 12:00:00   1st Qu.:3404  
##  Mode  :character   Median :2021-05-16 00:00:00   Median :3569  
##                     Mean   :2021-05-16 00:00:00   Mean   :3968  
##                     3rd Qu.:2021-05-23 12:00:00   3rd Qu.:4868  
##                     Max.   :2021-05-31 00:00:00   Max.   :5280  
##      Retail           Grocery           Park            Station      
##  Min.   :-13.000   Min.   : 8.00   Min.   :-27.000   Min.   :-45.00  
##  1st Qu.: -5.000   1st Qu.:18.50   1st Qu.: -8.000   1st Qu.:-31.50  
##  Median : -2.000   Median :23.00   Median :  5.000   Median :-22.00  
##  Mean   : -2.161   Mean   :23.87   Mean   :  3.677   Mean   :-24.32  
##  3rd Qu.: -1.000   3rd Qu.:25.50   3rd Qu.: 14.500   3rd Qu.:-17.50  
##  Max.   :  8.000   Max.   :55.00   Max.   : 34.000   Max.   :-14.00  
##    Workplace        Residental    
##  Min.   :-73.00   Min.   : 2.000  
##  1st Qu.:-35.00   1st Qu.: 5.000  
##  Median :-24.00   Median : 6.000  
##  Mean   :-28.65   Mean   : 6.129  
##  3rd Qu.:-19.50   3rd Qu.: 7.000  
##  Max.   : -4.00   Max.   :12.000

Langkah 3

Langkah 3 adalah menyeleksi data yang akan digunakan, yakni kolom Tanggal dan isolasi.

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.1.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
Mei <- select(Mei, Tanggal, isolasi)
Mei
## # A tibble: 31 x 2
##    Tanggal             isolasi
##    <dttm>                <dbl>
##  1 2021-05-01 00:00:00    3533
##  2 2021-05-02 00:00:00    3450
##  3 2021-05-03 00:00:00    3483
##  4 2021-05-04 00:00:00    3247
##  5 2021-05-05 00:00:00    3240
##  6 2021-05-06 00:00:00    3406
##  7 2021-05-07 00:00:00    3485
##  8 2021-05-08 00:00:00    3569
##  9 2021-05-09 00:00:00    3648
## 10 2021-05-10 00:00:00    3723
## # ... with 21 more rows

Langkah 4

Langkah 4 digunakan untuk membuat graphical parameter

pairs(Mei)

Langkah 5

Langkah 5 merupakan visualisasi dari tabel yang dibuat dimana x adalah kolom tanggal dan y adalah data pasien isolasi.

plot(Mei$isolasi ~ Mei$Tanggal, data = Mei, main="isolasi")

Langkah 6

Langkah 6 digunakan untuk menguban kolom tanggal menjadi tipe numeric

Mei$Tanggal <- as.numeric(Mei$Tanggal)
Mei
## # A tibble: 31 x 2
##       Tanggal isolasi
##         <dbl>   <dbl>
##  1 1619827200    3533
##  2 1619913600    3450
##  3 1620000000    3483
##  4 1620086400    3247
##  5 1620172800    3240
##  6 1620259200    3406
##  7 1620345600    3485
##  8 1620432000    3569
##  9 1620518400    3648
## 10 1620604800    3723
## # ... with 21 more rows

Langkah 7

Perintah disini adalah untuk menampilkan hubungan keterkatan (korelasi) antara data tanggal dan data pasien isolasi. dimanajika mendekati +1 maka korelasi nya sangat kuat.

cor(Mei$isolasi, Mei$Tanggal)
## [1] 0.820758

Langkah 8

Di langkah ke 8 terdapat perintah untuk membuat regresi linier antara data tanggal dan pasien isolasi kemudian menampilkannya hasil koefisien dan kinerja model dengan summarry.

model <- lm(Mei$isolasi ~ Mei$Tanggal)
summary(model)
## 
## Call:
## lm(formula = Mei$isolasi ~ Mei$Tanggal)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -878.6 -230.2  136.7  315.7  597.7 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.287e+06  1.669e+05  -7.713 1.66e-08 ***
## Mei$Tanggal  7.966e-04  1.030e-04   7.737 1.57e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 443 on 29 degrees of freedom
## Multiple R-squared:  0.6736, Adjusted R-squared:  0.6624 
## F-statistic: 59.86 on 1 and 29 DF,  p-value: 1.566e-08

Langkah 9

ANOVA adalah tes statistik untuk memperkirakan bagaimana variabel dependen kuantitatif berubah sesuai dengan tingkat satu atau lebih variabel independen kategoris.

anova(model)
## Analysis of Variance Table
## 
## Response: Mei$isolasi
##             Df   Sum Sq  Mean Sq F value    Pr(>F)    
## Mei$Tanggal  1 11749253 11749253   59.86 1.566e-08 ***
## Residuals   29  5692094   196279                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Langkah 10

Disini dilakukan visualisasi data dengan menampilkan abline (garis regresi) dimana semakin dekat dengan garis maka semakin bagus model.

plot(Mei$isolasi ~ Mei$Tanggal, data = Mei, col = "magenta", pch = 20, cex = 1.7, main = "isolasi")
abline(model, col="blue")

Langkah 10

Disini dilakukan visualisasi perkiraan umum pengaruh titik data dalam regresi linier.

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

Langkah 11

visualisasi model

plot(model)

Langkah 12

Membandingkan kesesuian beberapa model regresi

AIC(model)
## [1] 469.7128

Langkah 13

Membandingkan kesesuian beberapa model regresi namun dengan sensitifitas penalty pemasukan varible baru yang lebih tinggi.

BIC(model)
## [1] 474.0148

Langkah 14

Melakukan prediksi nilai pada model berdasar data input

head(predict(model), n = 11)
##        1        2        3        4        5        6        7        8 
## 2935.321 3004.151 3072.981 3141.811 3210.642 3279.472 3348.302 3417.132 
##        9       10       11 
## 3485.963 3554.793 3623.623

Langkah 15

Melakukan visualisasi dari prediksi nilai model

plot(head(predict(model), n = 11))

Langkah 16

Menampilkan residual dari model. Dimana residual adalah selisih antara nilai sesungguhnya dengan nilai prediksi pada analisis regresi linear, baik berganda maupun sederhana

head(resid(model), n = 11)
##          1          2          3          4          5          6          7 
##  597.67944  445.84919  410.01895  105.18871   29.35847  126.52823  136.69798 
##          8          9         10         11 
##  151.86774  162.03750  168.20726 -133.62298

Langkah 16

Menampilkan koefisien dari model dengan maksud mengukur kemampuan model dalam menerangkan seberapa pengaruh variabel independen secara bersama–sama (stimultan) mempengaruhi variabel dependen yang dapat diindikasikan oleh nilai adjusted R – Squared. Koefisien determinasi menunjukkan sejauh mana kontribusi variabel bebas dalam model regresi mampu menjelaskan variasi dari variabel terikatnya. Koefisien determinasi dapat dilihat melalui nilai R-square (R2) pada tabel Model Summary.

coef(model)
##   (Intercept)   Mei$Tanggal 
## -1.287494e+06  7.966463e-04

Langkah 17

Memasukkan nilai residual dan fitted values kedalam variable baru

Mei$residuals <- model$residuals
Mei$predicted <- model$fitted.values
Mei
## # A tibble: 31 x 4
##       Tanggal isolasi residuals predicted
##         <dbl>   <dbl>     <dbl>     <dbl>
##  1 1619827200    3533     598.      2935.
##  2 1619913600    3450     446.      3004.
##  3 1620000000    3483     410.      3073.
##  4 1620086400    3247     105.      3142.
##  5 1620172800    3240      29.4     3211.
##  6 1620259200    3406     127.      3279.
##  7 1620345600    3485     137.      3348.
##  8 1620432000    3569     152.      3417.
##  9 1620518400    3648     162.      3486.
## 10 1620604800    3723     168.      3555.
## # ... with 21 more rows

Langkah 18

Menciptakan estimasi kepadatan kernel warna halus dari scatterplot R.

scatter.smooth(x=Mei$isolasi, y=Mei$Tanggal, main="isolasi")

Langkah 19

Memebagi data dalam 3 Quartil dan melakukan pengecekan seberapa baik data didistribusikan

boxplot(Mei$isolasi, Mei$Tanggal, main="isolasi", boxplot.stats(Mei$isolasi)$out)

Langkah 20

Membuat visualisasi kepadatan variable dalam mengambil nilai tertentu.

plot(density(Mei$isolasi), main="isolasi", ylab="Frequency")

Langkah 21

Memasukkan koefisien model dalam variable kemudian di visualisasikan dengan menyertakan garis lurus untuk membatu analisa regresi linieer

coefs <- coef(model)
plot(Mei$isolasi ~ Mei$Tanggal, data = Mei)
text(x = 12, y = 10, paste('expression = ', round(coefs[1], 2),  '+', round(coefs[2], 2), '*isolasi'))
abline(coefs, col="blue")

Langkah 22

Mengubah variabel tanggal ke bentuk numerik dan melakukan test korelasi (hubungan) antara variable tanggal dan variable isolasi

Mei$Tanggal <- as.numeric(Mei$Tanggal)
cor.test(Mei$Tanggal, Mei$isolasi)
## 
##  Pearson's product-moment correlation
## 
## data:  Mei$Tanggal and Mei$isolasi
## t = 7.7369, df = 29, p-value = 1.566e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6576931 0.9103448
## sample estimates:
##      cor 
## 0.820758

Referensi

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

https://r-coder.com/density-plot-r/

https://statisticsglobe.com/abline-function-in-r

https://en.wikipedia.org/wiki/Linear_regression