Regresi Linear Smoothing Spline Model
~ Kasus Positif Covid-19 dibandingkan dengan Mobilitas di tempat perbelanjaan dan rekreasi ~
| Oleh | Sofyan Hadi Rahmawan |
| Dosen Pengampu | Prof. Dr M. Suhartono, M.Kom |
| Program | Magister Informatika |
| Tanggal | 24 Mei 2022 |
1. Overview
Smoothing merupakan salah satu metode yang digunakan dalam analisis data non parametrik. Tujuan dari smoothing adalah untuk meminimalkan keragaman karakteristik data dari data yang tidak memiliki pengaruh sehingga ciri-ciri dari data akan tampak lebih jelas.
Smooth Spline Model adalah Salah satu model regresi dengan pendekatan non parametrik yang dapat digunakan untuk menduga kurva regresi adalah regresi spline.
Regresi spline merupakan smoothing untuk memplot data dengan mempertimbangkan kemulusan kurva. Spline adalah model polinomial yang tersegmentasi atau terbagi, dan sifat segmen ini memberikan fleksibilitas yang lebih besar daripada model polinomial biasa. Properti ini memungkinkan model regresi spline untuk secara efektif disesuaikan dengan properti lokal data.
Tujuan dari Analisa Data saat ini adalah membandingkan Kasus Positif Covid-19 dengan pergerakan orang di tempat perbelanjaan dan rekreasi. Masing-masing unsur menggunakan Smooth Spline sehingga akan didapat Regresi Linear diantaranya dan memprediksi adakah hubungan keterikatan antara Kasus Positif Covid-19 dan Lokasi tempat perbelanjaan dan rekreasi.
Sumber Data diambil dari Data Covid-19 DKI Jakarta dari website Pemprov DKI Jakarta dan Google mobility index pada bulan Oktober 2021.
2. Aktivasi Library
Pada Analisa regrresi tiga model memerlukan sejumlah library. Library yang digunakan dalam analisa studi kasus ini antara lain:
readxl: library ini digunakan untuk membaca file xls/xlsxtidyverse: library yang berisi kumpulan fungsi untuk analisa data.skimr: library untuk membuat ringkasan data.npreg: library ini digunakan untuk membuat model ssstats: library ini digunakan untuk membuat model smooth spline
3. Import Dataset
Dataset yang digunakan dalam analisa ini adalah file excell
datacovidDKI.xlsx. Berikut view dataset :
View
Dataset
Cek Struktur Data
## Rows: 31
## Columns: 13
## $ `Nama Kota` <chr> "Jakarta", "Jakarta~
## $ Tanggal <dttm> 2021-10-01, 2021-1~
## $ Positif <dbl> 857916, 858071, 858~
## $ Dirawat <dbl> 504, 483, 500, 461,~
## $ Sembuh <dbl> 842715, 842842, 842~
## $ Meninggal <dbl> 13524, 13529, 13534~
## $ SelfIsolation <dbl> 1173, 1217, 1235, 1~
## $ retail_and_recreation_percent_change_from_baseline <dbl> -9, -11, -13, -17, ~
## $ grocery_and_pharmacy_percent_change_from_baseline <dbl> 16, 17, 11, 5, 9, 6~
## $ parks_percent_change_from_baseline <dbl> -29, -32, -39, -39,~
## $ transit_stations_percent_change_from_baseline <dbl> -33, -24, -25, -34,~
## $ workplaces_percent_change_from_baseline <dbl> -28, -17, -13, -30,~
## $ residential_percent_change_from_baseline <dbl> 10, 4, 4, 10, 10, 1~
Ringkasan Data
| Name | datacovidjkt |
| Number of rows | 31 |
| Number of columns | 13 |
| _______________________ | |
| Column type frequency: | |
| character | 1 |
| numeric | 11 |
| POSIXct | 1 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| Nama Kota | 0 | 1 | 7 | 7 | 0 | 1 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Positif | 0 | 1 | 859866.23 | 1108.04 | 857916 | 858971.0 | 860014 | 860814.5 | 861540 | ▆▆▃▇▇ |
| Dirawat | 0 | 1 | 357.77 | 80.71 | 256 | 289.5 | 348 | 437.0 | 504 | ▇▅▃▅▃ |
| Sembuh | 0 | 1 | 844976.61 | 1373.93 | 842715 | 843780.0 | 845121 | 846120.5 | 847021 | ▇▃▆▆▇ |
| Meninggal | 0 | 1 | 13548.77 | 9.66 | 13524 | 13542.0 | 13551 | 13555.5 | 13562 | ▁▂▂▇▆ |
| SelfIsolation | 0 | 1 | 983.06 | 209.14 | 618 | 849.0 | 978 | 1202.0 | 1285 | ▅▂▇▂▇ |
| retail_and_recreation_percent_change_from_baseline | 0 | 1 | -14.42 | 3.69 | -27 | -16.0 | -15 | -12.5 | -6 | ▁▁▇▅▂ |
| grocery_and_pharmacy_percent_change_from_baseline | 0 | 1 | 6.71 | 5.37 | -10 | 4.0 | 6 | 9.0 | 17 | ▁▁▇▅▃ |
| parks_percent_change_from_baseline | 0 | 1 | -30.77 | 6.65 | -46 | -35.0 | -32 | -26.0 | -15 | ▁▆▇▆▂ |
| transit_stations_percent_change_from_baseline | 0 | 1 | -29.48 | 5.04 | -44 | -32.5 | -31 | -25.0 | -19 | ▁▁▇▃▂ |
| workplaces_percent_change_from_baseline | 0 | 1 | -24.61 | 10.56 | -65 | -28.5 | -27 | -16.0 | -9 | ▁▁▁▇▅ |
| residential_percent_change_from_baseline | 0 | 1 | 8.19 | 3.11 | 3 | 5.0 | 9 | 10.0 | 17 | ▅▁▇▁▁ |
Variable type: POSIXct
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| Tanggal | 0 | 1 | 2021-10-01 | 2021-10-31 | 2021-10-16 | 31 |
4. Analisa Data Kasus Positif Covid-19
Untuk Analisa Data Kasus Positif Covid-19 digunakan lm model dan smooth-spline model serta visualisasi melalui Plot untuk mengetahui Prediksi Covid-19 kasus Positif Covid-19.
Linear Model (lm) merupakan bentuk regresi model yang paling simple, model ini akan memberikan nilai yang menunjukkan antara Tanggal dan Jumlah Pasien yang dirawat dengan visualisasi plot dalam bentuk garis lurus. Dapat dikatakan lm lebih mengarah pada nilai rata rata (mean) dari data set/data test/data real yang diolah.
Smooth Spline Model adalah Salah satu model regresi dengan pendekatan non parametrik yang dapat digunakan untuk menduga kurva regresi adalah regresi spline.
Regresi spline merupakan smoothing untuk memplot data dengan mempertimbangkan kemulusan kurva. Spline adalah model polinomial yang tersegmentasi atau terbagi, dan sifat segmen ini memberikan fleksibilitas yang lebih besar daripada model polinomial biasa.
4.1 Linear Model kasus POSITIF Covid-19
# linear / tren
model.linear <- lm(datacovidjkt$Positif ~ datacovidjkt$Tanggal, data = datacovidjkt)
model.linear##
## Call:
## lm(formula = datacovidjkt$Positif ~ datacovidjkt$Tanggal, data = datacovidjkt)
##
## Coefficients:
## (Intercept) datacovidjkt$Tanggal
## -1.437e+06 1.405e-03
VieW Data Prediksi Linear Model Kasus Positif Covid-19
datacovidjkt$prediksi_model.linear <- model.linear$fitted.values
datacovidjkt$prediksi_model.linear## 1 2 3 4 5 6 7 8
## 858045.2 858166.6 858288.0 858409.4 858530.8 858652.2 858773.6 858895.0
## 9 10 11 12 13 14 15 16
## 859016.4 859137.8 859259.2 859380.6 859502.0 859623.4 859744.8 859866.2
## 17 18 19 20 21 22 23 24
## 859987.6 860109.0 860230.4 860351.8 860473.2 860594.6 860716.0 860837.4
## 25 26 27 28 29 30 31
## 860958.9 861080.3 861201.7 861323.1 861444.5 861565.9 861687.3
4.2 Smooth Spline Model Kasus Positif Covid-19
# fit using smooth.spline
model.sspline <- smooth.spline(datacovidjkt$Tanggal, datacovidjkt$Positif, nknots = 10)
model.sspline## Call:
## smooth.spline(x = datacovidjkt$Tanggal, y = datacovidjkt$Positif,
## nknots = 10)
##
## Smoothing Parameter spar= 0.1678643 lambda= 4.265602e-05 (15 iterations)
## Equivalent Degrees of Freedom (Df): 9.336365
## Penalized Criterion (RSS): 19152.57
## GCV: 1265.104
VieW Data Prediksi Smooth Spline Model Kasus Positif Covid-19
datacovidjkt$prediksi_model.sspline <- model.sspline$y
datacovidjkt$prediksi_model.sspline## [1] 857925.6 858060.3 858189.7 858324.6 858472.3 858624.0 858767.3 858893.7
## [9] 859010.0 859127.2 859256.1 859404.1 859563.6 859723.6 859874.6 860013.6
## [17] 860139.6 860252.4 860355.6 860454.0 860552.4 860654.0 860755.6 860852.6
## [25] 860942.2 861029.0 861119.7 861219.0 861324.7 861432.7 861539.0
4.3 Plot Regresi Linear kasus POSITIF Covid-19
Kasus Positif Covid-19 akan di bandingkan dengan Data Real, Linear Model dan Smooth Spline Model seperti pada gambar dibawah ini
5. Analisa Data Mobility Index DKI Jakarta Tempat perbelanjaan dan rekreasi (retail and recreation)
Untuk Analisa Data Mobility Index Wilayah DKI Jakarta pada tempat perbelanjaan dan rekreasi (retail and recreation) menggunakan lm model dan smooth-spline model serta visualisasi melalui Plot untuk mengetahui Prediksi Mobility Index terhadap berkembangnya kasus Positif Covid 19.
5.1 Linear Model Data Mobility Index DKI Jakarta Tempat perbelanjaan dan rekreasi (retail and recreation)
# linear / tren
model.linear_wp <- lm(datacovidjkt$retail_and_recreation_percent_change_from_baseline ~ datacovidjkt$Tanggal, data = datacovidjkt)
model.linear_wp##
## Call:
## lm(formula = datacovidjkt$retail_and_recreation_percent_change_from_baseline ~
## datacovidjkt$Tanggal, data = datacovidjkt)
##
## Coefficients:
## (Intercept) datacovidjkt$Tanggal
## 4.966e+02 -3.127e-07
VieW Data Prediksi Linear Model Kasus Positif Covid-19
datacovidjkt$prediksi_model.linear_wp <- model.linear_wp$fitted.values
datacovidjkt$prediksi_model.linear_wp## 1 2 3 4 5 6 7 8
## -14.01411 -14.04113 -14.06815 -14.09516 -14.12218 -14.14919 -14.17621 -14.20323
## 9 10 11 12 13 14 15 16
## -14.23024 -14.25726 -14.28427 -14.31129 -14.33831 -14.36532 -14.39234 -14.41935
## 17 18 19 20 21 22 23 24
## -14.44637 -14.47339 -14.50040 -14.52742 -14.55444 -14.58145 -14.60847 -14.63548
## 25 26 27 28 29 30 31
## -14.66250 -14.68952 -14.71653 -14.74355 -14.77056 -14.79758 -14.82460
5.2 Smooth Spline Model Data Mobility Index DKI Jakarta Tempat perbelanjaan dan rekreasi (retail and recreation)
# fit using smooth.spline
model.sspline_wp <- smooth.spline(datacovidjkt$Tanggal, datacovidjkt$retail_and_recreation_percent_change_from_baseline, nknots = 10)
model.sspline_wp## Call:
## smooth.spline(x = datacovidjkt$Tanggal, y = datacovidjkt$retail_and_recreation_percent_change_from_baseline,
## nknots = 10)
##
## Smoothing Parameter spar= 0.1193636 lambda= 1.901493e-05 (12 iterations)
## Equivalent Degrees of Freedom (Df): 10.16714
## Penalized Criterion (RSS): 158.3183
## GCV: 11.30824
VieW Data Prediksi Smooth Spline Model Data Mobility Index DKI Jakarta Tempat perbelanjaan dan rekreasi (retail and recreation)
datacovidjkt$prediksi_model.sspline_wp <- model.sspline_wp$y
datacovidjkt$prediksi_model.sspline_wp## [1] -8.725376 -11.324472 -14.188463 -15.826442 -15.250892 -13.487850
## [7] -12.066740 -12.122922 -13.215491 -14.509480 -15.169918 -14.688052
## [13] -13.859985 -13.808038 -15.264773 -17.403738 -19.008724 -19.172871
## [19] -18.226707 -16.810109 -15.562954 -14.988520 -15.043697 -15.548778
## [25] -16.242399 -16.536582 -15.761693 -13.575149 -10.942570 -9.156626
## [31] -9.509988
5.3 Plot Regresi Linear ata Mobility Index DKI Jakarta Tempat perbelanjaan dan rekreasi (retail and recreation)
Mobility Index di Tempat Bekerja (Workplace) akan di bandingkan dengan Data Real, Linear Model dan Smooth Spline Model seperti pada gambar dibawah ini
Dari visualisasi diatas dengan menggunakan Smooth Spline Model prediksi mobilitas di tempat perbelanjaan dan rekreasi antara -20 dan -10 dengan kurva naik turun yang lebih stabil. Prediksi ini dapat menggambarkan bahwa mobilitas di tempat perbelanjaan dan rekreasi mempunyai angka prediksi yang merata dari tanggal 1 sampai dengan tanggal 31.
6. Korelasi Pearson
Korelasi Pearson adalah alat analisis statistik yang digunakan untuk melihat keeratan hubungan linier antara 2 variabel yang skala datanya adalah interval atau rasio.
Korelasi Pearson Untuk melakukan analisis korelasi Pearson cukup sederhana. Semisal kita ingin mengetahui hubungan antara Kasus Positif Covid-19 dan Mobilitas di Tempat perbelanjaan dan rekreasi (retail and recreation)
cor.test(datacovidjkt$Positif, datacovidjkt$retail_and_recreation_percent_change_from_baseline)##
## Pearson's product-moment correlation
##
## data: datacovidjkt$Positif and datacovidjkt$retail_and_recreation_percent_change_from_baseline
## t = -0.57683, df = 29, p-value = 0.5685
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.4440865 0.2575541
## sample estimates:
## cor
## -0.106506
Dari output tersebut dapat kita simpulkan bahwa hubungan sangat lemah Data Kasus Positif Covid-19 dan Mobilitas di tempat perbelanjaan dan rekreasi (retail and recreation) (p-value -0.4440865 s.d. 0,2575541). Nilai p-value dalam output R dituliskan 0,5685 Nilai koefisien korelasi r adalah sebesar -0.106506 yang menunjukkan hubungan sangat lemah
7. Hasil Regresi antara Kasus Positif Covid 19 dengan Mobility Index Tempat perbelanjaan dan rekreasi (retail and recreation)
Setelah dilakukan analisa untuk masing-masing data, maka kedua data tersebut akan di proses melalu linear model, apakah ada keterikatan antara Kasus Positif dan Mobility Index Tempat perbelanjaan dan rekreasi (retail and recreation).
model_gab <- lm(datacovidjkt$Positif ~ datacovidjkt$retail_and_recreation_percent_change_from_baseline, data = datacovidjkt)
summary(model_gab)##
## Call:
## lm(formula = datacovidjkt$Positif ~ datacovidjkt$retail_and_recreation_percent_change_from_baseline,
## data = datacovidjkt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1777.13 -786.01 71.05 913.76 1814.93
##
## Coefficients:
## Estimate
## (Intercept) 859405.67
## datacovidjkt$retail_and_recreation_percent_change_from_baseline -31.94
## Std. Error
## (Intercept) 823.40
## datacovidjkt$retail_and_recreation_percent_change_from_baseline 55.37
## t value
## (Intercept) 1043.729
## datacovidjkt$retail_and_recreation_percent_change_from_baseline -0.577
## Pr(>|t|)
## (Intercept) <2e-16 ***
## datacovidjkt$retail_and_recreation_percent_change_from_baseline 0.569
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1121 on 29 degrees of freedom
## Multiple R-squared: 0.01134, Adjusted R-squared: -0.02275
## F-statistic: 0.3327 on 1 and 29 DF, p-value: 0.5685
model_gab$coefficients## (Intercept)
## 859405.66848
## datacovidjkt$retail_and_recreation_percent_change_from_baseline
## -31.94022
Rumus linear regresi menjadi y = 859405.67 - 31.94022 data Mobilitas Index di Tempat perbelanjaan dan rekreasi (retail and recreation)
model_gab$fitted.values## 1 2 3 4 5 6 7 8
## 859693.1 859757.0 859820.9 859948.7 859884.8 859884.8 859820.9 859725.1
## 9 10 11 12 13 14 15 16
## 859789.0 859852.8 859916.7 859916.7 859884.8 859884.8 859789.0 859884.8
## 17 18 19 20 21 22 23 24
## 859980.6 860268.1 859916.7 859852.8 859980.6 859820.9 859884.8 859916.7
## 25 26 27 28 29 30 31
## 859916.7 859916.7 860012.5 859852.8 859597.3 859757.0 859725.1
datacovidjkt$prediksi_model_gab <- model_gab$fitted.valuesMenambahkan Histogram dan Menyetarakan Formula Kasus Positif Covid-19 dan Mobilitas di Tempat perbelanjaan dan rekreasi (retail and recreation)
# Menambahkan Histograms
panel.hist <- function(x, ...) {
usr <- par("usr")
on.exit(par(usr))
par(usr = c(usr[1:2], 0, 1.5))
his <- hist(x, plot = FALSE)
breaks <- his$breaks
nB <- length(breaks)
y <- his$counts
y <- y/max(y)
rect(breaks[-nB], 0, breaks[-1], y, col = rgb(0, 0, 1, alpha = 0.5), ...)
# lines(density(x), col = 2, lwd = 2) # Uncomment to add density lines
}
# Menyetarakan berdasarkan formula
pairs(datacovidjkt$Positif ~ datacovidjkt$retail_and_recreation_percent_change_from_baseline, data = datacovidjkt,
upper.panel = NULL, # Disabling the upper panel
diag.panel = panel.hist) # Adding the histograms
Plot Linear Regresi Kasus Covid-19 dengan Mobility Index retail and
recreation (Mobilitas di Tempat perbelanjaan dan rekreasi)
Dari Visualisasi diatas Smooth Spline Model hampir 100% menyamai Data Real, sedangkan Linear Model menunjukkan prediksi positif smakin tajam keatas. Hasil
8. Kesimpulan
Dari Visualisasi Plot untuk RRegresi Linear Smoothing Spline Model untuk Kasus Positif Covid-19 dibandingkan dengan Mobilitas di Tempat perbelanjaan dan rekreasi dapat disimpulkan sebagai berikut :
Bahwa prediksi mobilitas Tempat perbelanjaan dan rekreasi tidak berdampak signifikan terhadap laju kasus Positif Covid-19, pergerakan di Tempat perbelanjaan dan rekreasi relatif stabil
Data diatas belum bisa dijadikan acuan, kapan dilakukan WFH (work from home) dan kapan tidak dilakukan.
Pada tanggal 15 Oktober terjadi x-axis dimana terjadi persilangan antara Data Real, Smooth Spline, dan Linear Model Tempat perbelanjaan dan rekreasi. Namun demikan x-axis ini tidak bisa dijadikan patokan untuk melakukan prediksi keterikatan hubungan kasus Positif dan Mobilitas di Tempat perbelanjaan dan rekreasi.