3/28/202
Author : Lia Wahyuliningtyas
Mata Kuliah : Pengantar Konsep Pemrograman Algoritma dan Struktur Data
Magister Teknik Informatika
Dosen Pengampu : Prof Dr Suhartono M.Kom UIN Maulana Malik Ibrahim Malang

library(readxl)
#baca data excel
mobilindexjkt <- read_excel("2021_mobility_jkt_okt.xlsx")
covidjkt <- read_excel("covid_jkt_okt.xlsx")
datagab <- read_excel("datagab.xlsx")
datagab2 <- read_excel("Data_Gab2.xlsx")
retail <- mobilindexjkt$retail_and_recreation_percent_change_from_baseline
grocery <- mobilindexjkt$grocery_and_pharmacy_percent_change_from_baseline
park <- mobilindexjkt$parks_percent_change_from_baseline
station <- mobilindexjkt$transit_stations_percent_change_from_baseline
workplace <- mobilindexjkt$workplaces_percent_change_from_baseline
residental <- mobilindexjkt$residential_percent_change_from_baseline
date <- mobilindexjkt$date
date <- datagab$date
positif <- datagab$positif
retail <- datagab$retail
Positif <- covidjkt$Positif
## Warning: Unknown or uninitialised column: `Positif`.
Dirawat <- covidjkt$Dirawat
Sembuh <- covidjkt$Sembuh
Meninggal <- covidjkt$Meninggal
Isolasi_Mandiri <- covidjkt$SelfIsolation
## Warning: Unknown or uninitialised column: `SelfIsolation`.
Positif <- datagab2$positif
Retail <- datagab2$retail_and_recreation_percent_change_from_baseline
Grocery <- datagab2$grocery_and_pharmacy_percent_change_from_baseline
Park <- datagab2$parks_percent_change_from_baseline
Station <- datagab2$transit_stations_percent_change_from_baseline
Workplace <- datagab2$workplaces_percent_change_from_baseline
Residental <- datagab2$residential_percent_change_from_baseline

#Visualisasi Data Menggunakan Fungsi plot(). #Fungsi plot() merupakan fungsi umum yang digunakan untuk membuat pola pada R.

summary(covidjkt)
##     Tanggal                     Nama_Kota            POSITIF      
##  Min.   :2021-10-01 00:00:00   Length:31          Min.   :857916  
##  1st Qu.:2021-10-08 12:00:00   Class :character   1st Qu.:858971  
##  Median :2021-10-16 00:00:00   Mode  :character   Median :860014  
##  Mean   :2021-10-16 00:00:00                      Mean   :859866  
##  3rd Qu.:2021-10-23 12:00:00                      3rd Qu.:860815  
##  Max.   :2021-10-31 00:00:00                      Max.   :861540  
##     Dirawat          Sembuh         Meninggal     Self Isolation  
##  Min.   :256.0   Min.   :842715   Min.   :13524   Min.   : 618.0  
##  1st Qu.:289.5   1st Qu.:843780   1st Qu.:13542   1st Qu.: 849.0  
##  Median :348.0   Median :845121   Median :13551   Median : 978.0  
##  Mean   :357.8   Mean   :844977   Mean   :13549   Mean   : 983.1  
##  3rd Qu.:437.0   3rd Qu.:846121   3rd Qu.:13556   3rd Qu.:1202.0  
##  Max.   :504.0   Max.   :847021   Max.   :13562   Max.   :1285.0
#dataframe KASUS POSITIF
dataku <- data.frame(date, retail, grocery, park, station, workplace, residental)
library(ggplot2)
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.1.3
dataku1 <- melt(data = dataku, id.vars = "date")
ggplot(data = dataku1, aes(x = date, y = value, colour = variable))+
  geom_point() +
  geom_line() + 
  theme(legend.justification = "top") +
  labs(title = "Grafik Mobility Index", 
       subtitle = "Propinsi DKI Jakarta Indonesia Oktober 2021", 
       y = "Index Mobility", x = "Date") +
  theme(axis.text.x = element_text(angle = -90))

head(datagab2)
## # A tibble: 6 x 8
##   date                positif retail_and_recr~ grocery_and_pha~ parks_percent_c~
##   <dttm>                <dbl>            <dbl>            <dbl>            <dbl>
## 1 2021-10-01 00:00:00  857916               -9               16              -29
## 2 2021-10-02 00:00:00  858071              -11               17              -32
## 3 2021-10-03 00:00:00  858198              -13               11              -39
## 4 2021-10-04 00:00:00  858347              -17                5              -39
## 5 2021-10-05 00:00:00  858419              -15                9              -39
## 6 2021-10-06 00:00:00  858622              -15                6              -35
## # ... with 3 more variables:
## #   transit_stations_percent_change_from_baseline <dbl>,
## #   workplaces_percent_change_from_baseline <dbl>,
## #   residential_percent_change_from_baseline <dbl>
p <- ggplot(datagab2, aes(x = date))
     p <- p + geom_line(aes(y = Positif/10000, colour = "Positif"))
     p <- p + geom_line(aes(y = Park, colour = "park"))
     p <- p + geom_line(aes(y = Retail, colour = "retail"))
     p <- p + geom_line(aes(y = Grocery, colour = "grocery"))
     p <- p + geom_line(aes(y = Station, colour = "station"))
     p <- p + geom_line(aes(y = Workplace, colour = "workplace"))
     p <- p + geom_line(aes(y = Residental, colour = "residental"))
     p <- p + scale_y_continuous(sec.axis = sec_axis(~.*0.1, name = "mobility"))
