require(forecast)
require(dplyr)
CV19_backup<- read.csv("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-andamento-nazionale/dpc-covid19-ita-andamento-nazionale.csv")
data<- data.frame(time= 1:length(CV19_backup$data), new_infected = CV19_backup$nuovi_positivi[1:length(CV19_backup$data)] )  #real distribution of new infected

head(data)
##   time new_infected
## 1    1          221
## 2    2           93
## 3    3           78
## 4    4          250
## 5    5          238
## 6    6          240
fit_it <- auto.arima(data$new_infected,1, trace = TRUE, approximation = FALSE)
## 
##  ARIMA(2,1,2) with drift         : 3155.699
##  ARIMA(0,1,0) with drift         : 3205.46
##  ARIMA(1,1,0) with drift         : 3207.502
##  ARIMA(0,1,1) with drift         : 3207.5
##  ARIMA(0,1,0)                    : 3203.629
##  ARIMA(1,1,2) with drift         : 3208.124
##  ARIMA(2,1,1) with drift         : 3207.11
##  ARIMA(3,1,2) with drift         : 3160.35
##  ARIMA(2,1,3) with drift         : 3161.163
##  ARIMA(1,1,1) with drift         : 3209.272
##  ARIMA(1,1,3) with drift         : 3209.305
##  ARIMA(3,1,1) with drift         : 3205.238
##  ARIMA(3,1,3) with drift         : 3159.12
##  ARIMA(2,1,2)                    : 3154.083
##  ARIMA(1,1,2)                    : 3206.311
##  ARIMA(2,1,1)                    : 3205.309
##  ARIMA(3,1,2)                    : 3158.574
##  ARIMA(2,1,3)                    : 3159.383
##  ARIMA(1,1,1)                    : Inf
##  ARIMA(1,1,3)                    : 3207.475
##  ARIMA(3,1,1)                    : 3203.455
##  ARIMA(3,1,3)                    : Inf
## 
##  Best model: ARIMA(2,1,2)
fit_it
## Series: data$new_infected 
## ARIMA(2,1,2) 
## 
## Coefficients:
##          ar1      ar2      ma1     ma2
##       1.2616  -0.9033  -1.4584  0.9345
## s.e.  0.0329   0.0373   0.0380  0.0280
## 
## sigma^2 estimated as 88829:  log likelihood=-1571.9
## AIC=3153.8   AICc=3154.08   BIC=3170.8
accuracy(fit_it)
##                    ME     RMSE      MAE       MPE     MAPE      MASE
## Training set 12.60391 294.6671 190.7224 -3.261075 20.65697 0.8667059
##                     ACF1
## Training set 0.002611845
plot(fit_it)

autoplot(fit_it)

plot( forecast(fit_it,36),main = paste("Covid19 IT second wave - ARIMA "))

plot(data$new_infected,col="red",main = paste("Covid19 IT second wave - ARIMA  "))
lines(fitted(fit_it),col="Navy")
legend("topright", legend=c("New Infection curve", "ARIMA-fit"), col=c("red", "Navy"), lty=1:2, cex=0.85,box.lty=0)