Tugas Kelompok Membuat Regresi Linier Berganda dengan Menggunakan Data Covid DKI Jakarta dan Google Mobility Index pada Bulan Januari 2022

Membangun Regresi Linier Berganda

Regresi Linear Berganda adalah model regresi linear dengan melibatkan lebih dari satu variable bebas atau predictor. Dalam bahasa inggris, istilah ini disebut dengan multiple linear regression.

Mengambil Data dan Menampilkannya

Meng Import data yang telah diubah dari excel

library(readr)
DataCovid19_DKI_Jakarta <- read_csv("DataCovid19 DKI Jakarta.csv")
## Rows: 31 Columns: 15
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr   (3): country_region_code, country_region, Nama Kota
## dbl  (11): retail_and_recreation_percent_change_from_baseline, grocery_and_p...
## date  (1): date
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
DataCovid19_DKI_Jakarta
## # A tibble: 31 x 15
##    country_region_code country_region `Nama Kota` date       retail_and_recreat~
##    <chr>               <chr>          <chr>       <date>                   <dbl>
##  1 ID                  Indonesia      DKI JAKARTA 2022-01-01                   3
##  2 ID                  Indonesia      DKI JAKARTA 2022-01-02                  11
##  3 ID                  Indonesia      DKI JAKARTA 2022-01-03                  14
##  4 ID                  Indonesia      DKI JAKARTA 2022-01-04                  11
##  5 ID                  Indonesia      DKI JAKARTA 2022-01-05                  12
##  6 ID                  Indonesia      DKI JAKARTA 2022-01-06                  10
##  7 ID                  Indonesia      DKI JAKARTA 2022-01-07                   6
##  8 ID                  Indonesia      DKI JAKARTA 2022-01-08                   8
##  9 ID                  Indonesia      DKI JAKARTA 2022-01-09                   7
## 10 ID                  Indonesia      DKI JAKARTA 2022-01-10                   7
## # ... with 21 more rows, and 10 more variables:
## #   grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## #   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>, POSITIF <dbl>,
## #   Dirawat <dbl>, Sembuh <dbl>, Meninggal <dbl>, `Self Isolation` <dbl>

Ringkasan Data

head(): mengecek n (default 6) observasi teratas.

tail(): mengecek n(default 6) observasi terbawah.

str(): mengecek struktur data atau jenis data pada masing-masing kolom. Jenis data yang ada pada R dapat berupa num (numerik), int (integer), Factor(factor), date (tanggal), dan chr (karakter atau string).

summary(): ringkasan data.

Berikut adalah contoh penerapan fungsi-fungsi tersebut pada dataset

Menampilkan Data Teratas

Menampilkan 6 Data teratas

head(DataCovid19_DKI_Jakarta)
## # A tibble: 6 x 15
##   country_region_code country_region `Nama Kota` date       retail_and_recreati~
##   <chr>               <chr>          <chr>       <date>                    <dbl>
## 1 ID                  Indonesia      DKI JAKARTA 2022-01-01                    3
## 2 ID                  Indonesia      DKI JAKARTA 2022-01-02                   11
## 3 ID                  Indonesia      DKI JAKARTA 2022-01-03                   14
## 4 ID                  Indonesia      DKI JAKARTA 2022-01-04                   11
## 5 ID                  Indonesia      DKI JAKARTA 2022-01-05                   12
## 6 ID                  Indonesia      DKI JAKARTA 2022-01-06                   10
## # ... with 10 more variables:
## #   grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## #   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>, POSITIF <dbl>,
## #   Dirawat <dbl>, Sembuh <dbl>, Meninggal <dbl>, `Self Isolation` <dbl>

Menampilkan Data Terbawah

Menampilkan 6 Data Terbawah