p

head(datagab)
## # A tibble: 6 x 3
##   date                positif retail
##   <dttm>                <dbl>  <dbl>
## 1 2021-10-01 00:00:00  857916     -9
## 2 2021-10-02 00:00:00  858071    -11
## 3 2021-10-03 00:00:00  858198    -13
## 4 2021-10-04 00:00:00  858347    -17
## 5 2021-10-05 00:00:00  858419    -15
## 6 2021-10-06 00:00:00  858622    -15
p <- ggplot(datagab, aes(x = date))
     p <- p + geom_line(aes(y = Positif/10000, colour = "Positif"))
     p <- p + geom_line(aes(y = Retail, colour = "Retail"))
     p <- p + scale_y_continuous(sec.axis = sec_axis(~.*0.1, name = "Retail"))
p

model <- lm(positif ~ retail)
summary(model)
## 
## Call:
## lm(formula = positif ~ retail)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1777.13  -786.01    71.05   913.76  1814.93 
## 
## Coefficients:
##              Estimate Std. Error  t value Pr(>|t|)    
## (Intercept) 859405.67     823.40 1043.729   <2e-16 ***
## retail         -31.94      55.37   -0.577    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
anova(model)
## Analysis of Variance Table
## 
## Response: positif
##           Df   Sum Sq Mean Sq F value Pr(>F)
## retail     1   417812  417812  0.3327 0.5685
## Residuals 29 36414855 1255685
plot(datagab$positif ~  mobilindexjkt$date, col = "red", pch = 20, cex = 1.5, main = "Kasus Positif Covid 19") 
abline(model)

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

plot(model)

AIC(model)
## [1] 527.2457
BIC(model)
## [1] 531.5477
head(predict(model), n = 30)
##        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 
## 859916.7 859916.7 860012.5 859852.8 859597.3 859757.0
plot(head(predict(model), n = 30))

head(resid(model), n = 30)
##           1           2           3           4           5           6 
## -1777.13043 -1686.01087 -1622.89130 -1601.65217 -1465.77174 -1262.77174 
##           7           8           9          10          11          12 
## -1049.89130  -804.07065  -767.95109  -691.83152  -714.71196  -571.71196 
##          13          14          15          16          17          18 
##  -261.77174  -148.77174    71.04891   129.22826   164.40761   -16.05435 
##          19          20          21          22          23          24 
##   441.28804   608.16848   569.40761   812.10870   864.22826   963.28804 
##          25          26          27          28          29          30 
##  1045.28804  1082.28804  1091.46739  1382.16848  1733.69022  1669.98913
coef(model)
##  (Intercept)       retail 
## 859405.66848    -31.94022
datagab$residuals <- model$residuals

datagab$predicted <- model$fitted.values

datagab
## # A tibble: 31 x 5
##    date                positif retail residuals predicted
##    <dttm>                <dbl>  <dbl>     <dbl>     <dbl>
##  1 2021-10-01 00:00:00  857916     -9    -1777.   859693.
##  2 2021-10-02 00:00:00  858071    -11    -1686.   859757.
##  3 2021-10-03 00:00:00  858198    -13    -1623.   859821.
##  4 2021-10-04 00:00:00  858347    -17    -1602.   859949.
##  5 2021-10-05 00:00:00  858419    -15    -1466.   859885.
##  6 2021-10-06 00:00:00  858622    -15    -1263.   859885.
##  7 2021-10-07 00:00:00  858771    -13    -1050.   859821.
##  8 2021-10-08 00:00:00  858921    -10     -804.   859725.
##  9 2021-10-09 00:00:00  859021    -12     -768.   859789.
## 10 2021-10-10 00:00:00  859161    -14     -692.   859853.
## # ... with 21 more rows
scatter.smooth(x=datagab$date, y=datagab$positif, main="date")

boxplot(datagab$positif, main="positif", boxplot.stats(datagab$positif)$out)


Referensi:
https://riwayat-file-covid-19-dki-jakarta-jakartagis.hub.arcgis.com/
https://www.google.com/covid19/mobility/
https://rpubs.com/suhartono-uinmaliki/870592