Last update 2020-04-18
Projection for the next X days in several countries using a SEIRQRDP model based on Peng et al. 2020. Code adapted (barely) from matlab E. Cheynet’s code
Source code at github
DISCLAIMER Dot not consider these projections seriously. I’m far from being an expert on this field. They were made just for testing and fun.
Argentina
LT <- 10 #1-14 days, latent time in days, incubation period, gamma^(-1)
QT <- 7 #Quarantine time in days, recovery time, infectious period, delta^(-1)
alpha_guess <- 1.0
beta_guess <- 1.0
gamma_guess <- 1 / LT
delta_guess <- 1 / QT
kappa_guess <- 0.01 #dead rate
lambda_guess <- 0.5 # recover rate
region = "Argentina"
population = 40e6
data<-get_jhu_data(region=region,population = population )
#data$cumulative_incidence$infected_cases<-unlist(data$cumulative_incidence[,2] *5)
#data$cumulative_incidence$recovered_cases<-unlist(data$cumulative_incidence[,3] *5)
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-61
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot_arg<-SEIQRDP_plot(forecast_data,region)
plot_arg

Brazil
region="Brazil"
population=21e7
start_date<-(today()-15)
fitted_date<-(start_date+14)
start_date <- start_date %>% format('%m-%d-%Y')
fitted_date <- fitted_date %>% format('%m-%d-%Y')
data<-get_jhu_data(region=region,population = population )
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-30
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot<-SEIQRDP_plot(forecast_data,region)
plot

Italy
start_date<-(today()-18)
fitted_date<-(start_date+15)
start_date <- start_date %>% format('%m-%d-%Y')
fitted_date <- fitted_date %>% format('%m-%d-%Y')
region ="Italy"
population=61e6
data<-get_jhu_data(region=region,population = population )
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-30
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot<-SEIQRDP_plot(forecast_data,region)
plot

Spain
region = "Spain"
population = 46e6
data<-get_jhu_data(region=region,population = population )
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-30
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot<-SEIQRDP_plot(forecast_data,region)
plot

Chile
region ="Chile"
population=18e6
data<-get_jhu_data(region=region,population = population )
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-61
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot_chile<-SEIQRDP_plot(forecast_data,region)
plot_chile

Korea
region ="Korea, South"
population=60e6
data<-get_jhu_data(region=region,population = population )
data_fit<-create_fit_data(data,fitted_date = fitted_date,start_date = start_date)
parameters<-c(alpha_guess,beta_guess,gamma_guess,delta_guess,kappa_guess,lambda_guess)
params<-SEIQRDP_fit(parameters,data_fit)
forecast <-30
forecast_data <- SEIQRDP_predict(forecast,params,data_fit,data)
plot<-SEIQRDP_plot(forecast_data,region)
plot

