Loading libraries

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.2
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.2     ✓ dplyr   1.0.7
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   1.4.0     ✓ forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.0.2
## Warning: package 'tibble' was built under R version 4.0.2
## Warning: package 'tidyr' was built under R version 4.0.2
## Warning: package 'readr' was built under R version 4.0.2
## Warning: package 'dplyr' was built under R version 4.0.2
## Warning: package 'stringr' was built under R version 4.0.2
## Warning: package 'forcats' was built under R version 4.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(readxl)
library(ggplot2)
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
library(ggthemes)
require(scales)
## Loading required package: scales
## Warning: package 'scales' was built under R version 4.0.2
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
require(MASS)
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.0.2
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(gridExtra)
# options("scipen"=100, "digits"=0)

Reading data

temp = read.csv("~/Dropbox/Bao chi/Khoa hoc & Y te/Du bao dich NSW/Weekly data from vietnam.csv")

# Convert character to date 
temp$date = as.Date(temp$Date, "%d/%m/%Y")

temp$Rate = temp$Deaths / temp$Cases * 100 

df = subset(temp, Cases>0)

Segmented regression

library(segmented) 
## Warning: package 'segmented' was built under R version 4.0.2
df1 = subset(df, W.Cases>0)

m1 = lm(log2(W.Cases) ~ Week, data=df1)
seg1 = segmented(m1, seg.Z = ~Week, psi=c(10, 35))

df1$pred = predict(seg1)

ggplot(data=df1, aes(x=date)) + geom_point(aes(y = log2(W.Cases)), color = "darkred") + geom_line(aes(y = pred), color="steelblue", linetype="twodash") + scale_x_date(date_breaks = "1 month", date_minor_breaks = "1 week") + labs(x="Tuần", y="Số ca nhiễm mới mỗi tuần - log2") + theme_economist() + theme(axis.text.x = element_text(angle = 90))

Number of deaths per week

ggplot(data=df, aes(x=date, y=W.Deaths)) + geom_point() + scale_x_date(date_breaks = "1 month", date_minor_breaks = "1 week")  + scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(10^.x))) + labs(x="Tuần", y="Số ca tử vong mỗi tuần") + theme_economist() + theme(axis.text.x = element_text(angle = 90))
## Warning: Transformation introduced infinite values in continuous y-axis
## Warning: Removed 1 rows containing missing values (geom_point).

Tỉ lệ tử vong

ggplot(data=df, aes(x=date, y=Rate)) + geom_point() + scale_x_date(date_breaks = "1 month", date_minor_breaks = "1 week") + labs(x="Tuần", y="Tỉ lệ tử vong (%)") + theme_economist() + theme(axis.text.x = element_text(angle = 90))