Read the data for Italian’s Province:
CV19_pro_backup<- read.csv("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-province/dpc-covid19-ita-province.csv")
Read the data for Italian’s Regions:
CV19_reg_backup<- read.csv("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-regioni/dpc-covid19-ita-regioni.csv")
Create a new data set with selected variables:
data_pro<- CV19_pro_backup%>%
mutate(provincia=denominazione_provincia,regione=denominazione_regione)%>%
select(data,regione,provincia,totale_casi)
data_pro<- data.frame(time= 1:length(CV19_pro_backup$data),
provincia = CV19_pro_backup$denominazione_provincia,
cases = CV19_pro_backup$totale_casi[1:length(CV19_pro_backup$data)] )
head(data_pro)
## time provincia cases
## 1 1 L'Aquila 0
## 2 2 Teramo 0
## 3 3 Pescara 0
## 4 4 Chieti 0
## 5 5 In fase di definizione/aggiornamento 0
## 6 6 Potenza 0
require(stringr)
data_pro_rm<- data_pro %>%
filter(str_detect(provincia, "Roma"))
head(data_pro_rm)
## time provincia cases
## 1 38 Roma 0
## 2 166 Roma 3
## 3 294 Roma 3
## 4 422 Roma 3
## 5 550 Roma 3
## 6 678 Roma 6
data_rm<-data_pro_rm%>%
mutate(times=seq(1,length(cases)), new_cases=c(0,diff(cases)),incidence=round((new_cases/cases)*100,2))%>%
select(times,provincia,cases,new_cases,incidence,-time)
head(data_rm);tail(data_rm)
## times provincia cases new_cases incidence
## 1 1 Roma 0 0 NaN
## 2 2 Roma 3 3 100
## 3 3 Roma 3 0 0
## 4 4 Roma 3 0 0
## 5 5 Roma 3 0 0
## 6 6 Roma 6 3 50
## times provincia cases new_cases incidence
## 218 218 Roma 12265 149 1.21
## 219 219 Roma 12456 191 1.53
## 220 220 Roma 12624 168 1.33
## 221 221 Roma 12857 233 1.81
## 222 222 Roma 13050 193 1.48
## 223 223 Roma 13232 182 1.38
par(mfrow=c(1,2))
plot(density(data_rm$new_cases), main="Covid19 New Cases density")
plot(density(data_rm$cases), main="Covid19 Cases density")
require(ggplot2)
require(zoo)
ggplot(data_rm, aes(times, cases)) +
geom_point(position=position_jitter(1,3), pch=21, fill="#FF0000AA") +
geom_line(aes(y=rollmean(cases, 7, na.pad=TRUE))) +
theme_bw()+labs(x="Time(days)",y="Cases",title="Cumulate cases Covid19 Rome",caption="Data Source: Civil Protection")
ggplot(data_rm, aes(times, new_cases)) +
geom_point(position=position_jitter(1,3), pch=21, fill="#FF0000AA") +
geom_line(aes(y=rollmean(new_cases, 7, na.pad=TRUE))) +
theme_bw()+labs(x="Time(days)",y="New Cases",title="Covid19 Rome number of New cases",caption="Data Source: Civil Protection")
require(forecast)
fit<- auto.arima(data_rm$new_cases,trace=FALSE)
fit
## Series: data_rm$new_cases
## ARIMA(0,1,1)
##
## Coefficients:
## ma1
## -0.4421
## s.e. 0.0626
##
## sigma^2 estimated as 371.2: log likelihood=-971.38
## AIC=1946.76 AICc=1946.82 BIC=1953.57
plot(fit)
plot(forecast(fit,h=17.3), main = paste("Covid19 RM second wave - ARIMA ")) #Bandwidth 17.3
accuracy(fit)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 1.518579 19.18096 12.28423 -Inf Inf 0.9078223 0.01554762
autoplot(fit)
plot(data_rm$new_cases,col="red",main = paste("Covid19 RM second wave - ARIMA "))
lines(fitted(fit),col="Navy")
legend("topleft", legend=c("Covid19 - Rome New Cases curve", "ARIMA-fit"), col=c("red", "Navy"), lty=1:2, cex=0.85,box.lty=0)