tail(DataCovid19_DKI_Jakarta)
## # A tibble: 6 x 15
##   country_region_code country_region `Nama Kota` date       retail_and_recreati~
##   <chr>               <chr>          <chr>       <date>                    <dbl>
## 1 ID                  Indonesia      DKI JAKARTA 2022-01-26                    9
## 2 ID                  Indonesia      DKI JAKARTA 2022-01-27                   10
## 3 ID                  Indonesia      DKI JAKARTA 2022-01-28                    7
## 4 ID                  Indonesia      DKI JAKARTA 2022-01-29                    9
## 5 ID                  Indonesia      DKI JAKARTA 2022-01-30                    8
## 6 ID                  Indonesia      DKI JAKARTA 2022-01-31                   14
## # ... with 10 more variables:
## #   grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## #   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>, POSITIF <dbl>,
## #   Dirawat <dbl>, Sembuh <dbl>, Meninggal <dbl>, `Self Isolation` <dbl>

Command head () & tail () digunakan untuk melihat baris awal dan akhir dari file data csv.

Mengecek Struktur Data

str(DataCovid19_DKI_Jakarta)
## spec_tbl_df [31 x 15] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ country_region_code                               : chr [1:31] "ID" "ID" "ID" "ID" ...
##  $ country_region                                    : chr [1:31] "Indonesia" "Indonesia" "Indonesia" "Indonesia" ...
##  $ Nama Kota                                         : chr [1:31] "DKI JAKARTA" "DKI JAKARTA" "DKI JAKARTA" "DKI JAKARTA" ...
##  $ date                                              : Date[1:31], format: "2022-01-01" "2022-01-02" ...
##  $ retail_and_recreation_percent_change_from_baseline: num [1:31] 3 11 14 11 12 10 6 8 7 7 ...
##  $ grocery_and_pharmacy_percent_change_from_baseline : num [1:31] 24 35 36 33 34 30 25 31 28 27 ...
##  $ parks_percent_change_from_baseline                : num [1:31] 46 28 20 15 17 12 6 10 13 6 ...
##  $ transit_stations_percent_change_from_baseline     : num [1:31] -15 -4 -9 -9 -10 -11 -13 -6 -6 -13 ...
##  $ workplaces_percent_change_from_baseline           : num [1:31] -49 -4 -10 -8 -7 -5 -3 1 2 -4 ...
##  $ residential_percent_change_from_baseline          : num [1:31] 6 3 4 4 4 5 5 3 4 4 ...
##  $ POSITIF                                           : num [1:31] 865415 865518 865690 865805 866064 ...
##  $ Dirawat                                           : num [1:31] 205 116 140 141 168 214 221 257 299 322 ...
##  $ Sembuh                                            : num [1:31] 851280 851386 851408 851449 851520 ...
##  $ Meninggal                                         : num [1:31] 13588 13588 13588 13588 13589 ...
##  $ Self Isolation                                    : num [1:31] 342 428 554 627 787 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   country_region_code = col_character(),
##   ..   country_region = col_character(),
##   ..   `Nama Kota` = col_character(),
##   ..   date = col_date(format = ""),
##   ..   retail_and_recreation_percent_change_from_baseline = col_double(),
##   ..   grocery_and_pharmacy_percent_change_from_baseline = col_double(),
##   ..   parks_percent_change_from_baseline = col_double(),
##   ..   transit_stations_percent_change_from_baseline = col_double(),
##   ..   workplaces_percent_change_from_baseline = col_double(),
##   ..   residential_percent_change_from_baseline = col_double(),
##   ..   POSITIF = col_double(),
##   ..   Dirawat = col_double(),
##   ..   Sembuh = col_double(),
##   ..   Meninggal = col_double(),
##   ..   `Self Isolation` = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>

Mengetahui summary() dari Data

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