LS0tCnRpdGxlOiAiWWV0IEFub3RoZXIgQ09WSUQxOSBQcm9qZWN0aW9uIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6IAogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBmaWdfY2FwdGlvbjogeWVzCiAgICBmaWdfd2lkdGg6IDkKLS0tCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGx1YnJpZGF0ZSkKYGBgCgoqTGFzdCB1cGRhdGUgYHIgdG9kYXkoKWAqCgpQcm9qZWN0aW9uIGZvciB0aGUgbmV4dCBYIGRheXMgaW4gc2V2ZXJhbCBjb3VudHJpZXMgdXNpbmcgYSBTRUlSUVJEUCBtb2RlbCBiYXNlZCBvbiBbUGVuZyBldCBhbC4gMjAyMF0oaHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzIwMDIuMDY1NjMucGRmKS4KQ29kZSBhZGFwdGVkIChiYXJlbHkpIGZyb20gbWF0bGFiIFtFLiBDaGV5bmV0J3MgY29kZV0oaHR0cHM6Ly9sYS5tYXRod29ya3MuY29tL21hdGxhYmNlbnRyYWwvZmlsZWV4Y2hhbmdlLzc0NTQ1LWdlbmVyYWxpemVkLXNlaXItZXBpZGVtaWMtbW9kZWwtZml0dGluZy1hbmQtY29tcHV0YXRpb24pCgpTb3VyY2UgY29kZSBhdCBbZ2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vaGFycG9tYXh4L0NPVklEMTkvdHJlZS9tYXN0ZXIvU0VJUVJEUCkKCioqRElTQ0xBSU1FUioqIERvdCBub3QgY29uc2lkZXIgdGhlc2UgcHJvamVjdGlvbnMgc2VyaW91c2x5LiBJJ20gZmFyIGZyb20gYmVpbmcgYW4gZXhwZXJ0IG9uIHRoaXMgZmllbGQuIFRoZXkgd2VyZSBtYWRlIGp1c3QgZm9yIHRlc3RpbmcgYW5kIGZ1bi4gCgpgYGB7ciB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQpzb3VyY2UoIlNFSVFSRFAuUiIpCkxUIDwtIDUgICAgIzEtMTQgZGF5cywgbGF0ZW50IHRpbWUgaW4gZGF5cywgaW5jdWJhdGlvbiBwZXJpb2QsIGdhbW1hXigtMSkgICAKUVQgPC0gNSAgI1F1YXJhbnRpbmUgdGltZSBpbiBkYXlzLCByZWNvdmVyeSB0aW1lLCBpbmZlY3Rpb3VzIHBlcmlvZCwgZGVsdGFeKC0xKQphbHBoYV9ndWVzcyA8LSAxLjAKYmV0YV9ndWVzcyA8LSAxLjAKZ2FtbWFfZ3Vlc3MgPC0gMSAvIExUCmRlbHRhX2d1ZXNzIDwtIDEgLyBRVAprYXBwYV9ndWVzcyA8LSAwLjAxICNkZWFkIHJhdGUKbGFtYmRhX2d1ZXNzIDwtIDAuMDggIyByZWNvdmVyIHJhdGUKCnN0YXJ0X2RhdGU8LSh0b2RheSgpLTE0KSAKZml0dGVkX2RhdGU8LShzdGFydF9kYXRlKzEyKSAKc3RhcnRfZGF0ZSA8LSBzdGFydF9kYXRlICU+JSBmb3JtYXQoJyVtLSVkLSVZJykKZml0dGVkX2RhdGUgPC0gZml0dGVkX2RhdGUgJT4lIGZvcm1hdCgnJW0tJWQtJVknKQpgYGAKCiMgQXJnZW50aW5hCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CkxUIDwtIDEwICAgICMxLTE0IGRheXMsIGxhdGVudCB0aW1lIGluIGRheXMsIGluY3ViYXRpb24gcGVyaW9kLCBnYW1tYV4oLTEpICAgClFUIDwtIDcgICNRdWFyYW50aW5lIHRpbWUgaW4gZGF5cywgcmVjb3ZlcnkgdGltZSwgaW5mZWN0aW91cyBwZXJpb2QsIGRlbHRhXigtMSkKYWxwaGFfZ3Vlc3MgPC0gMS4wCmJldGFfZ3Vlc3MgPC0gMS4wCmdhbW1hX2d1ZXNzIDwtIDEgLyBMVApkZWx0YV9ndWVzcyA8LSAxIC8gUVQKa2FwcGFfZ3Vlc3MgPC0gMC4wMSAjZGVhZCByYXRlCmxhbWJkYV9ndWVzcyA8LSAwLjUgIyByZWNvdmVyIHJhdGUKcmVnaW9uID0gIkFyZ2VudGluYSIKcG9wdWxhdGlvbiA9ICA0MGU2CgpkYXRhPC1nZXRfamh1X2RhdGEocmVnaW9uPXJlZ2lvbixwb3B1bGF0aW9uID0gcG9wdWxhdGlvbiApCiNkYXRhJGN1bXVsYXRpdmVfaW5jaWRlbmNlJGluZmVjdGVkX2Nhc2VzPC11bmxpc3QoZGF0YSRjdW11bGF0aXZlX2luY2lkZW5jZVssMl0gKjUpCiNkYXRhJGN1bXVsYXRpdmVfaW5jaWRlbmNlJHJlY292ZXJlZF9jYXNlczwtdW5saXN0KGRhdGEkY3VtdWxhdGl2ZV9pbmNpZGVuY2VbLDNdICo1KQoKZGF0YV9maXQ8LWNyZWF0ZV9maXRfZGF0YShkYXRhLGZpdHRlZF9kYXRlID0gZml0dGVkX2RhdGUsc3RhcnRfZGF0ZSA9IHN0YXJ0X2RhdGUpCnBhcmFtZXRlcnM8LWMoYWxwaGFfZ3Vlc3MsYmV0YV9ndWVzcyxnYW1tYV9ndWVzcyxkZWx0YV9ndWVzcyxrYXBwYV9ndWVzcyxsYW1iZGFfZ3Vlc3MpCgoKCnBhcmFtczwtU0VJUVJEUF9maXQocGFyYW1ldGVycyxkYXRhX2ZpdCkKZm9yZWNhc3QgPC02MQpmb3JlY2FzdF9kYXRhIDwtIFNFSVFSRFBfcHJlZGljdChmb3JlY2FzdCxwYXJhbXMsZGF0YV9maXQsZGF0YSkKcGxvdF9hcmc8LVNFSVFSRFBfcGxvdChmb3JlY2FzdF9kYXRhLHJlZ2lvbikKCgpwbG90X2FyZyAKCmBgYAoKIyBCcmF6aWwKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KcmVnaW9uPSJCcmF6aWwiCnBvcHVsYXRpb249MjFlNwoKc3RhcnRfZGF0ZTwtKHRvZGF5KCktMTUpIApmaXR0ZWRfZGF0ZTwtKHN0YXJ0X2RhdGUrMTQpIApzdGFydF9kYXRlIDwtIHN0YXJ0X2RhdGUgJT4lIGZvcm1hdCgnJW0tJWQtJVknKQpmaXR0ZWRfZGF0ZSA8LSBmaXR0ZWRfZGF0ZSAlPiUgZm9ybWF0KCclbS0lZC0lWScpCgoKZGF0YTwtZ2V0X2podV9kYXRhKHJlZ2lvbj1yZWdpb24scG9wdWxhdGlvbiA9IHBvcHVsYXRpb24gKQpkYXRhX2ZpdDwtY3JlYXRlX2ZpdF9kYXRhKGRhdGEsZml0dGVkX2RhdGUgPSBmaXR0ZWRfZGF0ZSxzdGFydF9kYXRlID0gc3RhcnRfZGF0ZSkKcGFyYW1ldGVyczwtYyhhbHBoYV9ndWVzcyxiZXRhX2d1ZXNzLGdhbW1hX2d1ZXNzLGRlbHRhX2d1ZXNzLGthcHBhX2d1ZXNzLGxhbWJkYV9ndWVzcykKcGFyYW1zPC1TRUlRUkRQX2ZpdChwYXJhbWV0ZXJzLGRhdGFfZml0KQpmb3JlY2FzdCA8LTMwCmZvcmVjYXN0X2RhdGEgPC0gU0VJUVJEUF9wcmVkaWN0KGZvcmVjYXN0LHBhcmFtcyxkYXRhX2ZpdCxkYXRhKQpwbG90PC1TRUlRUkRQX3Bsb3QoZm9yZWNhc3RfZGF0YSxyZWdpb24pCnBsb3QKYGBgCgojIEl0YWx5CgpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpzdGFydF9kYXRlPC0odG9kYXkoKS0xOCkgCmZpdHRlZF9kYXRlPC0oc3RhcnRfZGF0ZSsxNSkgCnN0YXJ0X2RhdGUgPC0gc3RhcnRfZGF0ZSAlPiUgZm9ybWF0KCclbS0lZC0lWScpCmZpdHRlZF9kYXRlIDwtIGZpdHRlZF9kYXRlICU+JSBmb3JtYXQoJyVtLSVkLSVZJykKcmVnaW9uID0iSXRhbHkiCnBvcHVsYXRpb249NjFlNgpkYXRhPC1nZXRfamh1X2RhdGEocmVnaW9uPXJlZ2lvbixwb3B1bGF0aW9uID0gcG9wdWxhdGlvbiApCmRhdGFfZml0PC1jcmVhdGVfZml0X2RhdGEoZGF0YSxmaXR0ZWRfZGF0ZSA9IGZpdHRlZF9kYXRlLHN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlKQpwYXJhbWV0ZXJzPC1jKGFscGhhX2d1ZXNzLGJldGFfZ3Vlc3MsZ2FtbWFfZ3Vlc3MsZGVsdGFfZ3Vlc3Msa2FwcGFfZ3Vlc3MsbGFtYmRhX2d1ZXNzKQpwYXJhbXM8LVNFSVFSRFBfZml0KHBhcmFtZXRlcnMsZGF0YV9maXQpCmZvcmVjYXN0IDwtMzAKZm9yZWNhc3RfZGF0YSA8LSBTRUlRUkRQX3ByZWRpY3QoZm9yZWNhc3QscGFyYW1zLGRhdGFfZml0LGRhdGEpCnBsb3Q8LVNFSVFSRFBfcGxvdChmb3JlY2FzdF9kYXRhLHJlZ2lvbikKCnBsb3QKYGBgCgojU3BhaW4KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KCgpyZWdpb24gPSAiU3BhaW4iCnBvcHVsYXRpb24gPSA0NmU2CgpkYXRhPC1nZXRfamh1X2RhdGEocmVnaW9uPXJlZ2lvbixwb3B1bGF0aW9uID0gcG9wdWxhdGlvbiApCmRhdGFfZml0PC1jcmVhdGVfZml0X2RhdGEoZGF0YSxmaXR0ZWRfZGF0ZSA9IGZpdHRlZF9kYXRlLHN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlKQpwYXJhbWV0ZXJzPC1jKGFscGhhX2d1ZXNzLGJldGFfZ3Vlc3MsZ2FtbWFfZ3Vlc3MsZGVsdGFfZ3Vlc3Msa2FwcGFfZ3Vlc3MsbGFtYmRhX2d1ZXNzKQpwYXJhbXM8LVNFSVFSRFBfZml0KHBhcmFtZXRlcnMsZGF0YV9maXQpCmZvcmVjYXN0IDwtMzAKZm9yZWNhc3RfZGF0YSA8LSBTRUlRUkRQX3ByZWRpY3QoZm9yZWNhc3QscGFyYW1zLGRhdGFfZml0LGRhdGEpCnBsb3Q8LVNFSVFSRFBfcGxvdChmb3JlY2FzdF9kYXRhLHJlZ2lvbikKCnBsb3QKYGBgCiMgQ2hpbGUKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KcmVnaW9uID0iQ2hpbGUiCnBvcHVsYXRpb249MThlNgpkYXRhPC1nZXRfamh1X2RhdGEocmVnaW9uPXJlZ2lvbixwb3B1bGF0aW9uID0gcG9wdWxhdGlvbiApCmRhdGFfZml0PC1jcmVhdGVfZml0X2RhdGEoZGF0YSxmaXR0ZWRfZGF0ZSA9IGZpdHRlZF9kYXRlLHN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlKQpwYXJhbWV0ZXJzPC1jKGFscGhhX2d1ZXNzLGJldGFfZ3Vlc3MsZ2FtbWFfZ3Vlc3MsZGVsdGFfZ3Vlc3Msa2FwcGFfZ3Vlc3MsbGFtYmRhX2d1ZXNzKQpwYXJhbXM8LVNFSVFSRFBfZml0KHBhcmFtZXRlcnMsZGF0YV9maXQpCmZvcmVjYXN0IDwtNjEKZm9yZWNhc3RfZGF0YSA8LSBTRUlRUkRQX3ByZWRpY3QoZm9yZWNhc3QscGFyYW1zLGRhdGFfZml0LGRhdGEpCnBsb3RfY2hpbGU8LVNFSVFSRFBfcGxvdChmb3JlY2FzdF9kYXRhLHJlZ2lvbikKCnBsb3RfY2hpbGUKYGBgCgojS29yZWEKCmBgYHtyIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnJlZ2lvbiA9IktvcmVhLCBTb3V0aCIKcG9wdWxhdGlvbj02MGU2CmRhdGE8LWdldF9qaHVfZGF0YShyZWdpb249cmVnaW9uLHBvcHVsYXRpb24gPSBwb3B1bGF0aW9uICkKZGF0YV9maXQ8LWNyZWF0ZV9maXRfZGF0YShkYXRhLGZpdHRlZF9kYXRlID0gZml0dGVkX2RhdGUsc3RhcnRfZGF0ZSA9IHN0YXJ0X2RhdGUpCnBhcmFtZXRlcnM8LWMoYWxwaGFfZ3Vlc3MsYmV0YV9ndWVzcyxnYW1tYV9ndWVzcyxkZWx0YV9ndWVzcyxrYXBwYV9ndWVzcyxsYW1iZGFfZ3Vlc3MpCnBhcmFtczwtU0VJUVJEUF9maXQocGFyYW1ldGVycyxkYXRhX2ZpdCkKZm9yZWNhc3QgPC0zMApmb3JlY2FzdF9kYXRhIDwtIFNFSVFSRFBfcHJlZGljdChmb3JlY2FzdCxwYXJhbXMsZGF0YV9maXQsZGF0YSkKcGxvdDwtU0VJUVJEUF9wbG90KGZvcmVjYXN0X2RhdGEscmVnaW9uKQoKcGxvdApgYGAKCgo=