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))