summary(DataCovid19_DKI_Jakarta)
##  country_region_code country_region      Nama Kota              date           
##  Length:31           Length:31          Length:31          Min.   :2022-01-01  
##  Class :character    Class :character   Class :character   1st Qu.:2022-01-08  
##  Mode  :character    Mode  :character   Mode  :character   Median :2022-01-16  
##                                                            Mean   :2022-01-16  
##                                                            3rd Qu.:2022-01-23  
##                                                            Max.   :2022-01-31  
##  retail_and_recreation_percent_change_from_baseline
##  Min.   : 1.000                                    
##  1st Qu.: 6.000                                    
##  Median : 7.000                                    
##  Mean   : 7.452                                    
##  3rd Qu.: 9.000                                    
##  Max.   :14.000                                    
##  grocery_and_pharmacy_percent_change_from_baseline
##  Min.   :20.00                                    
##  1st Qu.:25.00                                    
##  Median :26.00                                    
##  Mean   :27.55                                    
##  3rd Qu.:29.50                                    
##  Max.   :36.00                                    
##  parks_percent_change_from_baseline
##  Min.   :-1.00                     
##  1st Qu.: 5.50                     
##  Median : 9.00                     
##  Mean   :10.94                     
##  3rd Qu.:14.00                     
##  Max.   :46.00                     
##  transit_stations_percent_change_from_baseline
##  Min.   :-17.00                               
##  1st Qu.:-15.00                               
##  Median :-14.00                               
##  Mean   :-12.65                               
##  3rd Qu.:-10.00                               
##  Max.   : -4.00                               
##  workplaces_percent_change_from_baseline
##  Min.   :-49.000                        
##  1st Qu.: -4.000                        
##  Median :  0.000                        
##  Mean   : -1.677                        
##  3rd Qu.:  3.000                        
##  Max.   :  8.000                        
##  residential_percent_change_from_baseline    POSITIF          Dirawat    
##  Min.   :3.000                            Min.   :865415   Min.   : 116  
##  1st Qu.:4.500                            1st Qu.:867106   1st Qu.: 278  
##  Median :5.000                            Median :870929   Median : 781  
##  Mean   :5.258                            Mean   :876297   Mean   :1635  
##  3rd Qu.:6.000                            3rd Qu.:880304   3rd Qu.:2126  
##  Max.   :7.000                            Max.   :913355   Max.   :6809  
##      Sembuh         Meninggal     Self Isolation 
##  Min.   :851280   Min.   :13588   Min.   :  342  
##  1st Qu.:851783   1st Qu.:13589   1st Qu.: 1456  
##  Median :853522   Median :13591   Median : 3035  
##  Mean   :855268   Mean   :13598   Mean   : 5749  
##  3rd Qu.:856934   3rd Qu.:13597   3rd Qu.: 7646  
##  Max.   :867519   Max.   :13666   Max.   :25361

Visualisasi Data Covid-19

Visualisasi Data Menggunakan Fungsi plot()

plot(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$date,type = "o",xlab = "Pasien Positif",ylab = "Date")

plot(DataCovid19_DKI_Jakarta$
              retail_and_recreation_percent_change_from_baseline+DataCovid19_DKI_Jakarta$
      grocery_and_pharmacy_percent_change_from_baseline+DataCovid19_DKI_Jakarta$
      parks_percent_change_from_baseline+DataCovid19_DKI_Jakarta$
      transit_stations_percent_change_from_baseline+DataCovid19_DKI_Jakarta$
      workplaces_percent_change_from_baseline+DataCovid19_DKI_Jakarta$
      residential_percent_change_from_baseline+DataCovid19_DKI_Jakarta$Dirawat+DataCovid19_DKI_Jakarta$Sembuh+DataCovid19_DKI_Jakarta$Meninggal~DataCovid19_DKI_Jakarta$date,type="o",data = DataCovid19_DKI_Jakarta)

Histogram dan Density Plot

hist(DataCovid19_DKI_Jakarta$POSITIF, col = "green",xlab = "Positif Covid19",main = "Histogram Data Positif DKI Januari 2022")

Density plot pada R dapat dibuat menggunakan fungsi density(). Berbeda dengan fungsi hist(), fungsi ini tidak langsung menghasilkan grafik densitas. Fungsi density() hanya menghitung kernel densitas pada data. Densitas yang telah dihitung selanjutnya diplotkan menggunakan fungsi plot(). Berikut adalah sintaks dan output yang dihasilkan

# menghitung kernel density
dens <- density(DataCovid19_DKI_Jakarta$POSITIF)

# plot densitas dengan outline merah
plot(dens,col="red",main = "Density Pasien Positif",xlab = "Pasien Positif")

Kita juga dapat menambahkan grafik densitas pada histogram sehingga mempermudah pembacaan pada histogram. Untuk melakukannya kita perlu mengubah kernel histigram dari frekuensi menjadi density dengan menambahkan argumen freq=FALSE pada fungsi hist(). Selanjutnya tambahkan fungsi polygon() untuk memplotkan grafik densitas. Berikut adalah sintak dan output yang dihasilkan

