Data can be obtained from https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide. Read the data using function read.csv.
Here is how a basic forecast could be done:
# packages
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
#########################
### 1. China ############
#########################
china_data = covid19_data[covid19_data$countriesAndTerritories == "China", ]
china_data = china_data[dim(china_data)[1]:1,]
china_data$total_cases = cumsum(china_data$cases)
# fit arima model
china_total_cases_ts = ts(data = china_data$total_cases)
china_total_cases_model = auto.arima(china_total_cases_ts)
plot(forecast(china_total_cases_model), main="Total Cases Forecast (China)",
xlab="Days Passed", ylab="Total Cases")
#########################
### 2. Canada ###########
#########################
# analyze canada
canada_data = covid19_data[covid19_data$countriesAndTerritories == "Canada",]
canada_data = canada_data[dim(canada_data)[1]:1,]
canada_data$total_cases = cumsum(canada_data$cases)
# fit arima model
canada_total_cases_ts = ts(data = canada_data$total_cases)
canada_total_cases_model = auto.arima(canada_total_cases_ts)
plot(forecast(canada_total_cases_model), main="Total Cases Forecast (Canada)",
xlab="Days Passed", ylab="Total Cases")
#########################
### 3. World ############
#########################
world_data = aggregate(cases ~ dateRep, FUN = sum, data=covid19_data)
world_data$dateRep = as.Date(world_data$dateRep, format = "%d/%m/%Y")
world_data = world_data[order(world_data$dateRep),]
world_data$total_cases = cumsum(world_data$cases)
# fit arima.model
world_total_cases_ts = ts(data = world_data$total_cases)
world_total_cases_model = auto.arima(world_total_cases_ts)
plot(forecast(world_total_cases_model), main="Total Cases Forecast (World)",
xlab="Days Passed", ylab="Total Cases")
More complicated models can be done.