Regresi Linear Smoothing Spline Model
~ untuk Kasus Positif Covid-19 dibandingkan dengan Mobilitas di Tempat Kerja ~
| Oleh | Muhammad Isa Ansori (Cak Isa) |
| Dosen Pengampu | Prof. Dr M. Suhartono, M.Kom |
| Program | Magister Informatika |
| Tanggal | 24 April 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 Bekerja. 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 Bekerja.
Sumber Data diambil dari Data Covid-19 DKI Jakarta dari website Pemprov DKI Jakarta dan Google mobility index pada bulan September 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
c19jakartasep21.xlsx. Berikut view dataset :
View
Dataset
Cek Struktur Data
## Rows: 30
## Columns: 12
## $ Tanggal <dttm> 2021-09-01, 2021-0~
## $ Positif <dbl> 851256, 851686, 852~
## $ Dirawat <dbl> 2172, 2043, 1914, 1~
## $ Sembuh <dbl> 831293, 832130, 832~
## $ Meninggal <dbl> 13302, 13312, 13322~
## $ SelfIsolation <dbl> 4489, 4201, 3841, 3~
## $ retail_and_recreation_percent_change_from_baseline <dbl> -21, -20, -18, -21,~
## $ grocery_and_pharmacy_percent_change_from_baseline <dbl> 8, 7, 8, 9, 3, 4, -~
## $ parks_percent_change_from_baseline <dbl> -45, -43, -37, -39,~
## $ transit_stations_percent_change_from_baseline <dbl> -41, -42, -41, -35,~
## $ workplaces_percent_change_from_baseline <dbl> -34, -34, -32, -19,~
## $ residential_percent_change_from_baseline <dbl> 12, 12, 13, 6, 6, 1~
Ringkasan Data
| Name | datacovidjkt |
| Number of rows | 30 |
| Number of columns | 12 |
| _______________________ | |
| Column type frequency: | |
| numeric | 11 |
| POSIXct | 1 |
| ________________________ | |
| Group variables | None |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Positif | 0 | 1 | 855111.87 | 1938.39 | 851256 | 853676.00 | 855512.0 | 856708.75 | 857765 | ▃▃▅▆▇ |
| Dirawat | 0 | 1 | 1155.80 | 499.96 | 510 | 708.75 | 1044.0 | 1521.50 | 2172 | ▇▆▃▃▂ |
| Sembuh | 0 | 1 | 838165.27 | 3344.65 | 831293 | 835821.75 | 838851.0 | 841001.75 | 842541 | ▃▃▃▆▇ |
| Meninggal | 0 | 1 | 13438.00 | 67.81 | 13302 | 13389.25 | 13459.5 | 13492.25 | 13519 | ▃▂▂▅▇ |
| SelfIsolation | 0 | 1 | 2352.80 | 980.40 | 1195 | 1506.00 | 2157.5 | 2943.50 | 4489 | ▇▅▃▃▂ |
| retail_and_recreation_percent_change_from_baseline | 0 | 1 | -20.30 | 3.32 | -28 | -21.00 | -20.0 | -18.00 | -15 | ▁▂▃▇▃ |
| grocery_and_pharmacy_percent_change_from_baseline | 0 | 1 | 3.30 | 4.26 | -8 | 1.00 | 4.0 | 6.00 | 10 | ▁▂▂▇▃ |
| parks_percent_change_from_baseline | 0 | 1 | -41.77 | 4.61 | -55 | -44.75 | -42.0 | -39.00 | -33 | ▁▁▇▅▃ |
| transit_stations_percent_change_from_baseline | 0 | 1 | -37.53 | 3.23 | -44 | -39.00 | -38.0 | -36.00 | -29 | ▃▇▅▂▁ |
| workplaces_percent_change_from_baseline | 0 | 1 | -28.17 | 7.99 | -38 | -34.00 | -31.5 | -21.50 | -12 | ▇▇▁▂▃ |
| residential_percent_change_from_baseline | 0 | 1 | 10.13 | 2.71 | 5 | 7.75 | 11.0 | 12.00 | 15 | ▆▁▇▇▁ |
Variable type: POSIXct
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| Tanggal | 0 | 1 | 2021-09-01 | 2021-09-30 | 2021-09-15 12:00:00 | 30 |
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
## -3.246e+06 2.513e-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
## 851963.0 852180.2 852397.3 852614.5 852831.6 853048.8 853266.0 853483.1
## 9 10 11 12 13 14 15 16
## 853700.3 853917.5 854134.6 854351.8 854569.0 854786.1 855003.3 855220.4
## 17 18 19 20 21 22 23 24
## 855437.6 855654.8 855871.9 856089.1 856306.3 856523.4 856740.6 856957.8
## 25 26 27 28 29 30
## 857174.9 857392.1 857609.3 857826.4 858043.6 858260.7
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.1079872 lambda= 1.476146e-05 (15 iterations)
## Equivalent Degrees of Freedom (Df): 10.40853
## Penalized Criterion (RSS): 22532.71
## GCV: 1761.167
VieW Data Prediksi Smooth Spline Model Kasus Positif Covid-19
datacovidjkt$prediksi_model.sspline <- model.sspline$y
datacovidjkt$prediksi_model.sspline## [1] 851270.6 851668.9 852039.7 852372.7 852664.6 852939.2 853227.2 853548.7
## [9] 853881.7 854193.5 854460.8 854697.1 854924.9 855160.9 855397.5 855621.1
## [17] 855818.2 855980.6 856121.9 856261.4 856413.8 856577.2 856745.0 856911.0
## [25] 857069.3 857214.1 857343.1 857467.5 857602.2 857761.7
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 Kerja (Workplace)
Untuk Analisa Data Mobility Index Wilayah DKI Jakarta pada tempat bekerja (Workplace) 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 Kerja (Workplace)
# linear / tren
model.linear_wp <- lm(datacovidjkt$workplaces_percent_change_from_baseline ~ datacovidjkt$Tanggal, data = datacovidjkt)
model.linear_wp##
## Call:
## lm(formula = datacovidjkt$workplaces_percent_change_from_baseline ~
## datacovidjkt$Tanggal, data = datacovidjkt)
##
## Coefficients:
## (Intercept) datacovidjkt$Tanggal
## -1.805e+03 1.089e-06
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
## -29.53118 -29.43708 -29.34297 -29.24887 -29.15476 -29.06066 -28.96656 -28.87245
## 9 10 11 12 13 14 15 16
## -28.77835 -28.68424 -28.59014 -28.49603 -28.40193 -28.30782 -28.21372 -28.11961
## 17 18 19 20 21 22 23 24
## -28.02551 -27.93141 -27.83730 -27.74320 -27.64909 -27.55499 -27.46088 -27.36678
## 25 26 27 28 29 30
## -27.27267 -27.17857 -27.08446 -26.99036 -26.89626 -26.80215
5.2 Smooth Spline Model Data Mobility Index DKI Jakarta Tempat Kerja (Workplace)
# fit using smooth.spline
model.sspline_wp <- smooth.spline(datacovidjkt$Tanggal, datacovidjkt$workplaces_percent_change_from_baseline, nknots = 10)
model.sspline_wp## Call:
## smooth.spline(x = datacovidjkt$Tanggal, y = datacovidjkt$workplaces_percent_change_from_baseline,
## nknots = 10)
##
## Smoothing Parameter spar= 0.03009667 lambda= 4.037859e-06 (15 iterations)
## Equivalent Degrees of Freedom (Df): 11.33313
## Penalized Criterion (RSS): 852.4748
## GCV: 73.39389
VieW Data Prediksi Smooth Spline Model Data Mobility Index DKI Jakarta Tempat Kerja (Workplace)
datacovidjkt$prediksi_model.sspline_wp <- model.sspline_wp$y
datacovidjkt$prediksi_model.sspline_wp## [1] -34.75214 -35.51306 -26.23032 -18.76028 -21.65700 -30.26543 -36.62821
## [8] -35.03912 -28.79643 -23.44953 -23.13651 -26.35031 -30.17259 -32.24307
## [15] -32.43379 -31.17490 -28.89651 -26.20373 -24.40160 -24.97011 -28.52798
## [22] -32.24868 -32.44440 -26.99562 -20.05609 -17.34786 -22.48398 -30.64136
## [29] -34.88790 -28.29151
5.3 Plot Regresi Linear ata Mobility Index DKI Jakarta Tempat Kerja (Workplace)
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 kerja antara -35 dan -20 dengan kurva naik turun yang lebih stabil. Prediksi ini dapat menggambarkan bahwa mobilitas di tempat kerja mempunyai angka prediksi yang merata dari tanggal 1 sampai dengan tanggal 30.
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 Kerja (Workplace)
cor.test(datacovidjkt$Positif, datacovidjkt$workplaces_percent_change_from_baseline)##
## Pearson's product-moment correlation
##
## data: datacovidjkt$Positif and datacovidjkt$workplaces_percent_change_from_baseline
## t = 0.6283, df = 28, p-value = 0.5349
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2531126 0.4586930
## sample estimates:
## cor
## 0.1179085
Dari output tersebut dapat kita simpulkan bahwa hubungan sangat lemah Data Kasus Positif Covid-19 dan Mobilitas di tempat Kerja (Workplace) (p-value 0 - 0,2). Nilai p-value dalam output R dituliskan 0,5349 Nilai koefisien korelasi r adalah sebesar 0,1179085 yang menunjukkan hubungan sangat lemah
7. Hasil Regresi antara Kasus Positif Covid 19 dengan Mobility Index Tempat Bekerja (Workplace)
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 Bekerja.
model_gab <- lm(datacovidjkt$Positif ~ datacovidjkt$workplaces_percent_change_from_baseline, data = datacovidjkt)
summary(model_gab)##
## Call:
## lm(formula = datacovidjkt$Positif ~ datacovidjkt$workplaces_percent_change_from_baseline,
## data = datacovidjkt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3689.0 -1276.2 541.2 1591.7 2677.0
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 855917.39 1331.03
## datacovidjkt$workplaces_percent_change_from_baseline 28.60 45.52
## t value Pr(>|t|)
## (Intercept) 643.048 <2e-16 ***
## datacovidjkt$workplaces_percent_change_from_baseline 0.628 0.535
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1959 on 28 degrees of freedom
## Multiple R-squared: 0.0139, Adjusted R-squared: -0.02132
## F-statistic: 0.3948 on 1 and 28 DF, p-value: 0.5349
model_gab$coefficients## (Intercept)
## 855917.39329
## datacovidjkt$workplaces_percent_change_from_baseline
## 28.59858
Rumus linear regresi menjadi y = 855917.39 + 28.59858 data Mobilitas Index di Tempat Kerja (Workplace)
model_gab$fitted.values## 1 2 3 4 5 6 7 8
## 854945.0 854945.0 855002.2 855374.0 855517.0 854945.0 854916.4 854945.0
## 9 10 11 12 13 14 15 16
## 854973.6 855030.8 855402.6 855545.6 854945.0 854830.6 854945.0 854945.0
## 17 18 19 20 21 22 23 24
## 855002.2 855402.6 855488.4 854973.6 854945.0 855030.8 855030.8 855088.0
## 25 26 27 28 29 30
## 855459.8 855574.2 855030.8 855002.2 855030.8 855088.0
datacovidjkt$prediksi_model_gab <- model_gab$fitted.valuesMenambahkan Histogram dan Menyetarakan Formula Kasus Positif Covid-19 dan Mobilitas di Tempat Kerja
# 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$workplaces_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 Workplace
(Mobilitas di Tempat Kerja)
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 Kerja dapat disimpulkan sebagai berikut :
Bahwa prediksi mobilitas Tempat Kerja tidak berdampak signifikan terhadap laju kasus Positif Covid-19, pergerakan di Tempat Kerja relatif stabil
Data diatas belum bisa dijadikan acuan, kapan dilakukan WFH (work from home) dan kapan tidak dilakukan.
Pada tanggal 13 September terjadi x-axis dimana terjadi persilangan antara Data Real, Smooth Spline, dan Linear Model Tempat Kerja. Namun demikan x-axis ini tidak bisa dijadikan patokan untuk melakukan prediksi keterikatan hubungan kasus Positif dan Mobilitas di Tempat Kerja.