# menghitung kernel density
dens <- density(DataCovid19_DKI_Jakarta$POSITIF)

hist(DataCovid19_DKI_Jakarta$POSITIF, col = "green",xlab = "Positif Covid19",main = "Histogram Data Positif DKI Januari 2022",freq = FALSE)

# tambahkan density plot
polygon(dens, border="red")

Membuat Matriks dengan Fungsi pairs()

Untuk membuat matriks scatterplot kita hanya perlu memasukkan objek datacovidmobility kedalam fungsi pairs(). Berikut adalah sintaks yang digunakan dan output yang dihasilkan

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v dplyr   1.0.8
## v tibble  3.1.6     v stringr 1.4.0
## v tidyr   1.2.0     v forcats 0.5.1
## v purrr   0.3.4
## Warning: package 'stringr' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
df <- DataCovid19_DKI_Jakarta %>% select(-(1:4))
df
## # A tibble: 31 x 11
##    retail_and_recreation_per~ grocery_and_pha~ parks_percent_c~ transit_station~
##                         <dbl>            <dbl>            <dbl>            <dbl>
##  1                          3               24               46              -15
##  2                         11               35               28               -4
##  3                         14               36               20               -9
##  4                         11               33               15               -9
##  5                         12               34               17              -10
##  6                         10               30               12              -11
##  7                          6               25                6              -13
##  8                          8               31               10               -6
##  9                          7               28               13               -6
## 10                          7               27                6              -13
## # ... with 21 more rows, and 7 more variables:
## #   workplaces_percent_change_from_baseline <dbl>,
## #   residential_percent_change_from_baseline <dbl>, POSITIF <dbl>,
## #   Dirawat <dbl>, Sembuh <dbl>, Meninggal <dbl>, `Self Isolation` <dbl>
pairs(df)

Kita dapat melakukan drop terhadap panel bawah grafik tersebut. Untuk melakukannya kita perlu memasukkan argumen lower.panel=NULL.

pairs(df,lower.panel=NULL)

# spesifikasi vaktor warna titik berdasarkan spesies
my_col <- c("#00AFBB", "#E7B800", "#FC4E07")
pairs(df,lower.panel=NULL,col=my_col)

library(ggplot2)
library(reshape2)
## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths
x<-DataCovid19_DKI_Jakarta$date
retail <- DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline
grocery <- DataCovid19_DKI_Jakarta$grocery_and_pharmacy_percent_change_from_baseline
park <- DataCovid19_DKI_Jakarta$parks_percent_change_from_baseline
station <- DataCovid19_DKI_Jakarta$transit_stations_percent_change_from_baseline
workplace <- DataCovid19_DKI_Jakarta$workplaces_percent_change_from_baseline
residental <- DataCovid19_DKI_Jakarta$residential_percent_change_from_baseline
positif<-DataCovid19_DKI_Jakarta$POSITIF
dirawat<-DataCovid19_DKI_Jakarta$Dirawat
sembuh<-DataCovid19_DKI_Jakarta$Sembuh
meninggal<-DataCovid19_DKI_Jakarta$Meninggal
selfIsolation<-DataCovid19_DKI_Jakarta$`Self Isolation`
df <- data.frame(x, retail, grocery, park, station, workplace,residental,positif,dirawat,sembuh,meninggal,selfIsolation  )

# melt the data to a long format
df2 <- melt(data = df, id.vars = "x")

# plot, using the aesthetics argument 'colour'
ggplot(data = df2, aes(x = x, y = value, colour = variable))+
  geom_point() +
  geom_line() + 
  theme(legend.justification = "top") +
  labs(title = "Google Mobility Index", 
         subtitle = "Propinsi DKI Jakarta Indonesia 2022", 
         y = "Mobility", x = "Date") +
theme(axis.text.x = element_text(angle = -90))

Melakukan Uji Korelasi Antar Variabel

Uji Korelasi dengan R

Salah satu uji statistik yang digunakan untuk melihat atau mengukur kekuatan hubungan antara kedua variabel disebut korelasi. Terdapat berbagai macam jenis uji korelasi. Salah satu uji korelasi yang sering digunakan ialah korelasi Pearson Product Mement yang mensyaratkan data paling tidak berupa ukuran skala interval dan berasal dari sampel yang memilki sebaran normal (Ghozali, 2006). Korelasi Pearson

Untuk menyatakan ada atau tidaknya hubungan antara variabel X dengan variabel Y. Terdapat asumsi yang harus dipenuhi yakni data berdistribusi normal, dan data berskala interval atau rasio.

y dengan x1

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline
## t = 1.585, df = 29, p-value = 0.1238
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.07999556  0.57878245
## sample estimates:
##       cor 
## 0.2823479

y dengan x2

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$grocery_and_pharmacy_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$grocery_and_pharmacy_percent_change_from_baseline
## t = 0.69479, df = 29, p-value = 0.4927
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.2371327  0.4613799
## sample estimates:
##       cor 
## 0.1279593

y dengan x3

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$parks_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$parks_percent_change_from_baseline
## t = -0.15994, df = 29, p-value = 0.874
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.3800293  0.3281047
## sample estimates:
##         cor 
## -0.02968685

y dengan x4

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$transit_stations_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$transit_stations_percent_change_from_baseline
## t = -2.1174, df = 29, p-value = 0.04293
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.63758756 -0.01330074
## sample estimates:
##        cor 
## -0.3659163

y dengan x5

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$workplaces_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$workplaces_percent_change_from_baseline
## t = 1.996, df = 29, p-value = 0.0554
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.007752918  0.624923912
## sample estimates:
##      cor 
## 0.347542

y dengan x6

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$residential_percent_change_from_baseline)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$residential_percent_change_from_baseline
## t = 3.2204, df = 29, p-value = 0.00315
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1942268 0.7340820
## sample estimates:
##       cor 
## 0.5132443

y dengan x7

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$Dirawat)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$Dirawat
## t = 99.927, df = 29, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9969631 0.9993090
## sample estimates:
##      cor 
## 0.998551

y dengan x8

cor.test(DataCovid19_DKI_Jakarta$POSITIF,DataCovid19_DKI_Jakarta$Meninggal)
## 
##  Pearson's product-moment correlation
## 
## data:  DataCovid19_DKI_Jakarta$POSITIF and DataCovid19_DKI_Jakarta$Meninggal
## t = 17.618, df = 29, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9105318 0.9789380
## sample estimates:
##       cor 
## 0.9563251

Melakukan Permodelan

Berikut cara melakukan permodelan regresi linier berganda.

library(MASS)
## Warning: package 'MASS' was built under R version 4.1.3
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
model <- lm(DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline ~ DataCovid19_DKI_Jakarta$POSITIF)

Menggunakan Fungsi Summary()

Selain melihat dan memahami stuktur data, eksplorasi data dapat juga dilakukan dengan melihat summary (ringkasan) dari file data yang ada.

summary(model)
## 
## Call:
## lm(formula = DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline ~ 
##     DataCovid19_DKI_Jakarta$POSITIF)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.1721 -1.5504 -0.4148  1.0999  7.2533 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)
## (Intercept)                     -5.078e+01  3.675e+01  -1.382    0.178
## DataCovid19_DKI_Jakarta$POSITIF  6.646e-05  4.193e-05   1.585    0.124
## 
## Residual standard error: 3.011 on 29 degrees of freedom
## Multiple R-squared:  0.07972,    Adjusted R-squared:  0.04799 
## F-statistic: 2.512 on 1 and 29 DF,  p-value: 0.1238

Menggunakan Fungsi anova()

ANOVA (analysis of variance) adalah pengujian yang dilakukan dengan membandingkan varians. Dengan membandingkan varians tersebut, dapat diketahui ada tidaknya perbedaan rata-rata dari tiga atau lebih kelompok. Asumsi normalitas pada ANOVA adalah pada residual yaitu selisih antara Y Prediksi dengan Y Aktual. Tepatnya residual dapat dihitung sebagai berikut: Y Aktual – Y Prediksi. Dimana Y Aktual adalah Y sesungguhnya atau kenyataan. Sedangkan Y prediksi adalah Y hasil persamaan ANOVA.

anova(model)
## Analysis of Variance Table
## 
## Response: DataCovid19_DKI_Jakarta$retail_and_recreation_percent_change_from_baseline
##                                 Df  Sum Sq Mean Sq F value Pr(>F)
## DataCovid19_DKI_Jakarta$POSITIF  1  22.774 22.7743  2.5122 0.1238
## Residuals                       29 262.903  9.0656

Membuat plot() Model dari Data Real dan Data Prediksi

plot(DataCovid19_DKI_Jakarta$POSITIF ~ DataCovid19_DKI_Jakarta$date, 
     data = DataCovid19_DKI_Jakarta, col = "green", pch = 20, cex = 2, 
     main = "Data Covid Self Isolation di DKI Jakarta dan Google Mobility Index")
abline(model) #Add a regression line

plot(model)

Memunculkan Nilai Prediksi

head(predict(model), n = 11)
##        1        2        3        4        5        6        7        8 
## 6.728400 6.735245 6.746675 6.754318 6.771530 6.789275 6.809212 6.827687 
##        9       10       11 
## 6.853805 6.877729 6.913417
plot(head(predict(model), n = 11),type="o",ylab = "Nilai Prediksi")

Memunculkan Nilai Residual

head(resid(model), n = 11)
##          1          2          3          4          5          6          7 
## -3.7283996  4.2647553  7.2533246  4.2456820  5.2284695  3.2107254 -0.8092118 
##          8          9         10         11 
##  1.1723130  0.1461952  0.1222706 -5.9134171
plot(head(resid(model), n = 11),type="o",ylab = "Nilai residual")

Menambahkan data Residual dan Prediksi

DataCovid19_DKI_Jakarta$residuals<-model$residuals
DataCovid19_DKI_Jakarta$predicted<- model$fitted.values
DataCovid19_DKI_Jakarta
## # A tibble: 31 x 17
##    country_region_code country_region `Nama Kota` date       retail_and_recreat~
##    <chr>               <chr>          <chr>       <date>                   <dbl>
##  1 ID                  Indonesia      DKI JAKARTA 2022-01-01                   3
##  2 ID                  Indonesia      DKI JAKARTA 2022-01-02                  11
##  3 ID                  Indonesia      DKI JAKARTA 2022-01-03                  14
##  4 ID                  Indonesia      DKI JAKARTA 2022-01-04                  11
##  5 ID                  Indonesia      DKI JAKARTA 2022-01-05                  12
##  6 ID                  Indonesia      DKI JAKARTA 2022-01-06                  10
##  7 ID                  Indonesia      DKI JAKARTA 2022-01-07                   6
##  8 ID                  Indonesia      DKI JAKARTA 2022-01-08                   8
##  9 ID                  Indonesia      DKI JAKARTA 2022-01-09                   7
## 10 ID                  Indonesia      DKI JAKARTA 2022-01-10                   7
## # ... with 21 more rows, and 12 more variables:
## #   grocery_and_pharmacy_percent_change_from_baseline <dbl>,
## #   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>, POSITIF <dbl>,
## #   Dirawat <dbl>, Sembuh <dbl>, Meninggal <dbl>, `Self Isolation` <dbl>, ...
lmPos=lm(DataCovid19_DKI_Jakarta$workplaces_percent_change_from_baseline~DataCovid19_DKI_Jakarta$POSITIF,data = DataCovid19_DKI_Jakarta)
plot(DataCovid19_DKI_Jakarta,pch=16,col="blue")
abline(lmPos)

summary(lmPos)
## 
## Call:
## lm(formula = DataCovid19_DKI_Jakarta$workplaces_percent_change_from_baseline ~ 
##     DataCovid19_DKI_Jakarta$POSITIF, data = DataCovid19_DKI_Jakarta)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -44.456  -0.226   1.224   3.822   8.343 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)  
## (Intercept)                     -2.325e+02  1.157e+02  -2.010   0.0538 .
## DataCovid19_DKI_Jakarta$POSITIF  2.634e-04  1.320e-04   1.996   0.0554 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.478 on 29 degrees of freedom
## Multiple R-squared:  0.1208, Adjusted R-squared:  0.09047 
## F-statistic: 3.984 on 1 and 29 DF,  p-value: 0.0554