From 44bafe6dde3fdc9c2693750b8198931e58e49c8b Mon Sep 17 00:00:00 2001 From: Nick Ruktanonchai Date: Mon, 6 Jul 2020 17:12:48 +0100 Subject: [PATCH] code for EU model running --- bearmod_fx.R => bearmod_fx_dev_EU_version.R | 275 ++-- desktop.ini | 2 + eu_model_init.R | 93 ++ iso2_csv.csv | 250 +++ nuts3_cases_320.csv | 1523 +++++++++++++++++++ pop_data_NPI_startDate_v2.csv | 240 +++ preprocess_data_2015.R | 53 - preprocess_data_EU.R | 71 + preprocess_small.R | 30 - run_model_2015.R | 173 --- run_model_EU_all_runs.R | 108 ++ run_model_small.R | 38 - smartphone_penetration2018.csv | 51 + testmove.csv | 6 - 14 files changed, 2458 insertions(+), 455 deletions(-) rename bearmod_fx.R => bearmod_fx_dev_EU_version.R (57%) create mode 100644 desktop.ini create mode 100644 eu_model_init.R create mode 100644 iso2_csv.csv create mode 100644 nuts3_cases_320.csv create mode 100644 pop_data_NPI_startDate_v2.csv delete mode 100644 preprocess_data_2015.R create mode 100644 preprocess_data_EU.R delete mode 100644 preprocess_small.R delete mode 100644 run_model_2015.R create mode 100644 run_model_EU_all_runs.R delete mode 100644 run_model_small.R create mode 100644 smartphone_penetration2018.csv delete mode 100644 testmove.csv diff --git a/bearmod_fx.R b/bearmod_fx_dev_EU_version.R similarity index 57% rename from bearmod_fx.R rename to bearmod_fx_dev_EU_version.R index 07bbe8f..a81bd0f 100644 --- a/bearmod_fx.R +++ b/bearmod_fx_dev_EU_version.R @@ -1,4 +1,4 @@ -##### BEARmod v.0.92 +##### BEARmod v.0.81 # # Basic Epidemic, Activity, and Response simulation model # @@ -68,13 +68,18 @@ InitiatePop = function(pat_locator,initialInf,initialExp){ nExp = initialExp, nRec = rep(0,NPat), nTotal = pat_locator$pop, - names = pat_locator$patNames, + names = as.character(pat_locator$patNames), IDs = pat_locator$patIDs, relativeInf = rep(1,NPat), nRecoveredToday = rep(0,NPat), nInfectedToday = rep(0,NPat), nExposedToday = rep(0,NPat), nInfMovedToday = rep(0,NPat), + relativeContactRate = rep(1,NPat), + nImportedTodayIntl = rep(0,NPat), + nExportedTodayIntl = rep(0,NPat), + nImportedToday = rep(0,NPat), + nExportedToday = rep(0,NPat), controlled = rep(0,NPat) ) } @@ -82,16 +87,37 @@ InitiatePop = function(pat_locator,initialInf,initialExp){ ##### Epidemic functions: exposure, infectivity, recovery #### recoveryTimeStep = function(HPop, recrate_values,current_day){ recrate = subset(recrate_values,date == current_day)$recrate + HPop$nInf = round(HPop$nInf) #print(recrate)#print(paste0("Day ",current_day, " recovery rate: ", recrate)) for (i in 1:length(HPop$nInf)){ - HPop$nRecoveredToday[i]= sum(rbinom(HPop$nInf[i],1,recrate)) - - - HPop$nInf[i] = HPop$nInf[i] - HPop$nRecoveredToday[i] - HPop$nRec[i] = HPop$nRec[i] + HPop$nRecoveredToday[i] - + #print(HPop$nInf[i]) + # print(recrate) + recrate_new = recrate + #if a nuts3 area had fewer than 100 active cases, we assumed test-and-trace would be able to double the recovery rate (helped quicken pace to local elimination in our simulations) + if (HPop$nInf[i] < 100){ + if (current_day > "2020-03-30"){ + recrate_new = recrate_new * 2 + } + } + HPop$nRecoveredToday[i]= rbinom(1,HPop$nInf[i],recrate_new) +#print(HPop$nRecoveredToday[i]) + HPop$nInf[i] = HPop$nInf[i] - HPop$nRecoveredToday[i] + HPop$nRec[i] = HPop$nRec[i] + HPop$nRecoveredToday[i] + } + for (i in 1:length(HPop$nInf)){ + if (HPop$nRec[i] > HPop$nTotal[i] - HPop$nExp[i] - HPop$nInf[i]){ + HPop$nInf[i] = max(0,HPop$nTotal[i] - HPop$nExp[i] - HPop$nRec[i]) + HPop$nRec[i] = max(0, HPop$nTotal[i] - HPop$nExp[i]- HPop$nInf[i]) + + } + if (HPop$nRec[i] <0 ){ + + HPop$nRec[i] = 0 + } + } + #print(paste0("Number of people recovering: ",sum(HPop$nRecoveredToday))) HPop } @@ -118,7 +144,7 @@ exposedtoinfTimeStep = function(HPop, exp_to_infrate){ HPop } -exposedTimeStep = function(HPop, exposerate_df, current_day, exposed_pop_inf_prop){ +exposedTimeStep = function(HPop, exposerate_df,current_day, exposed_pop_inf_prop){ if (is.numeric(exposerate_df)){ exposerate = exposerate_df @@ -126,11 +152,13 @@ exposedTimeStep = function(HPop, exposerate_df, current_day, exposed_pop_inf_pro if (is.data.frame(exposerate_df)){ exposerate = subset(exposerate_df, date == current_day)$exposerate } + exposerate_relative = HPop$relativeContactRate * exposerate + print(mean(HPop$relativeContactRate)) for (i in 1:length(HPop$nInf)){ infectious_pop = HPop$nInf[i] + exposed_pop_inf_prop * HPop$nExp[i] - infectious_pop = round(infectious_pop) + #print(infectious_pop) #HPop$nExposedToday[i]= sum(rbinom(infectious_pop,1,exposerate)) * (1 - ( (HPop$nInf[i] + HPop$nExp[i]) / HPop$nTotal[i])) - HPop$nExposedToday[i]= sum(rpois(infectious_pop,exposerate)) * (1 - min(1, ( (HPop$nInf[i] + HPop$nExp[i] + HPop$nRec[i]) / HPop$nTotal[i]) )) + HPop$nExposedToday[i]= sum(rpois(infectious_pop,exposerate_relative[i])) * (1 - min(1, ( (HPop$nInf[i] + HPop$nExp[i] + HPop$nRec[i]) / HPop$nTotal[i]) )) if (HPop$nExp[i] + HPop$nExposedToday[i] < HPop$nTotal[i] - HPop$nInf[i] - HPop$nRec[i] ) { @@ -148,82 +176,28 @@ exposedTimeStep = function(HPop, exposerate_df, current_day, exposed_pop_inf_pro } -exposedTimeStep_timespent = function(HPop, exposerate_df, current_day, exposed_pop_inf_prop,ts_data){ - - TS_matrix = matrix(0,NPat,NPat,dimnames=list(patIDs,patIDs)) - daily_move = subset(ts_data,date == current_day) - daily_move = subset(daily_move,!is.na(fr_pat) & !is.na(to_pat) & !is.na(fr_users) & !is.na(movers)) - - daily_move_mat = daily_move[,is.element(names(daily_move),c("fr_pat","to_pat","fr_users","movers"))] - daily_move_mat = as.matrix(daily_move_mat) - col1 = which(colnames(daily_move_mat) == "fr_pat") - col2=which(colnames(daily_move_mat) == "to_pat") - - colmove = which(colnames(daily_move_mat) == "movers") - colusers=which(colnames(daily_move_mat) == "fr_users") - TS_matrix[daily_move_mat[,c(col1,col2)]] = daily_move_mat[,colmove]/daily_move_mat[,colusers] - if (length(which(rowSums(TS_matrix)>1)) > 0){ - print("Warning: row sums > 1 in movement matrix. Correcting...") - correctingrows = which(rowSums(TS_matrix)>1) - for (i in correctingrows){ - TS_matrix[i,] = TS_matrix[i,] /sum(TS_matrix[i,] ) - } - } - for (i in 1:length(patIDs)){ - TS_matrix[i,i] = 1 - sum(TS_matrix[i,-i]) - } - - if (is.numeric(exposerate_df)){ - exposerate = exposerate_df - } - if (is.data.frame(exposerate_df)){ - exposerate = subset(exposerate_df, date == current_day)$exposerate - } - movement_adjusted_infectious_prop = rep(0,length(HPop$nInf)) - for (i in 1:length(HPop$nInf)){ - movement_adjusted_infectious_prop[i] = sum(((HPop$nInf * TS_matrix[,i]) + exposed_pop_inf_prop * sum(( HPop$nExp * TS_matrix[,i])))) / sum(HPop$nTotal * TS_matrix[,i]) - } - susceptible_vec = HPop$nTotal - HPop$nInf - HPop$nExp - HPop$nRec - - probability_infection = 1-exp(-exposerate * movement_adjusted_infectious_prop) - for (i in 1:length(HPop$nInf)){ - susceptible_weighted_pop = round(susceptible_vec[i]*TS_matrix[i,]) - HPop$nExposedToday[i] = sum(rbinom(length(susceptible_weighted_pop),size = susceptible_weighted_pop,prob=probability_infection)) - if (HPop$nExp[i] + HPop$nExposedToday[i] < HPop$nTotal[i] - HPop$nInf[i] - HPop$nRec[i] ) { - HPop$nExp[i] = HPop$nExp[i] + HPop$nExposedToday[i] - - } else { - if (HPop$nExp[i]< 0){print(HPop$nExp[i])} - - HPop$nExposedToday[i] = HPop$nTotal[i] - HPop$nInf[i] - HPop$nExp[i]- HPop$nRec[i] - HPop$nExp[i] = HPop$nTotal[i] - HPop$nInf[i] - HPop$nRec[i] - if (HPop$nExp[i]< 0){print(HPop$nExp[i])} - } - } - - #print(paste0("Number of people newly exposed: ",sum(HPop$nExposedToday))) - HPop -} ####### Activity functions: Human movement #### movementTimeStep = function(HPop, mobmat,day,control_df,prob_move_per_TS){ movement_matrix = matrix(0,NPat,NPat,dimnames=list(patIDs,patIDs)) - daily_move = subset(mobmat,date == day) - - daily_move = subset(daily_move,!is.na(fr_pat) & !is.na(to_pat) & !is.na(fr_users) & !is.na(movers)) + daynew = day + while (length(which(mobmat$date == daynew)) == 0){ + daynew = daynew - days(1) + } + + daily_move = as.data.frame(subset(mobmat,date == daynew)) - daily_move_mat = daily_move[,is.element(names(daily_move),c("fr_pat","to_pat","fr_users","movers"))] + daily_move_mat = daily_move[,is.element(names(daily_move),c("fr_ID","to_ID","movenew"))] daily_move_mat = as.matrix(daily_move_mat) - col1 = which(colnames(daily_move_mat) == "fr_pat") - col2=which(colnames(daily_move_mat) == "to_pat") + col1 = which(colnames(daily_move_mat) == "fr_ID") + col2=which(colnames(daily_move_mat) == "to_ID") - colmove = which(colnames(daily_move_mat) == "movers") - colusers=which(colnames(daily_move_mat) == "fr_users") - movement_matrix[daily_move_mat[,c(col1,col2)]] = daily_move_mat[,colmove]/daily_move_mat[,colusers] + colmove = which(colnames(daily_move_mat) == "movenew") + movement_matrix[daily_move_mat[,c(col1,col2)]] = daily_move_mat[,colmove] if (length(which(rowSums(movement_matrix)>1)) > 0){ - print("Warning: row sums > 1 in movement matrix. Correcting...") + # print("Warning: row sums > 1 in movement matrix. Correcting...") correctingrows = which(rowSums(movement_matrix)>1) for (i in correctingrows){ movement_matrix[i,] = movement_matrix[i,] /sum(movement_matrix[i,] ) @@ -232,10 +206,9 @@ movementTimeStep = function(HPop, mobmat,day,control_df,prob_move_per_TS){ if (prob_move_per_TS > 0){ movement_matrix = movement_matrix*prob_move_per_TS } - for (i in 1:length(patIDs)){ - movement_matrix[i,i] = 1 - sum(movement_matrix[i,-i]) - } + diag(movement_matrix)=NA + diag(movement_matrix) = 1-rowSums(movement_matrix,na.rm=T) HPop$controlled = rep(0,length(HPop$names)) if (length(which(control_df$date == day)) > 0){ control_df_sub = subset(control_df,date == day) @@ -250,9 +223,8 @@ movementTimeStep = function(HPop, mobmat,day,control_df,prob_move_per_TS){ movement_matrix = stopMovement(HPop,movement_matrix,day) } #deterministic version - #HPop$nInfMovedToday = colSums(diag(HPop$nInf) %*% movement_matrix) - HPop$nInf - #HPop$nInf = colSums(diag(HPop$nInf) %*% movement_matrix) HPop$nInf = round(HPop$nInf) + # stochastic version z <- rbinom(n=NPat^2,size = rep(HPop$nInf,each=NPat),prob = t(movement_matrix)[]) moved_matrix = t(matrix(z,NPat,NPat,dimnames=list(patIDs,patIDs))) @@ -261,55 +233,88 @@ movementTimeStep = function(HPop, mobmat,day,control_df,prob_move_per_TS){ moved_matrix[i,] = moved_matrix[i,]/sum(moved_matrix[i,]) * HPop$nInf[i] } } - #print(sum(moved_matrix)) - #print(sum(HPop$nInf)) diag(moved_matrix)=0 + #print(sum(moved_matrix)) HPop$nInfMovedToday = colSums(moved_matrix) HPop$nInf = HPop$nInf - rowSums(moved_matrix) + colSums(moved_matrix) - #print(max((HPop$nInf + HPop$nRec + HPop$nExp)/HPop$nTotal)) + + for (i in 1:length(HPop$nImportedTodayIntl)){ + HPop$nImportedTodayIntl[i] = sum(moved_matrix[which(HPop$country != HPop$country[i]),i]) + HPop$nExportedTodayIntl[i] = sum(moved_matrix[i,which(HPop$country != HPop$country[i])]) + } + HPop$nImportedToday = colSums(moved_matrix) + HPop$nExportedToday = rowSums(moved_matrix) #quick fix for (i in 1:length(HPop$nInf)){ if (HPop$nInf[i] > HPop$nTotal[i] - HPop$nExp[i] - HPop$nRec[i]){ HPop$nRec[i] = max(0, HPop$nTotal[i] - HPop$nExp[i]- HPop$nInf[i]) - HPop$nInf[i] = HPop$nTotal[i] - HPop$nExp[i] - HPop$nRec[i] + HPop$nInf[i] = max(0,HPop$nTotal[i] - HPop$nExp[i] - HPop$nRec[i]) } if (HPop$nInf[i] <0 ){ HPop$nInf[i] = 0 } } - + #(max((HPop$nInf + HPop$nRec + HPop$nExp)/HPop$nTotal)) #print(paste0("Number of infected people moving: ",sum(abs(HPop$nInfMovedToday))/2)) - HPop + list(HPop=HPop,moved_matrix=moved_matrix) } ###### Response functions: Control #relative_movement is the proportion of original movement out/in that we want to keep -- ie. .1 = 10% of original movement rate stopMovement = function(HPop,mobmat,current_date){ + stopping = which(HPop$controlled > 0) - if (length(stopping) > 0){ - # print(paste("stopping movement in patches", HPop$names[stopping])) - for (ctrl_pat in stopping){ - control_patches = HPop$IDs[ctrl_pat] - mobmat[control_patches,] = mobmat[control_patches,] * HPop$controlled[ctrl_pat] - mobmat[,control_patches] = mobmat[,control_patches] * HPop$controlled[ctrl_pat] - for (i in 1:length(HPop$IDs)){ - mobmat[i,i] = 1 - sum(mobmat[i,-i]) - } + if (length(stopping) > 0){ + #print(paste("Stopping movement in ",length(HPop$names[stopping]), " of ", length(HPop$nInf))) + for (ctrl_pat in stopping){ + control_patches = HPop$IDs[ctrl_pat] + mobmat[control_patches,] = mobmat[control_patches,] * HPop$controlled[ctrl_pat] + mobmat[,control_patches] = mobmat[,control_patches] * HPop$controlled[ctrl_pat] + } + diag(mobmat)=NA + if (sum(rowSums(mobmat,na.rm=T)>1) > 0 ){ + #print("Warning: row sums > 1 in movement matrix during stopMovement. Correcting...") + correctingrows = which(rowSums(mobmat,na.rm=T)>1) + for (i in correctingrows){ + print(sum(mobmat[i,])) + + mobmat[i,] = mobmat[i,] /sum(mobmat[i,] ) } - } - mobmat + } + diag(mobmat) = 1-rowSums(mobmat,na.rm=T) + } + mobmat } +reduceContacts = function(HPop,contact_reduction_df,current_date){ + daynew = current_date + while (length(which(contact_reduction_df$date == daynew)) == 0){ + daynew = daynew - days(1) + } + + HPop$relativeContactRate = rep(1,length(HPop$names)) + contact_reduction_df_sub = subset(contact_reduction_df,date == daynew) + if (dim(contact_reduction_df_sub)[1] > 0){ + #print(paste("Reducing contacts in ",length(contact_reduction_df_sub$from), " of ", length(HPop$nInf))) + for (i in 1:dim(contact_reduction_df_sub)[1]){ + HPop$relativeContactRate[which(HPop$names == contact_reduction_df_sub$from[i])] = contact_reduction_df_sub$relative_contact[i] + + } + } + + HPop +} + ###### Master function #### -runSim = function(HPop,pat_info,control_info,mobmat,day_list,recrate_values,exposerate_df,exposepd,exposed_pop_inf_prop = 0,TSinday = 1,prob_move_per_TS=0) { +runSim_new = function(HPop,pat_info,movement_reduction_dfnold, contact_reduction_dfnold,movement_reduction_dfld, contact_reduction_dfld,mobmat,day_list,recrate_values,exposerate_df,exposepd,exposed_pop_inf_prop = 0,TSinday = 1,prob_move_per_TS=0) { epidemic_curve <- data.frame(Date=as.Date(character()), @@ -332,82 +337,42 @@ runSim = function(HPop,pat_info,control_info,mobmat,day_list,recrate_values,expo exposerate_df$exposerate = exposerate_df$exposerate/TSinday } } - + total_movement = matrix(0,length(HPop$nInf),length(HPop$nInf)) all_spread = matrix(0,length(day_list),length(HPop$nInf)) + all_spread_total = matrix(0,length(day_list),length(HPop$nInf)) all_spread_today = matrix(0,length(day_list),length(HPop$nInf)) colnames(all_spread) = HPop$names + colnames(all_spread_total) = HPop$names + colnames(all_spread_today) = HPop$names #print(all_dates) for (current_day in 1:length(day_list)){ for (current_TS in 1:TSinday){ - print(day_list[current_day]) + #print() HPop = recoveryTimeStep(HPop,recrate_values,day_list[current_day]) HPop = exposedtoinfTimeStep(HPop,1/exposepd) - - + HPop = reduceContacts(HPop,contact_reduction_df,day_list[current_day]) HPop = exposedTimeStep(HPop,exposerate_df, day_list[current_day], exposed_pop_inf_prop) - - HPop = movementTimeStep(HPop,mobmat,day_list[current_day],control_info,prob_move_per_TS) - - print(paste("inf: ",sum(HPop$nInf)," exp:",sum(HPop$nExp), "rec: ",sum(HPop$nRec))) + outmove = movementTimeStep(HPop,mobmat,day_list[current_day],movement_reduction_df,prob_move_per_TS) + HPop = outmove$HPop + today_movement = outmove$moved_matrix + total_movement = total_movement + today_movement } + print(paste(day_list[current_day],"inf: ",sum(HPop$nInf)," exp:",sum(HPop$nExp), "rec: ",sum(HPop$nRec))) #save(HPop,file=paste(current_day,".RData")) epidemic_curve = rbind(epidemic_curve,data.frame(Date = day_list[current_day], inf = sum(HPop$nInf))) all_spread[current_day,] = HPop$nInf + all_spread_total[current_day,] = HPop$nInf + HPop$nRec all_spread_today[current_day,] = HPop$nInfectedToday } all_spread_2 = data.frame(dates = day_list,runday = 1:length(day_list)) all_spread_2= cbind(all_spread_2,all_spread) + all_spread_total_2 = data.frame(dates = day_list,runday = 1:length(day_list)) + all_spread_total_2= cbind(all_spread_total_2,all_spread_total) all_spread_today_2 = data.frame(dates = day_list,runday = 1:length(day_list)) all_spread_today_2= cbind(all_spread_today_2,all_spread_today) - list(HPop = HPop,epidemic_curve = epidemic_curve,all_spread=all_spread_2,all_spread_today = all_spread_today_2) + list(HPop = HPop,epidemic_curve = epidemic_curve,all_spread=all_spread_2,all_spread_today = all_spread_today_2,today_movement = today_movement,total_movement = total_movement,all_spread_total = all_spread_total_2) } - -runSim_timespent = function(HPop,pat_info,control_info,TS_data,day_list,recrate_values,exposerate_df,exposepd,exposed_pop_inf_prop = 0,TSinday = 1) { - - - epidemic_curve <- data.frame(Date=as.Date(character()), - inf=c(), - stringsAsFactors=FALSE) - - if (TSinday > 1){ - #recrate_values$recrate = 1-(1-recrate_values$recrate)^(1/TSinday) - exposetoinfrate = 1/exposepd - exposepd = 1/(1 - exp(log(1-exposetoinfrate) / TSinday)) - #recrate_values$recrate = 1 - ((1 - recrate_values$recrate) ^ (1/TSinday)) - recrate_values$recrate = 1 - exp(log(1-recrate_values$recrate) / TSinday) - if (is.numeric(exposerate_df)){ - # exposerate_df = 1-(1-exposerate_df)^(1/TSinday) - exposerate_df = exposerate_df/TSinday - # recrate_values$recrate = 1 - ((1 - recrate_values$recrate) ^ (1/TSinday)) - } - if (is.data.frame(exposerate_df)){ - # exposerate_df$exposerate = 1-(1-exposerate_df$exposerate)^(1/TSinday) - exposerate_df$exposerate = exposerate_df$exposerate/TSinday - } - } - - all_spread = matrix(0,length(day_list),length(HPop$nInf)) - colnames(all_spread) = HPop$names - #print(all_dates) - for (current_day in 1:length(day_list)){ - for (current_TS in 1:TSinday){ - print(day_list[current_day]) - HPop = recoveryTimeStep(HPop,recrate_values,day_list[current_day]) - HPop = exposedtoinfTimeStep(HPop,1/exposepd) - HPop = exposedTimeStep_timespent(HPop,exposerate_df, day_list[current_day], exposed_pop_inf_prop,TS_data) - } - #save(HPop,file=paste(current_day,".RData")) - epidemic_curve = rbind(epidemic_curve,data.frame(Date = day_list[current_day], inf = sum(HPop$nInf))) - all_spread[current_day,] = HPop$nInf - - } - all_spread_2 = data.frame(dates = day_list,runday = 1:length(day_list)) - all_spread_2= cbind(all_spread_2,all_spread) - list(HPop = HPop,epidemic_curve = epidemic_curve,all_spread=all_spread_2) -} - - diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000..78fbd1c --- /dev/null +++ b/desktop.ini @@ -0,0 +1,2 @@ +[LocalizedFileNames] +preprocess_data_EU_old.R=@preprocess_data_EU_old.R,0 diff --git a/eu_model_init.R b/eu_model_init.R new file mode 100644 index 0000000..d873ba3 --- /dev/null +++ b/eu_model_init.R @@ -0,0 +1,93 @@ + + +runSimbinder = function(glhflows_input){ + #3 times steps per day (8 hours), 40% chance of moving per time step + HPop_out = runSim(HPop,pat_locator,glhflows_input,glhflows_input,movement_data, input_dates,recover_df, exposerate,exposepd,exposed_pop_inf_prop = 0, TSinday = 3,prob_move_per_TS=.4) + HPop_out +} + +source("bearmod_fx_dev_EU_version.R") +source("preprocess_data_EU.R") +#Initial parameters +NPat = length(patNames) +patnInf = rep(0,NPat) +patnExp = c(rep(0,NPat) ) + +pat_locator$country = substr(pat_locator$patNames,1,2) + +r0vals = read.csv("pop_data_NPI_startDate_v2.csv") + +recprob = 1/4 +recrate = 1-exp(-1/4) #daily probability of recovery +exposerate = 1 # This is set to 1 because we will set exposure rates on a NUTS3-level basis (ie. accounting for country-level heterogeneity in R0) + +pat_locator$ISO3 = countrycode(pat_locator$country,origin="eurostat",destination="iso3c") +pat_locator$r0 = 0 +#define country-level R0 +for (i in 1:dim(pat_locator)[1]){ + pat_locator$r0[i] = subset(r0vals,iso3c ==pat_locator$ISO3[i])$R0.ML +} + +#read in cases on March 20 across Europe +patinfdata = read.csv("nuts3_cases_320.csv",stringsAsFactors=F) + +#define cases based on cases on march 20 across all NUTS3 areas +for (i in 1:length(patNames)){ + patnInf[which(patinfdata$NUTS_ID == patNames[i])] = patinfdata$nuts3_cases[i] +} +library(viridis) + + +#Repeat mobility data to add 6 months to the end of the Google NUTS3 dataset +movement_data$weekyr = paste("1",movement_data$V2+1,movement_data$V1,sep="-") +movement_data=subset(movement_data,V2<52) +movement_data$dateorig = as.Date(movement_data$weekyr,format="%w-%W-%Y") +movement_data$date = movement_data$dateorig + months(2) + +movement_data_add = subset(movement_data,date>"2019-03-08") +movement_data_add$date = movement_data_add$date + months(3) +movement_data = rbind(movement_data,movement_data_add) +movement_data_add$date = movement_data_add$date + months(3) +movement_data = rbind(movement_data,movement_data_add) +#Because the Google NUTS3 dataset is from 2019, we will add one year to simulate 2020 +movement_data$date = movement_data$date + years(1) + +start_date = as.Date("2020-03-20") +movement_data = subset(movement_data,date>(start_date - weeks(1))) +end_date = as.Date("2020-03-20") + weeks(30) +movement_data = subset(movement_data,date < end_date) +input_dates=seq(start_date,end_date,by="days") +recover_df = data.frame(date = input_dates,recrate = recprob) + +#This dataset records the relative movement in a given week, compared to a baseline, for 2020 (Recording reductions in movement due to COVID-19) +glhflows = read.csv("glh flow data_NUTS3_EU.csv",stringsAsFactors=F) +glhflows = glhflows[c("NUTS3fr","t1","change")] +glhflows_fillin = expand.grid(NUTS3fr = pat_locator$patNames[!is.element(pat_locator$patNames,glhflows$NUTS3fr)], t1 = unique(glhflows$t1) ) +glhflows_fillin$change = 0 +#for areas that did not have a reduction recorded, we used the mean value observed across all NUTS3 areas +#note: t1 represents the first day of a given week -- ie. "01/03/2020" means the movement observed from March 1 to March 7 +for (date in levels(glhflows_fillin$t1)){ + print(date) + glhflows_fillin$change[glhflows_fillin$t1 == date] = mean(glhflows$change[glhflows$t1 == date]) +} + +glhflows_all = rbind(glhflows,glhflows_fillin) +glhflows_all = merge(glhflows_all,pat_locator[c("patNames","r0","country")],by.x="NUTS3fr",by.y="patNames") +glhflows_all$change[is.na(glhflows_all$change)] = mean(subset(glhflows_all,t1 == "08/03/2020")$r0,na.rm=T) +#new NUTS3-specific contact rate calculated by also accounting for locak R value +glhflows_all$relative_contact = glhflows_all$change * glhflows_all$r0 * recrate +glhflows_all$relative_move = glhflows_all$change +glhflows_all$date = dmy(glhflows_all$t1) +#NUTS3 areas with no lockdown inherited the movement patterns from March 1 +glhflows_nolockdown = subset(glhflows_all,t1=="01/03/2020") + + + +glhflows_lockdown = subset(glhflows_all,t1=="22/03/2020") +#We extended the lockdown effect one further week into April, to account for additional community uptake of lockdown +glhflows_lockdown_extra = subset(glhflows_all,t1=="22/03/2020") +glhflows_lockdown_extra$change =glhflows_lockdown_extra$change *.75 +#Both contact rates and movement reduced based on reductions in movement observed in the Google COVID-19 dataset +glhflows_lockdown_extra$relative_contact = glhflows_lockdown_extra$change * glhflows_lockdown_extra$r0 * recrate +glhflows_lockdown_extra$relative_move = glhflows_lockdown_extra$change + diff --git a/iso2_csv.csv b/iso2_csv.csv new file mode 100644 index 0000000..47881c6 --- /dev/null +++ b/iso2_csv.csv @@ -0,0 +1,250 @@ +Name,Code +Afghanistan,AF +Åland Islands,AX +Albania,AL +Algeria,DZ +American Samoa,AS +Andorra,AD +Angola,AO +Anguilla,AI +Antarctica,AQ +Antigua and Barbuda,AG +Argentina,AR +Armenia,AM +Aruba,AW +Australia,AU +Austria,AT +Azerbaijan,AZ +Bahamas,BS +Bahrain,BH +Bangladesh,BD +Barbados,BB +Belarus,BY +Belgium,BE +Belize,BZ +Benin,BJ +Bermuda,BM +Bhutan,BT +"Bolivia, Plurinational State of",BO +"Bonaire, Sint Eustatius and Saba",BQ +Bosnia and Herzegovina,BA +Botswana,BW +Bouvet Island,BV +Brazil,BR +British Indian Ocean Territory,IO +Brunei Darussalam,BN +Bulgaria,BG +Burkina Faso,BF +Burundi,BI +Cambodia,KH +Cameroon,CM +Canada,CA +Cape Verde,CV +Cayman Islands,KY +Central African Republic,CF +Chad,TD +Chile,CL +China,CN +Christmas Island,CX +Cocos (Keeling) Islands,CC +Colombia,CO +Comoros,KM +Congo,CG +"Congo, the Democratic Republic of the",CD +Cook Islands,CK +Costa Rica,CR +Côte d'Ivoire,CI +Croatia,HR +Cuba,CU +Curaçao,CW +Cyprus,CY +Czech Republic,CZ +Denmark,DK +Djibouti,DJ +Dominica,DM +Dominican Republic,DO +Ecuador,EC +Egypt,EG +El Salvador,SV +Equatorial Guinea,GQ +Eritrea,ER +Estonia,EE +Ethiopia,ET +Falkland Islands (Malvinas),FK +Faroe Islands,FO +Fiji,FJ +Finland,FI +France,FR +French Guiana,GF +French Polynesia,PF +French Southern Territories,TF +Gabon,GA +Gambia,GM +Georgia,GE +Germany,DE +Ghana,GH +Gibraltar,GI +Greece,GR +Greenland,GL +Grenada,GD +Guadeloupe,GP +Guam,GU +Guatemala,GT +Guernsey,GG +Guinea,GN +Guinea-Bissau,GW +Guyana,GY +Haiti,HT +Heard Island and McDonald Islands,HM +Holy See (Vatican City State),VA +Honduras,HN +Hong Kong,HK +Hungary,HU +Iceland,IS +India,IN +Indonesia,ID +"Iran, Islamic Republic of",IR +Iraq,IQ +Ireland,IE +Isle of Man,IM +Israel,IL +Italy,IT +Jamaica,JM +Japan,JP +Jersey,JE +Jordan,JO +Kazakhstan,KZ +Kenya,KE +Kiribati,KI +"Korea, Democratic People's Republic of",KP +"Korea, Republic of",KR +Kuwait,KW +Kyrgyzstan,KG +Lao People's Democratic Republic,LA +Latvia,LV +Lebanon,LB +Lesotho,LS +Liberia,LR +Libya,LY +Liechtenstein,LI +Lithuania,LT +Luxembourg,LU +Macao,MO +"Macedonia, the Former Yugoslav Republic of",MK +Madagascar,MG +Malawi,MW +Malaysia,MY +Maldives,MV +Mali,ML +Malta,MT +Marshall Islands,MH +Martinique,MQ +Mauritania,MR +Mauritius,MU +Mayotte,YT +Mexico,MX +"Micronesia, Federated States of",FM +"Moldova, Republic of",MD +Monaco,MC +Mongolia,MN +Montenegro,ME +Montserrat,MS +Morocco,MA +Mozambique,MZ +Myanmar,MM +Namibia,NA +Nauru,NR +Nepal,NP +Netherlands,NL +New Caledonia,NC +New Zealand,NZ +Nicaragua,NI +Niger,NE +Nigeria,NG +Niue,NU +Norfolk Island,NF +Northern Mariana Islands,MP +Norway,NO +Oman,OM +Pakistan,PK +Palau,PW +"Palestine, State of",PS +Panama,PA +Papua New Guinea,PG +Paraguay,PY +Peru,PE +Philippines,PH +Pitcairn,PN +Poland,PL +Portugal,PT +Puerto Rico,PR +Qatar,QA +Réunion,RE +Romania,RO +Russian Federation,RU +Rwanda,RW +Saint Barthélemy,BL +"Saint Helena, Ascension and Tristan da Cunha",SH +Saint Kitts and Nevis,KN +Saint Lucia,LC +Saint Martin (French part),MF +Saint Pierre and Miquelon,PM +Saint Vincent and the Grenadines,VC +Samoa,WS +San Marino,SM +Sao Tome and Principe,ST +Saudi Arabia,SA +Senegal,SN +Serbia,RS +Seychelles,SC +Sierra Leone,SL +Singapore,SG +Sint Maarten (Dutch part),SX +Slovakia,SK +Slovenia,SI +Solomon Islands,SB +Somalia,SO +South Africa,ZA +South Georgia and the South Sandwich Islands,GS +South Sudan,SS +Spain,ES +Sri Lanka,LK +Sudan,SD +Suriname,SR +Svalbard and Jan Mayen,SJ +Swaziland,SZ +Sweden,SE +Switzerland,CH +Syrian Arab Republic,SY +"Taiwan, Province of China",TW +Tajikistan,TJ +"Tanzania, United Republic of",TZ +Thailand,TH +Timor-Leste,TL +Togo,TG +Tokelau,TK +Tonga,TO +Trinidad and Tobago,TT +Tunisia,TN +Turkey,TR +Turkmenistan,TM +Turks and Caicos Islands,TC +Tuvalu,TV +Uganda,UG +Ukraine,UA +United Arab Emirates,AE +United Kingdom,GB +United States,US +United States Minor Outlying Islands,UM +Uruguay,UY +Uzbekistan,UZ +Vanuatu,VU +"Venezuela, Bolivarian Republic of",VE +Viet Nam,VN +"Virgin Islands, British",VG +"Virgin Islands, U.S.",VI +Wallis and Futuna,WF +Western Sahara,EH +Yemen,YE +Zambia,ZM +Zimbabwe,ZW diff --git a/nuts3_cases_320.csv b/nuts3_cases_320.csv new file mode 100644 index 0000000..3d25012 --- /dev/null +++ b/nuts3_cases_320.csv @@ -0,0 +1,1523 @@ +"","NUTS_ID","nuts3_cases" +"1","HR043",11.7830933833864 +"2","AT314",91.7337398882395 +"3","AT315",140.29719327046 +"4","DE600",714.146225773357 +"5","DE711",64.321643778957 +"6","DE712",297.182528368334 +"7","DE713",46.1426391240963 +"8","DE714",114.166139751539 +"9","DE715",108.286109219009 +"10","BE353",26.3056175941491 +"11","BG311",2.54836537084093 +"12","BG312",3.80347035369897 +"13","DE737",39.1405388534323 +"14","DE803",77.5431357729259 +"15","DE804",35.3801433261043 +"16","DE80L",81.0103478086573 +"17","DE923",57.9258531790077 +"18","DE94E",144.957162476743 +"19","DE94F",57.268385893412 +"20","DE94G",36.1682528124228 +"21","DEA59",54.9470083850842 +"22","DEA5A",108.739465745662 +"23","DEA5B",119.789115850651 +"24","DEA5C",152.816548328278 +"25","DEB11",45.3352480883383 +"26","BG313",4.58985713083906 +"27","AT321",12.3584857990518 +"28","AT322",99.1698023162696 +"29","AT323",218.200714051808 +"30","DE925",109.818647028808 +"31","DE926",28.0425269911234 +"32","DE927",49.234749041689 +"33","BG314",7.4069299597033 +"34","BG331",15.1969516491054 +"35","DE928",62.4373936664514 +"36","DE929",457.333828099903 +"37","DE931",71.5010507576619 +"38","BG332",5.29430884751382 +"39","BG333",4.95397395782686 +"40","AT331",19.343396388968 +"41","DE932",79.8879392783721 +"42","DE80J",94.3855330266298 +"43","AT332",183.381872760558 +"44","AT333",29.4509405050374 +"45","AT334",64.2404776395098 +"46","DE933",103.11478581806 +"47","DE934",19.5083806526666 +"48","DE935",75.1915630029375 +"49","BG334",3.46060458843775 +"50","DE936",47.4254904074623 +"51","DE937",67.8142487798322 +"52","DE938",54.8495382120135 +"53","DE939",83.1157009155884 +"54","DE93A",37.6047414026412 +"55","DE93B",55.2234825161975 +"56","DE941",29.5145756002756 +"57","DE942",19.978229449687 +"58","DE943",65.7510243124816 +"59","DE80K",86.2980117765927 +"60","DE944",61.2224718540892 +"61","DE945",28.5910446414267 +"62","DE946",51.9869122830414 +"63","AT223",94.4753430756077 +"64","DE947",76.6771501411741 +"65","DE948",70.2520326400303 +"66","DE949",135.68566462368 +"67","AT226",59.5764447625583 +"68","AT311",165.312763473597 +"69","AT312",346.586108010729 +"70","AT335",155.014491133158 +"71","AT341",53.7933368019349 +"72","AT342",181.331849551304 +"73","BE100",466.46493870434 +"74","DE94A",39.1845522299334 +"75","DE94B",57.8071772486466 +"76","DE94C",70.4938644513386 +"77","DE94D",54.2281013072708 +"78","AT313",123.59449065798 +"79","DE406",71.0218670856314 +"80","DE407",39.4707493668713 +"81","BG412",7.97142529375824 +"82","BE334",30.2642850995405 +"83","BE335",79.7107059487231 +"84","BE336",31.0160153860372 +"85","AL022",43.7057868039596 +"86","AL031",8.41991364046893 +"87","AL032",4.76049652538698 +"88","AL033",11.4287921625875 +"89","AL034",7.27346568197874 +"90","AT224",159.536111724409 +"91","AT225",115.653209729562 +"92","BE211",392.258106846054 +"93","BG315",3.73415437607794 +"94","BG321",7.2404998386306 +"95","AL035",2.38545918042279 +"96","AT111",22.5949604574875 +"97","AT112",96.0696281889154 +"98","AT113",58.8809581895974 +"99","BE212",129.453937462607 +"100","BE213",173.874294961465 +"101","BE221",161.993594544548 +"102","BE222",90.7295185057507 +"103","BG341",12.7581264925945 +"104","AT121",147.607756339037 +"105","AT122",155.516103545995 +"106","AT123",92.4163328200354 +"107","AT124",130.457692271485 +"108","BE223",74.7997569892928 +"109","BE341",23.477894175248 +"110","AT125",74.8224053901512 +"111","AT211",171.22657802166 +"112","BE231",106.084387005015 +"113","BE232",75.4914962628111 +"114","BE233",31.312906602619 +"115","BE234",208.244930808676 +"116","BE235",46.0916622990707 +"117","BE236",93.985017001156 +"118","BG342",5.72197548134383 +"119","BG343",3.54802987674334 +"120","DE911",101.566387272778 +"121","AT212",74.7518049573195 +"122","AT126",209.210812914328 +"123","BE241",231.985042931244 +"124","BE242",185.476734661011 +"125","BE342",18.0652191977647 +"126","BE343",21.64251814036 +"127","BE344",23.9444190215366 +"128","BE345",20.8923600539588 +"129","AT127",216.107305101707 +"130","AT130",1111.29521272481 +"131","AL011",3.13756160354202 +"132","AL012",8.48766571059385 +"133","BE251",102.678308276486 +"134","AT213",89.2889721732548 +"135","AT221",271.542355520011 +"136","AT222",47.1349027380307 +"137","BE252",19.3506445298753 +"138","BE351",41.5439476603462 +"139","BE352",120.747821177165 +"140","BG322",3.23415465686214 +"141","AL013",5.37253712420302 +"142","AL014",4.58096158252779 +"143","AL015",12.1988565354246 +"144","AL021",10.9844626505647 +"145","BE253",39.6005127162369 +"146","BE254",103.906229634928 +"147","BE255",56.3772484872862 +"148","BE256",55.7721657760342 +"149","BE257",34.8725747523769 +"150","BE258",21.1462336895179 +"151","BG323",6.36487711361666 +"152","BE310",153.182173936511 +"153","BE321",33.7838297822667 +"154","BE322",160.256171034735 +"155","BE323",94.3066088765126 +"156","BE324",28.8555506611244 +"157","BG324",3.16080467978862 +"158","BG325",3.43437396608011 +"159","DE913",50.1826532999829 +"160","BG344",9.58692804439274 +"161","BG411",43.6333887993841 +"162","DE912",37.1153709413555 +"163","BE325",71.479069007766 +"164","BE326",55.4869891043547 +"165","BE327",56.3682496914968 +"166","BE331",43.6050084879088 +"167","BE332",232.862897324583 +"168","BG422",7.11594887144315 +"169","CH051",44.2692380756796 +"170","ES432",321.757349827453 +"171","DE246",42.9375930072534 +"172","DE247",34.7448455463465 +"173","DE248",47.5479950180601 +"174","DE265",41.3518714081525 +"175","DE266",31.4501148974298 +"176","DE267",33.9322311908154 +"177","CH052",95.8027463133423 +"178","CH053",58.9744381142335 +"179","CH054",19.3509196224245 +"180","DE111",247.347479105065 +"181","CZ010",174.348823200363 +"182","ES511",4705.69497396104 +"183","DE12C",45.8948504915605 +"184","DE131",91.0378521247488 +"185","DE132",104.735738511675 +"186","DE147",88.3518026916074 +"187","DE148",112.767382081419 +"188","DE149",51.1121575262802 +"189","DE211",55.8049156331062 +"190","CZ042",104.369897692004 +"191","HR04A",14.4112495360579 +"192","ES613",642.868634118521 +"193","DE21K",103.21045019607 +"194","DE21L",53.9643072125084 +"195","DE21M",70.6889692596895 +"196","DE235",50.0026592794392 +"197","DE236",52.9985390690207 +"198","DE237",38.6209270810672 +"199","BG423",7.89336750307993 +"200","BG424",3.32667082088403 +"201","ES512",725.100648249421 +"202","DE249",38.2372630603029 +"203","DE24A",27.1180536638141 +"204","DE24B",29.324401368965 +"205","DE24C",27.0231737705428 +"206","DE25C",37.4598107251587 +"207","DE261",28.1043154432252 +"208","DE262",20.7734897528738 +"209","DE263",49.5929378662048 +"210","DE264",71.5679539844785 +"211","DE212",625.697028561296 +"212","DE213",24.5241622743773 +"213","CH055",579.267102169444 +"214","ES513",397.645745300322 +"215","DE133",66.9566178283221 +"216","DE134",171.581278563714 +"217","DE135",54.8635569707496 +"218","DE136",82.7723630285887 +"219","DE214",43.4535504293238 +"220","DE215",42.7194009939358 +"221","DE216",51.0392053793989 +"222","DE217",63.4281271733382 +"223","CZ051",56.6069493975418 +"224","BG425",4.58524360185192 +"225","ES514",759.655174571862 +"226","ES521",1702.93554475056 +"227","DE21N",54.0643693100004 +"228","DE221",28.2379804593583 +"229","DE222",19.767665193645 +"230","DE223",18.5787777490436 +"231","DE224",47.3565708739574 +"232","DE225",31.1305319319674 +"233","DE238",79.3094862166991 +"234","DE239",59.1623853256956 +"235","DE268",36.3017237631488 +"236","CH056",239.676653994076 +"237","ES522",528.656710190737 +"238","ES531",124.515821660076 +"239","DE24D",28.1372539345399 +"240","DE251",16.2226016818118 +"241","DE252",44.2009160478657 +"242","DE253",51.2967400424684 +"243","DE254",200.583676083493 +"244","DE255",16.3611183331246 +"245","DE137",54.6790764211312 +"246","DE269",52.643734876776 +"247","DE26A",51.6198622346788 +"248","DE218",57.4544123877995 +"249","ES532",800.10451171963 +"250","ES533",85.6583520322373 +"251","DE138",111.06948738772 +"252","DE139",98.6622083219588 +"253","DE226",48.0936773398719 +"254","DE219",53.1842991346288 +"255","DE21A",56.7958464946444 +"256","DE21B",72.2794569736211 +"257","CZ020",202.904643970333 +"258","CZ052",70.7057085634184 +"259","ES611",633.827154651901 +"260","ES612",982.527872626887 +"261","ES706",18.3602928907984 +"262","DE227",63.7121468306225 +"263","DE228",77.5551480927063 +"264","BG413",9.59724209047208 +"265","BG414",3.88873795580696 +"266","CH011",954.185858015183 +"267","ES707",72.5854331686961 +"268","ES708",114.279813334757 +"269","ES709",771.086953271323 +"270","FI196",31.4285533721455 +"271","DE256",72.9007952010382 +"272","DE257",56.6424361456411 +"273","DE258",47.7615919572448 +"274","CH025",81.4733643375944 +"275","CH031",203.213971865908 +"276","CH032",327.262509181545 +"277","CH063",189.115507885931 +"278","ES241",187.389100363402 +"279","DE13A",71.1089925857257 +"280","DE141",112.251589121559 +"281","DE142",89.325859730453 +"282","DE143",74.6186621854566 +"283","CH064",44.8878596193325 +"284","CH065",50.1560598720925 +"285","CH066",145.601190958035 +"286","BG415",3.6658471451384 +"287","ES523",2189.20906648842 +"288","DE229",29.766347507525 +"289","DE22A",48.5866561020337 +"290","DE22B",40.5428653534974 +"291","CZ032",76.5815003348733 +"292","ES412",301.557344435353 +"293","ES413",380.00767865108 +"294","DE259",69.0037973625157 +"295","DE25A",40.2153980697125 +"296","DE25B",51.9767452292513 +"297","DE144",48.1540448384838 +"298","BG421",20.3778716434332 +"299","CH033",768.951676973073 +"300","ES419",141.244311120121 +"301","HR037",9.71871745231823 +"302","HU110",35.8316145395145 +"303","HR048",7.25554959360607 +"304","HR049",6.71926253631822 +"305","DE145",77.88304626748 +"306","DE146",79.5300629320543 +"307","CH040",1784.38659161236 +"308","CH070",415.490668218253 +"309","ES425",684.361226243298 +"310","DE128",218.565303062268 +"311","DE129",47.0285674433697 +"312","DE12A",59.2326567385624 +"313","DE12B",79.517603275064 +"314","DE22C",37.6057972500261 +"315","DE231",16.0826755893638 +"316","DE232",60.593601257478 +"317","DE233",16.8142972405921 +"318","DE234",41.705146101849 +"319","CY000",123.773519643585 +"320","CZ041",37.5658242681925 +"321","ES431",555.129925990063 +"322","DE21G",43.6238872289269 +"323","DE21H",151.867982931901 +"324","DE21I",38.4910019355777 +"325","DE21J",50.726500223537 +"326","DE80O",80.9247222039134 +"327","DE278",49.4685057585119 +"328","CH021",1166.2903677803 +"329","DE80M",60.4635840131511 +"330","DEB12",50.8991625187821 +"331","DEC05",57.1719452537726 +"332","DED52",108.891915635362 +"333","DED53",75.5190796253851 +"334","DEE01",38.4795685227746 +"335","DE279",70.8216244778564 +"336","DE27A",33.3736583210245 +"337","DE27B",56.9933327157885 +"338","CZ063",64.6950800440881 +"339","DEC06",35.6768463089837 +"340","DED21",220.329851000226 +"341","DED2C",117.351285941035 +"342","DEA1A",134.07276399984 +"343","DEA38",111.052107021422 +"344","DEA41",138.154400271702 +"345","DEA42",148.339584375755 +"346","DEA43",102.92458856204 +"347","DEA44",57.0123248117393 +"348","DEB38",20.2711053969518 +"349","DE40D",37.7010965219316 +"350","DE40E",83.5207121311432 +"351","CZ064",154.48225662812 +"352","DEA1B",127.884945731511 +"353","DEA1C",191.435656457308 +"354","DEA1D",183.056004273815 +"355","DEA1E",122.3399773476 +"356","DEB39",32.5238886631275 +"357","DEB3A",13.6404422040883 +"358","DEB3B",52.3705499898522 +"359","DEB3C",53.8393521149893 +"360","DEB3D",30.6816553558999 +"361","DEE02",92.0610636287638 +"362","DE721",105.164879622605 +"363","DE722",102.296862622406 +"364","DE723",69.6642775957891 +"365","DE724",96.7792936425941 +"366","CZ071",79.8535274944924 +"367","DEB13",51.6959029818542 +"368","DEB14",64.1488926741188 +"369","DEB15",31.8481463368143 +"370","DEE03",96.1253853192116 +"371","DEE04",32.5685368637572 +"372","DEE05",59.9536261724826 +"373","DEA45",139.797561942086 +"374","DE916",53.0351845385371 +"375","DE917",35.2096552212685 +"376","DE918",52.7335378216407 +"377","DE91A",53.4435672293863 +"378","DE11A",77.5967175607746 +"379","DE11B",52.0496118557837 +"380","DE11C",50.1170789278189 +"381","DEE09",85.6857715986041 +"382","DEE0A",52.9937466402364 +"383","DEA1F",186.274253416835 +"384","DEA46",125.31501977524 +"385","DEA47",124.837460989839 +"386","DEA51",142.337924171581 +"387","DEA52",231.604393308947 +"388","DEA53",73.4445006870921 +"389","DEB3E",52.2585084650216 +"390","DE27C",57.4039290679773 +"391","DE27D",52.8746266619097 +"392","DE27E",62.7733833819315 +"393","DE21D",33.8470529232813 +"394","DE21E",50.3447538321352 +"395","DE21F",39.8942461347717 +"396","DE23A",29.4458731568873 +"397","DE241",29.8345762997501 +"398","DEA22",127.862078905905 +"399","DEA23",444.714024388563 +"400","DEA24",66.1382144030172 +"401","DEA26",103.855056536884 +"402","DEA27",188.279968738774 +"403","DEB3F",42.6412321057697 +"404","DEB3G",28.1444475115826 +"405","DEE06",32.8162465544325 +"406","DE40F",28.7313440630903 +"407","DE40G",44.5286892313602 +"408","DE725",41.7240099172764 +"409","DE113",211.478152804594 +"410","DE114",99.5592115264185 +"411","DE115",218.343226451563 +"412","DE116",168.90295227593 +"413","DEB17",87.4524707022615 +"414","DEB18",74.1609770134493 +"415","DEB1A",49.0539096853885 +"416","DEE07",66.7085364530534 +"417","DEE08",68.9922192229683 +"418","DEA54",71.264501472522 +"419","DEA55",57.6884684258436 +"420","DE731",78.5265868931769 +"421","DE732",89.5222933934564 +"422","DE733",47.3974364437691 +"423","DE91B",47.9804023484702 +"424","DE242",28.2590974070556 +"425","DE243",16.6088707839743 +"426","DE244",16.3664469087118 +"427","DE245",60.8221576792371 +"428","DED2D",97.9534156700284 +"429","DED2E",95.0890563093684 +"430","DED2F",96.2747038484431 +"431","DEA56",128.659510110257 +"432","DEA57",105.269517058765 +"433","DEA58",165.279191952239 +"434","DE91C",126.571497898694 +"435","DE922",87.189127233953 +"436","DE300",1358.20365751733 +"437","CH022",378.201330875155 +"438","DEA28",77.4328671507134 +"439","DEA29",102.913122256795 +"440","DEA2A",107.446865142518 +"441","DEA2B",117.256858318839 +"442","DEB3H",45.0980870037791 +"443","DEB3I",62.1338622126343 +"444","DEB3J",86.9957459895575 +"445","DE401",28.4477520075506 +"446","DE402",40.089255555041 +"447","DE403",21.6009912276071 +"448","DE404",78.4710907652098 +"449","DE405",75.3836811775641 +"450","CZ072",73.2268578801901 +"451","DE117",47.4074916632567 +"452","DE118",134.85311744836 +"453","DEB1B",82.6505491592707 +"454","DEB1C",25.5815473809002 +"455","DEB1D",41.3492663267544 +"456","DEB21",47.1213537327143 +"457","DE26B",46.2490165704324 +"458","DE26C",65.7188357688421 +"459","DE271",116.490674934289 +"460","DE272",16.3703282168555 +"461","DE273",27.8856135970581 +"462","DE40H",68.2694604402089 +"463","DE40I",44.265576010145 +"464","DE501",225.298517488164 +"465","DE502",41.8133753926639 +"466","DE11D",124.739270472291 +"467","DE121",21.4569946954744 +"468","DE122",126.636769660392 +"469","DE123",179.053309862504 +"470","DED41",95.9366221736583 +"471","DED42",132.756711085624 +"472","DED43",119.948131071754 +"473","DE408",66.4395683771807 +"474","DE409",79.8682169702112 +"475","DE40A",88.854267634012 +"476","DE734",95.2374275362733 +"477","DE735",71.6827420282075 +"478","DE736",61.9470265641762 +"479","CZ080",149.24570432006 +"480","DE112",151.110575250849 +"481","DEA2C",241.367291086961 +"482","DEA2D",217.480049834349 +"483","DEA31",48.4898371993125 +"484","DEA32",102.528570140099 +"485","DEA33",134.410122040903 +"486","DE716",116.840137393969 +"487","DE717",108.935813888317 +"488","DE718",95.6283476297199 +"489","DE719",165.552988638582 +"490","DE274",17.2492290659178 +"491","CH012",415.29358462088 +"492","CH013",588.383273656284 +"493","CH024",202.632030853222 +"494","CH023",306.377464255531 +"495","DE119",44.2339762412155 +"496","DEB22",46.0994250339332 +"497","DEB23",40.4273964362212 +"498","DEB24",24.8096916947446 +"499","DE80N",96.6404151744205 +"500","DE275",54.8557943544621 +"501","CH057",311.490253256953 +"502","CH061",467.688562215325 +"503","CH062",41.1204711760895 +"504","DE124",92.4349454373082 +"505","DE125",65.5767469983394 +"506","DE126",115.734240869516 +"507","DE127",56.4665734157995 +"508","DE21C",87.2300256962066 +"509","DED44",88.8481167473775 +"510","DED45",125.827168252539 +"511","DED51",211.147096955398 +"512","DEA34",154.421160056759 +"513","DE276",99.521141814168 +"514","DE277",38.63804430783 +"515","DE40B",41.2973488964656 +"516","CZ031",82.3799508121947 +"517","DEB3K",54.4208904877121 +"518","DEC01",129.16315918057 +"519","DEC02",42.6390480476278 +"520","DEC03",52.1772707120266 +"521","DEC04",77.167129112635 +"522","DEA35",89.1593187186447 +"523","DEA36",246.406281615673 +"524","DEA37",180.064805078715 +"525","DE40C",69.3656602727913 +"526","DE71A",96.1948541564961 +"527","DE71B",39.1646950627607 +"528","DE71C",139.275874656637 +"529","CZ053",66.9768291128284 +"530","DE94H",23.0649104697447 +"531","DEA11",252.771179634194 +"532","DEA12",196.600822393134 +"533","DEA13",229.281844829687 +"534","DEA14",86.6132134687945 +"535","DEA15",102.819207756693 +"536","DEA16",68.1518173325233 +"537","DEA17",83.8420844454447 +"538","DEA18",43.1427990845105 +"539","DEA19",61.6710195057378 +"540","DEB25",62.3802331809244 +"541","DEB31",19.9286309365519 +"542","DEB32",39.301935487328 +"543","DEB33",19.0718453207985 +"544","DEB34",64.1899819125353 +"545","DEB35",89.5078207190221 +"546","DEB36",21.4032846271023 +"547","DEB37",22.3723535271343 +"548","DE71D",73.8584389113775 +"549","DE71E",122.160753010196 +"550","DE914",70.8214205447166 +"551","EL623",2.48886968515481 +"552","EL624",1.43944051928491 +"553","EL521",10.0541114191952 +"554","DEE0D",43.0538250291816 +"555","DEE0E",46.3103182143942 +"556","DEF01",32.2948980611353 +"557","DEF02",98.2017996557625 +"558","DEF03",87.3011720480279 +"559","ES112",255.769228253715 +"560","EL515",9.24605292096918 +"561","DEG09",40.1037808573823 +"562","DEG0A",28.9615319499674 +"563","DEG0B",48.2630569694158 +"564","EL522",77.7241762070415 +"565","EL631",13.8703190952802 +"566","DK013",125.300025306529 +"567","DK014",9.97354345534601 +"568","DK021",65.1437156384316 +"569","DEF04",31.1480668927422 +"570","EL632",19.9426122127267 +"571","EL633",10.640403094461 +"572","ES113",244.50070883503 +"573","DEF05",54.3344261256999 +"574","DEF06",79.9745582348612 +"575","DEG0C",53.0310927187652 +"576","EL431",22.0159525912549 +"577","EL542",2.92514012220691 +"578","EL543",11.9548515686451 +"579","EL523",5.7429428486832 +"580","EL524",9.97523400073201 +"581","EL525",8.9296414346338 +"582","EL526",12.6261162467473 +"583","DEG0D",27.2814386458225 +"584","DEG0E",25.2747447737366 +"585","DK032",199.085647776953 +"586","FI200",4.04938725144336 +"587","FR101",753.449340554299 +"588","FRB04",202.375736965027 +"589","EL307",34.2228173281874 +"590","EL641",8.20773775893585 +"591","EL643",1.40678878399649 +"592","EL644",10.8966035673744 +"593","FRB05",110.734256022462 +"594","EL611",17.277386694843 +"595","EL411",6.5306510018928 +"596","ES114",724.589000635056 +"597","EL532",3.48107439560837 +"598","DEF07",65.3425396550625 +"599","DEG0F",42.6186909153383 +"600","FI1C2",25.2402417833183 +"601","FI1C3",29.1539248967875 +"602","FR105",547.282115835337 +"603","EE008",81.8787667677457 +"604","EL527",7.05978390931814 +"605","EL531",12.5429613424098 +"606","EL533",3.5696994606621 +"607","DEG0G",32.3404738286265 +"608","DEG0H",21.6063921665664 +"609","DEF08",77.6780803050488 +"610","FR102",486.994529190375 +"611","EL432",5.14430970259066 +"612","EL652",9.34043817408696 +"613","EL642",13.5155082107657 +"614","DEF09",126.726079218629 +"615","DEF0A",50.7165173674215 +"616","DEG0I",41.1434517393222 +"617","FRB06",223.411611682001 +"618","EL612",20.0442097390078 +"619","EL621",2.66946570657505 +"620","EL622",6.72746155608286 +"621","EL433",5.83999568539151 +"622","ES120",817.009893255029 +"623","DEG0J",33.3360655491814 +"624","DEG0K",31.6046435894576 +"625","DK022",158.696852456865 +"626","FRC11",175.920316120683 +"627","EL653",16.6560100606088 +"628","EL541",8.72000454623897 +"629","EL645",2.64845097069565 +"630","FR103",469.900055668088 +"631","FR104",418.05469866776 +"632","EL434",10.9182982809991 +"633","EL511",10.3035026511905 +"634","EL512",7.97575930129601 +"635","EL651",12.3245445858201 +"636","DEE0B",73.1556261053839 +"637","FRC12",68.7978379202078 +"638","EL613",13.6133548651284 +"639","DEE0C",71.7742619585392 +"640","DEG01",85.4074357552794 +"641","DEG02",35.5750803830014 +"642","DEG03",46.4145017348558 +"643","DEG04",12.2488271277266 +"644","DEG05",25.5608004731743 +"645","FRC13",182.84652419019 +"646","ES111",854.381991125135 +"647","DEG06",38.8493716685239 +"648","DEG07",32.8308869803204 +"649","DEG0P",37.3520254823094 +"650","DK041",120.895690122005 +"651","DEF0B",111.781069318723 +"652","EL304",36.3274383530259 +"653","EL305",34.7468928489433 +"654","EL306",10.8912116194074 +"655","EL412",2.65014994087893 +"656","EL513",7.99552179817564 +"657","EL514",7.062504376974 +"658","DK011",225.953901037822 +"659","DK012",148.656785777584 +"660","DK031",134.535540451348 +"661","DEF0C",79.6381014467062 +"662","FI1C4",24.8758007031351 +"663","EL413",3.25212062816868 +"664","EL421",12.7545610646402 +"665","EE007",45.9823881207839 +"666","EL422",7.67820515931142 +"667","HR045",10.1182501413385 +"668","HR046",9.81199476959962 +"669","HR047",10.1238391895862 +"670","ES417",73.7321994957789 +"671","FI197",75.1840810863114 +"672","ES614",772.844939138842 +"673","HU213",6.09247699046139 +"674","HU221",8.88219440215408 +"675","HU231",6.58156959264763 +"676","HU232",5.6486680128834 +"677","ES424",275.744137345851 +"678","ES615",434.434712916892 +"679","ES130",477.350941250226 +"680","ES230",279.804418101529 +"681","FI194",28.0014931541091 +"682","FI195",25.8151105502516 +"683","ES242",115.158090009607 +"684","ES418",432.338987098238 +"685","ES414",127.850114322716 +"686","DEF0D",113.204956814451 +"687","DEF0E",52.5484487618472 +"688","DEF0F",103.640874112234 +"689","FI1B1",239.228623725971 +"690","FI1C1",67.5452252128757 +"691","ES421",334.387931063773 +"692","ES211",280.039183896771 +"693","ES212",552.622017044279 +"694","ES243",832.440115690979 +"695","EE006",34.7559047646556 +"696","EL301",41.4552153834432 +"697","EL302",34.4957280523989 +"698","EL303",71.7134646353208 +"699","HR034",9.06742334467581 +"700","ES415",270.434939804944 +"701","DK050",157.76415500264 +"702","ES422",438.347778591368 +"703","ES616",526.873798513167 +"704","ES617",1418.62144117822 +"705","ES213",886.876270320239 +"706","DEG0L",38.0345304946764 +"707","DEG0M",34.8761817775934 +"708","DEG0N",15.8622682700844 +"709","DK042",246.275905109947 +"710","HR04D",11.3640092833223 +"711","HR04E",15.6523904594909 +"712","ES300",5714.68603476252 +"713","EE001",166.293582307287 +"714","ES618",1630.33821571514 +"715","ES416",136.648722330767 +"716","EE004",40.4524155846164 +"717","HR036",18.4243576300988 +"718","HR035",38.7193963790452 +"719","ES423",175.341243500568 +"720","HU120",22.5920534259791 +"721","ES220",555.31629655832 +"722","FI193",40.1271291607534 +"723","ES620",1314.59801373476 +"724","ES630",60.2329573604687 +"725","ES640",78.8252957548598 +"726","ES703",9.33723918462605 +"727","ES704",85.8823679750131 +"728","ES705",729.072590406259 +"729","HR042",33.0765092135047 +"730","HR044",15.7577207190475 +"731","ES411",136.831499666827 +"732","HR04B",26.9419206192712 +"733","HR04C",15.2552646954174 +"734","HU211",8.33604122520754 +"735","HU212",4.86793878314161 +"736","HU222",4.6645590731051 +"737","HU223",4.66363294338088 +"738","FRG03",106.183811560608 +"739","IS002",225.833580966071 +"740","NL329",437.165163823688 +"741","NL332",280.241922517799 +"742","NL333",73.2717455148361 +"743","NL337",133.101779537585 +"744","NL33A",128.721609008591 +"745","NL33B",102.567360305929 +"746","NL33C",458.928248713303 +"747","FRF33",345.445493730569 +"748","NL341",33.7144351544441 +"749","NL342",87.736324810373 +"750","NL411",204.950005303403 +"751","NL412",152.867362607734 +"752","HR033",15.3185539992376 +"753","FRK23",173.261483357402 +"754","FRH04",252.968775071211 +"755","NL413",211.30036526973 +"756","NL414",245.323936294618 +"757","NL421",90.5656986837612 +"758","NL422",76.142228643305 +"759","NL423",189.467200706457 +"760","FRL03",363.400934003316 +"761","FRY20",129.408366753043 +"762","FRY40",297.019907655659 +"763","FRI22",39.3882356171821 +"764","NO011",381.284702066085 +"765","NO021",110.417561027736 +"766","NO034",94.658867366373 +"767","FRY50",72.5339046983706 +"768","FRF34",121.917085777312 +"769","NO012",350.783135299287 +"770","LV007",36.554292246508 +"771","NL131",64.8126445567766 +"772","HR031",25.6773010039071 +"773","FRK24",426.145324737751 +"774","FRH01",201.982154440716 +"775","FRI11",141.791639138334 +"776","LT026",19.1765290422045 +"777","LT027",7.30337065014472 +"778","NO022",106.698598862941 +"779","FRL04",670.412907042179 +"780","FRI23",128.311367981261 +"781","FRY30",110.546655123338 +"782","FRG01",455.96965586356 +"783","MK003",15.8905190005432 +"784","MK004",12.4492897920224 +"785","NO041",63.1446412926179 +"786","FRK25",246.698478133219 +"787","FRI12",517.715393672009 +"788","HR041",72.9072616058869 +"789","MK005",16.100637727901 +"790","MK006",23.4016022327853 +"791","MK007",11.851807747408 +"792","FRL05",359.450571457894 +"793","FRI31",117.388248127788 +"794","MK008",44.975710706599 +"795","MT001",102.531831590082 +"796","MT002",8.02773271528135 +"797","NL111",44.7935728362577 +"798","NL112",14.5327446907555 +"799","FRK26",598.494084565666 +"800","FRG02",269.884877885632 +"801","NL113",126.651917287267 +"802","NL124",105.331548225344 +"803","NL125",44.5475252524698 +"804","NL126",62.3150538243379 +"805","FRL06",188.916664380972 +"806","HR032",4.48412279047102 +"807","NL132",55.8003824465102 +"808","NL133",43.1679535178972 +"809","NL211",121.574688140225 +"810","NL212",51.7278178725152 +"811","NL213",204.887220990095 +"812","NL221",219.52663771637 +"813","NO043",264.182008987948 +"814","NO051",285.435615632167 +"815","NO052",57.188755514761 +"816","NO053",128.209343970872 +"817","NO060",249.723674780735 +"818","NO071",121.363915404956 +"819","NO072",84.8022167018752 +"820","NO073",39.39905652346 +"821","FRG05",236.737896962266 +"822","FRH02",291.324371839742 +"823","NL224",79.7910794921156 +"824","NL225",130.273440680885 +"825","NL226",237.853246128111 +"826","NL230",148.271948802322 +"827","FR106",541.467075428831 +"828","FR107",450.105387770346 +"829","FR108",399.469056383053 +"830","FRI21",82.2134678673077 +"831","FRI14",115.225714882362 +"832","NL310",429.53019741615 +"833","NL321",122.670439206227 +"834","NL323",64.5394855649692 +"835","NL324",71.7685546025559 +"836","NL325",55.0794028845077 +"837","NL327",79.445047286462 +"838","NL328",79.5185686418268 +"839","FRL02",49.4227205497987 +"840","FRB03",74.8800759344833 +"841","FRK11",109.495349283252 +"842","FRC14",114.441935232905 +"843","FRF21",89.440214747849 +"844","FRG04",193.835948082051 +"845","FRK12",47.019823963529 +"846","FRD22",402.460036632825 +"847","FRD12",162.523465181902 +"848","FRH03",360.043374766116 +"849","FRJ22",93.9982564437155 +"850","FRF11",376.584395266967 +"851","FRF32",63.4761447643426 +"852","FRI15",228.064444554539 +"853","FRK27",147.389924384657 +"854","FI1D1",20.6177112227455 +"855","FRE22",271.265881776341 +"856","FRC21",180.052315288462 +"857","FRI33",126.283185297476 +"858","FRL01",59.4808261093961 +"859","FRF23",183.075277603303 +"860","FI1D7",25.700210859889 +"861","FRI34",147.168658677936 +"862","FRM02",59.5178464449909 +"863","FRY10",140.104864003467 +"864","FI1D2",35.481752152948 +"865","FRJ11",132.233223474288 +"866","FRK22",112.183844117468 +"867","FRC22",88.3861209319782 +"868","FRD13",94.1604568920316 +"869","FRJ12",258.307310587931 +"870","FRM01",52.3253418813162 +"871","FRF24",56.835609620705 +"872","FRE23",187.87097432068 +"873","FRJ13",385.393442868382 +"874","FRK14",212.761106074964 +"875","FRE12",473.437598656286 +"876","FRF31",241.640472722751 +"877","FRF22",102.16118070003 +"878","FRJ14",26.271021138845 +"879","FRJ15",164.145419879782 +"880","FRJ23",478.093637700975 +"881","FRJ24",66.6530282351262 +"882","FI1D3",23.4591324909689 +"883","FI1D8",10.382619278964 +"884","FRJ25",61.3535144223319 +"885","FRK13",77.4513961293022 +"886","FRC23",81.4780496406545 +"887","FRD21",204.082555654374 +"888","FRI32",218.101035579577 +"889","FRJ26",76.6717835079375 +"890","FRK28",273.382732047127 +"891","FRE21",175.316898590367 +"892","FRJ27",133.459255739607 +"893","FRK21",220.201297394445 +"894","FRF12",257.594584492752 +"895","FRI13",144.109791217813 +"896","FI1D9",60.4410289801316 +"897","FRJ21",54.3293986175091 +"898","FI1C5",18.5826755217069 +"899","FRE11",826.190815028349 +"900","FI1D5",9.82648468745968 +"901","FRC24",47.5309246456831 +"902","FRB01",99.2206926831264 +"903","FRJ28",91.9420546032972 +"904","FRD11",230.256848969083 +"905","FRB02",144.205617928347 +"906","LT023",23.1429692813182 +"907","LT024",10.7678324649382 +"908","ITF32",319.750021002456 +"909","ITF33",3395.20991798492 +"910","ITF34",486.705922593283 +"911","LV005",29.3677924473538 +"912","ITF35",1226.12336754747 +"913","ITF43",657.855848210399 +"914","ITF44",446.849848024437 +"915","NO032",159.075196114799 +"916","MK001",11.0298211288717 +"917","MK002",12.3034783532819 +"918","ITI1A",252.736651872797 +"919","ITI21",795.141328074514 +"920","LT025",16.1209067775675 +"921","HU333",7.38735549922713 +"922","ITF46",673.423264067233 +"923","ITF47",1398.57770488677 +"924","ITF48",438.957632693843 +"925","ITF51",412.257526311519 +"926","ITF52",222.011846508581 +"927","ITI11",224.608703518716 +"928","NO042",99.800497531364 +"929","ITH20",647.283222002407 +"930","ITH31",1102.15885188072 +"931","IE041",115.552061878835 +"932","ITI12",453.018228112982 +"933","ITI13",344.970231424109 +"934","ITI14",1142.93208324273 +"935","ITI15",295.590247826213 +"936","NO033",141.119875934439 +"937","ITC11",2627.6729715714 +"938","ITF61",770.629917708796 +"939","ITF62",182.722734554615 +"940","ITF63",392.72197047224 +"941","ITF64",171.682907078313 +"942","ITG2A",63.1026328361384 +"943","ITG2B",110.028397560187 +"944","LT028",10.2859824639441 +"945","LV009",24.4599810237857 +"946","IE051",127.8377329408 +"947","IE063",88.9659086610294 +"948","ITH32",1041.76629963979 +"949","ITH33",237.742656985788 +"950","LV008",20.2600609498434 +"951","ITC42",714.510297569309 +"952","ITC43",410.14794954243 +"953","ITC44",208.214160688619 +"954","ITI16",369.123986187841 +"955","ITI17",496.600368738818 +"956","ITG2C",137.295924097523 +"957","LT021",10.0845654089425 +"958","LV006",60.095432451646 +"959","ITC46",1358.21069877157 +"960","ITC47",1550.44400330061 +"961","ITF65",575.978654361409 +"962","ITG11",468.200113615147 +"963","ITH34",1084.92901674576 +"964","LT029",9.76906989510351 +"965","IS001",420.007149524553 +"966","ITC48",662.22796093439 +"967","ITI18",409.265108259195 +"968","ITI19",317.557453492422 +"969","LT022",40.4717759474262 +"970","ITC49",285.190606983678 +"971","ITC4A",430.784522917326 +"972","ITG12",1389.04256852678 +"973","ITG13",667.113926422503 +"974","LU000",1096.84952771293 +"975","LV003",26.204733784368 +"976","ITC4B",496.045830098304 +"977","ITC4C",3545.18228181362 +"978","ITC4D",1033.65221254036 +"979","ITH35",957.729410779515 +"980","ITF11",338.297536523434 +"981","ITF12",356.568205068892 +"982","ITF13",368.523623143293 +"983","NO031",164.349236694054 +"984","ME000",47.2987730404619 +"985","ITF14",437.922500937296 +"986","ITF21",96.2858981192756 +"987","ITF22",249.992079790675 +"988","ITF31",1082.72388447978 +"989","RS125",7.58454262391561 +"990","RS126",7.38579843319837 +"991","RS127",12.6241002344628 +"992","PL842",9.3243203657074 +"993","PL432",14.6633434941893 +"994","PL514",14.1203658661917 +"995","RS211",11.3597001918915 +"996","RS212",6.89782867984273 +"997","PT185",57.2250900569516 +"998","PT186",25.0469326354527 +"999","PL219",8.26547757781053 +"1000","PL21A",12.6290436606778 +"1001","SE213",51.2173847899776 +"1002","PT11B",19.6302811174396 +"1003","PT11C",97.3288197758429 +"1004","PT11D",43.5698339705197 +"1005","PL417",12.9928980100353 +"1006","RS213",11.7888619027373 +"1007","RS214",8.7458729416996 +"1008","PL812",14.6573751601523 +"1009","PL515",13.1932760272424 +"1010","PL516",10.5576546890188 +"1011","RS215",8.80645790810954 +"1012","RS216",9.83009493544859 +"1013","PL843",6.38581720737699 +"1014","PL911",40.1334309243751 +"1015","PT11E",24.9819607333735 +"1016","PL224",11.8987120551153 +"1017","PL225",15.5529800619759 +"1018","PL227",14.6065114517887 +"1019","RS217",14.3268314577765 +"1020","RS218",12.5398238536721 +"1021","PT150",111.941971945393 +"1022","PT16H",19.1488223044138 +"1023","PL418",15.8649766988413 +"1024","RS221",4.6657823463808 +"1025","RS222",7.35224848224833 +"1026","PT16I",53.8912617905093 +"1027","PL814",16.498895649635 +"1028","PL517",21.1261342553669 +"1029","PL616",9.25546977917017 +"1030","RS223",4.54831038209724 +"1031","RS224",8.46461640800239 +"1032","RS225",16.1986783613117 +"1033","PL912",15.2765205091239 +"1034","PL913",15.7763336514868 +"1035","RS226",3.52839675636561 +"1036","RS227",8.17269629625902 +"1037","RS228",5.56865670914499 +"1038","PL22C",9.17690466962635 +"1039","PL411",9.73977028051434 +"1040","PL415",12.1958862518056 +"1041","RS229",3.58441156945468 +"1042","PL217",10.9350430078821 +"1043","PL414",15.4627454588781 +"1044","RO122",12.093710799333 +"1045","PL424",9.16467066216708 +"1046","RO123",4.68566119506122 +"1047","RO216",8.13631963345893 +"1048","SE122",65.1173238980073 +"1049","RO221",6.59572053445302 +"1050","RO316",16.5807744648463 +"1051","PL428",12.3323291190759 +"1052","PL431",9.01883646687417 +"1053","RO317",7.99298084129929 +"1054","RO321",42.8879361684759 +"1055","RS110",76.1496044129491 +"1056","PL214",17.2025241674121 +"1057","PL218",12.7602019308549 +"1058","RO424",16.1265280180957 +"1059","RS121",7.11679724868988 +"1060","PT112",95.477376196035 +"1061","PT119",90.7645425947522 +"1062","PT11A",387.712811606232 +"1063","PL416",15.6100160763219 +"1064","RS122",12.0024685019836 +"1065","RS123",27.9790150986199 +"1066","RS124",5.71578295610301 +"1067","PL811",6.98280143540438 +"1068","HU331",9.11294049664913 +"1069","HU332",6.22926085885333 +"1070","PT16D",83.5050233397787 +"1071","PL713",13.6246335991595 +"1072","ITH36",1124.2013756918 +"1073","ITH37",272.055122516932 +"1074","ITC13",200.450496537542 +"1075","ITC14",182.247807897145 +"1076","PL228",9.9507885948043 +"1077","PL229",10.382008988406 +"1078","PL22A",16.8455344795138 +"1079","PL22B",15.9978313835787 +"1080","PL821",11.2645259298016 +"1081","PL822",9.17466528749309 +"1082","ITI22",266.489129208135 +"1083","ITI31",435.179759015703 +"1084","ITI32",549.323316521274 +"1085","HU311",12.5887028553155 +"1086","ITC15",438.609620630032 +"1087","PL426",8.42456851313415 +"1088","PL427",10.16710658862 +"1089","PL922",8.0326428838926 +"1090","PL923",7.74310686198981 +"1091","ITG16",192.553089886214 +"1092","ITG17",1239.5230990384 +"1093","ITG18",352.451927669723 +"1094","ITC16",694.88020689959 +"1095","HU312",5.77829559451823 +"1096","PT16J",48.8191427453741 +"1097","PT170",655.217645322466 +"1098","ITH41",378.988762615557 +"1099","ITH42",621.010211736016 +"1100","HU313",3.61237460598404 +"1101","ITC17",255.284059353234 +"1102","PL518",14.1168782332093 +"1103","PL714",10.4814524939133 +"1104","PL823",14.7971519632348 +"1105","ITI33",372.519532292237 +"1106","ITI34",241.104204338805 +"1107","ITI35",199.340715348618 +"1108","ITI41",381.119175058369 +"1109","ITC18",491.642217495964 +"1110","HU321",12.0197172106532 +"1111","PL523",8.52572495205634 +"1112","PL924",9.10747376854015 +"1113","ITG19",435.218509145381 +"1114","ITG25",369.806917628595 +"1115","HU322",7.03834501044124 +"1116","IE042",124.523333255558 +"1117","PL524",13.8403023301631 +"1118","PL613",18.3783376839016 +"1119","PL715",8.31769152299597 +"1120","PL721",17.9924672922372 +"1121","ITH43",158.158865452943 +"1122","ITH44",245.760889427474 +"1123","ITH51",345.780746171024 +"1124","ITH52",521.512161915813 +"1125","PL617",8.49505374807912 +"1126","PL618",4.51758932084252 +"1127","PL824",14.3911888985236 +"1128","ITI42",182.232040360273 +"1129","ITI43",4836.38108966212 +"1130","PL619",8.43217652305642 +"1131","PL925",9.76688633966807 +"1132","ITG26",174.530478483326 +"1133","ITG27",626.563059564854 +"1134","ITH53",656.759018926762 +"1135","PL622",14.6576854273369 +"1136","PT16E",100.578752557214 +"1137","PT16F",67.1763314127604 +"1138","PT16G",59.6731727776495 +"1139","ITH54",833.540630057074 +"1140","ITH55",1172.20972436344 +"1141","ITI44",659.282739906496 +"1142","PL634",14.0738674447447 +"1143","PL636",7.79188344896813 +"1144","PL722",11.222723890577 +"1145","ITI45",564.574501755805 +"1146","LI000",51.4719827355896 +"1147","ITG28",180.467607230319 +"1148","ITH56",407.416223779411 +"1149","PL637",5.40806655469291 +"1150","PL638",10.4241773152791 +"1151","PL711",15.3600556393098 +"1152","PL841",11.7870050954947 +"1153","ITG29",178.686209920069 +"1154","ITH57",472.637478601102 +"1155","IE053",185.832758770417 +"1156","IE061",370.727320785935 +"1157","ITF45",911.495965867785 +"1158","PL621",12.4541578273828 +"1159","PL926",6.10888650805947 +"1160","PT111",54.4195568216181 +"1161","ITH58",475.886928621672 +"1162","ITH59",394.258003087622 +"1163","ITC20",151.24865443044 +"1164","ITC31",227.508135337971 +"1165","ITC32",304.517911671908 +"1166","PL623",6.85298909278268 +"1167","PL633",16.8487807935749 +"1168","PL712",9.0360426496088 +"1169","PT181",21.3905910467348 +"1170","PT184",26.8644317756354 +"1171","PL213",17.2372927655748 +"1172","ITH10",615.244783722569 +"1173","HU323",11.03463221502 +"1174","PL815",11.4310259305796 +"1175","HU233",4.04976557946243 +"1176","ITC12",200.007333723881 +"1177","IE062",198.541396660409 +"1178","PL921",14.1902406217225 +"1179","PT16B",85.4881265926694 +"1180","LT011",61.630317261479 +"1181","ITG14",493.074951627599 +"1182","ITG15",304.041436417067 +"1183","IE052",118.041613558226 +"1184","ITC33",910.282639827351 +"1185","ITC34",244.801885309886 +"1186","ITC41",1048.22782217165 +"1187","UKG12",72.4667733880367 +"1188","UKG13",71.8610969408257 +"1189","UKG21",20.9713744826115 +"1190","UKF22",88.9745465296427 +"1191","UKF24",48.7327245294542 +"1192","UKF25",42.1659496759637 +"1193","SE313",62.1358173469448 +"1194","UKM61",11.5607889518109 +"1195","UKM62",25.0349878278549 +"1196","UKM63",10.7438577978428 +"1197","TR521",49.5710242523739 +"1198","TR522",5.50348438932999 +"1199","TR611",47.9239404394374 +"1200","TR612",11.1840291627704 +"1201","TR833",11.8861724789869 +"1202","TR834",7.36036978602152 +"1203","TR901",13.9882849871369 +"1204","TR902",14.0460535983882 +"1205","TR903",8.09099095731887 +"1206","UKM92",18.2073314016943 +"1207","TRC12",13.2710737597148 +"1208","TRC13",2.83224188159835 +"1209","TRC21",46.1483714686563 +"1210","TRC22",38.7410179003189 +"1211","TRC31",16.6157991547988 +"1212","UKD36",75.1784455947086 +"1213","UKD37",77.6769995066903 +"1214","UKD41",18.7322976182519 +"1215","UKD42",16.1393879020616 +"1216","UKD44",29.3917095258669 +"1217","UKE21",25.8935673913552 +"1218","UKE22",75.8916577583586 +"1219","UKF30",93.3433169787725 +"1220","UKG11",23.185183092984 +"1221","TR613",6.27945330639758 +"1222","TR621",41.0925653065031 +"1223","TR622",38.4081904620805 +"1224","TR631",40.4858516072379 +"1225","TR632",26.3087103978762 +"1226","TR904",6.64857326936492 +"1227","TR905",3.08222303893048 +"1228","TR906",2.18206008757618 +"1229","TRA11",14.5360779779232 +"1230","TRC32",14.1851971176426 +"1231","TRC33",13.2589401875146 +"1232","TRC34",8.24812576139186 +"1233","UKC11",35.7434770456091 +"1234","UKC12",32.4800206776681 +"1235","UKC13",13.6375866150525 +"1236","UKD45",48.5582919448153 +"1237","UKD46",39.3116569056766 +"1238","UKD47",28.3969287380655 +"1239","UKD61",25.7551472060049 +"1240","UKE31",100.148706498431 +"1241","UKE32",70.3285546190146 +"1242","UKE41",69.2202505019515 +"1243","UKE42",94.8621345457506 +"1244","UKE44",80.6974259095867 +"1245","SI033",15.785451392749 +"1246","SI034",57.8910746868104 +"1247","SI035",13.0043583114207 +"1248","TR633",11.9055000796256 +"1249","TR711",5.81403819150576 +"1250","TR712",8.85889007660854 +"1251","TR713",7.61975248803816 +"1252","TR714",6.9024557305553 +"1253","TR715",4.52013212304392 +"1254","TR721",36.3636477260663 +"1255","SE311",62.3726921428941 +"1256","SE321",52.12556675709 +"1257","UKL16",42.1082566886834 +"1258","UKL17",35.2013454591676 +"1259","UKC14",64.2253220483984 +"1260","UKC21",38.5848934318976 +"1261","UKL18",29.7769057048131 +"1262","UKL21",29.8871599784594 +"1263","UKN07",27.548772824218 +"1264","UKK42",15.1850423534991 +"1265","UKE45",40.4601851119042 +"1266","UKF11",31.972457374828 +"1267","UKF12",35.3229603609215 +"1268","UKF13",63.6243361492677 +"1269","UKH23",144.009719954329 +"1270","UKH24",20.5497492600336 +"1271","UKH25",34.3043422379404 +"1272","UKH31",21.156219405292 +"1273","UKH32",20.4323875240631 +"1274","UKL24",16.6641542801561 +"1275","TR722",14.2977707600933 +"1276","TR723",8.40175529502866 +"1277","TR811",14.7995047166558 +"1278","TR812",5.76105524300959 +"1279","TR813",3.8033982557041 +"1280","SE322",28.6511213083642 +"1281","SI036",17.1531070824373 +"1282","UKJ14",85.147149789009 +"1283","UKJ21",34.5915402738955 +"1284","UKJ22",65.5473552871525 +"1285","UKM50",60.6780762099883 +"1286","UKC22",102.995627868801 +"1287","UKC23",32.1941913466592 +"1288","UKD11",27.9624968864243 +"1289","UKD33",74.8266771119086 +"1290","SI037",33.753902671588 +"1291","SE312",63.575843648077 +"1292","UKK13",75.56441284848 +"1293","UKK14",28.5876274195037 +"1294","UKL22",62.0353488879372 +"1295","UKF14",40.7932592720498 +"1296","UKF15",57.8097042543862 +"1297","UKF16",42.438276713825 +"1298","UKF21",45.5540222931441 +"1299","SK023",25.0427278098929 +"1300","SI038",12.0363947452583 +"1301","UKL14",47.1102888340237 +"1302","UKK41",31.4453570343046 +"1303","UKM65",2.5435637552868 +"1304","TR821",8.2160680712066 +"1305","TR822",3.04771147668334 +"1306","TR823",4.11514874770345 +"1307","TR831",30.2263556149107 +"1308","TR832",11.8588459901078 +"1309","SI041",131.805376960923 +"1310","SI042",47.1340208868404 +"1311","UKL23",35.647498025204 +"1312","TR424",6.58681398630739 +"1313","TR425",6.2251797312163 +"1314","TR510",139.414127594131 +"1315","TR322",25.5182839764464 +"1316","TRB21",28.4649510070017 +"1317","UKD12",32.8816884476825 +"1318","UKD34",59.5158307900018 +"1319","UKD35",61.5051058047893 +"1320","SI043",26.9162662507165 +"1321","SE331",58.9981197931406 +"1322","SE332",53.7067826051254 +"1323","TRB22",8.58574215200306 +"1324","TRB23",6.81640225512948 +"1325","TRB24",6.75678707179862 +"1326","TRC11",53.9062959421825 +"1327","RO111",12.9534682105832 +"1328","RO112",6.20384630739898 +"1329","SK041",31.6461642928076 +"1330","SE231",73.0239243421565 +"1331","SE232",377.06278027963 +"1332","RO211",12.7279721395333 +"1333","RO212",8.8475785246985 +"1334","SK021",20.8708200591433 +"1335","SE123",103.672753111174 +"1336","RO226",7.05636940819787 +"1337","RO311",13.5282074106777 +"1338","SK042",30.8210625412344 +"1339","TR213",7.81068409353056 +"1340","SE124",66.866413518103 +"1341","SE125",59.703985978735 +"1342","RO414",9.28171770387416 +"1343","RO415",7.91637140490114 +"1344","TR221",28.4246714655972 +"1345","RO113",15.9408041779633 +"1346","TR323",21.0226558502786 +"1347","SE221",34.1321767424227 +"1348","RO213",17.2331527035755 +"1349","SK022",21.9919237830787 +"1350","TR412",18.322685293763 +"1351","TR413",6.38226921166739 +"1352","TR421",34.9017883973927 +"1353","SE211",79.8731402044115 +"1354","RO312",356.337325716771 +"1355","RO313",11.7123588728028 +"1356","TR100",368.112258026592 +"1357","TR211",24.1607800941352 +"1358","TR212",8.88539635413636 +"1359","SE224",314.085172423993 +"1360","SE110",540.876068471091 +"1361","RO421",9.450316168542 +"1362","RO422",6.21221420551898 +"1363","TR222",11.6566207614728 +"1364","TR331",36.4396949154169 +"1365","TR332",15.1788312668661 +"1366","RO114",10.5646116103714 +"1367","RO115",7.56417494312546 +"1368","TR333",13.516574274957 +"1369","TR334",8.61419661424672 +"1370","TR411",76.5314035342378 +"1371","TRA12",4.08217690930537 +"1372","TRA13",1.40293067028501 +"1373","SE121",84.8224505813974 +"1374","RO214",9.49273416964473 +"1375","RO215",13.7824137130825 +"1376","TRA21",13.2526226594417 +"1377","TRA22",6.53398564984402 +"1378","TRA23",4.69441387672095 +"1379","TRA24",2.04585840034531 +"1380","UKD62",46.7926625641394 +"1381","PT187",36.3155078453717 +"1382","RO124",6.98114620013097 +"1383","RO314",6.88307695324831 +"1384","RO315",6.66257511210815 +"1385","UKD63",40.8641830738106 +"1386","UKD71",54.1591532420983 +"1387","UKD72",57.7448283940409 +"1388","TR321",24.2795966999905 +"1389","RO222",9.72167274433179 +"1390","RO223",15.3785959547332 +"1391","RO423",8.55913465261642 +"1392","RO116",4.80069800853086 +"1393","TR310",97.3366595148565 +"1394","TRB11",15.9310937365979 +"1395","RO322",12.6369336259884 +"1396","RO411",14.1288755979633 +"1397","RO121",7.25272832178764 +"1398","SI031",25.3715958556864 +"1399","TRB12",13.2613642702604 +"1400","TRB13",6.15439666124233 +"1401","TRB14",1.5081879287937 +"1402","UKD73",32.0726254618868 +"1403","UKD74",38.3781888207159 +"1404","UKE11",31.5297058332035 +"1405","PT200",51.1709442087869 +"1406","PT300",57.2758692717868 +"1407","SI032",73.3749237841938 +"1408","SI044",25.9888942356311 +"1409","UKE12",42.3326074132218 +"1410","UKE13",40.8676595089633 +"1411","TR422",22.6631955170327 +"1412","TR423",8.8168546103683 +"1413","RO125",12.3189051661713 +"1414","RO126",8.81560739806676 +"1415","SK010",23.023936102078 +"1416","SK031",25.7103806576285 +"1417","SE214",12.3753838047894 +"1418","RO224",11.0622353604508 +"1419","RO225",4.39530750602833 +"1420","SK032",24.8720541628273 +"1421","SE212",44.5161341262701 +"1422","RO412",7.14917347721382 +"1423","RO413",5.46110546043379 +"1424","UKM83",41.4371237184226 +"1425","UKM84",42.3479384168348 +"1426","UKG23",30.4850540372156 +"1427","UKG31",139.205331819659 +"1428","UKH36",38.7228083652843 +"1429","UKH37",43.2795853324042 +"1430","UKI31",30.2291024417279 +"1431","UKI32",30.1619699149629 +"1432","UKI33",43.4290041743062 +"1433","UKI34",41.2692518682369 +"1434","UKI41",80.3777296148662 +"1435","UKI42",36.1249121138559 +"1436","UKJ28",48.648581224824 +"1437","UKJ31",25.8401275698584 +"1438","UKJ32",29.4261571522829 +"1439","UKJ34",16.1373480415219 +"1440","UKJ35",53.7331127206442 +"1441","UKM94",13.4769249743254 +"1442","UKM95",39.6199133910116 +"1443","UKN06",40.7327572346733 +"1444","UKN09",19.026269424003 +"1445","UKN10",18.7543552599478 +"1446","UKM82",72.2924463784351 +"1447","UKH14",94.0068636285047 +"1448","UKH15",45.0366367413095 +"1449","UKJ11",109.626388735895 +"1450","UKJ12",35.0676233629716 +"1451","UKJ13",66.0025345188675 +"1452","UKM91",14.5302301528248 +"1453","UKM93",30.7301728797816 +"1454","UKJ46",45.787833295121 +"1455","UKK11",56.0391731755557 +"1456","UKK12",82.1621513521597 +"1457","UKL12",14.4253177875328 +"1458","UKL13",24.4871212545725 +"1459","UKM66",2.55959348654534 +"1460","UKM71",31.7429523261531 +"1461","UKM72",50.2833239531596 +"1462","UKH34",57.8759073437704 +"1463","UKH35",37.2390794160194 +"1464","UKJ25",95.581756622372 +"1465","UKH16",31.4001200161427 +"1466","UKH17",33.6092550458515 +"1467","UKN11",19.298739742272 +"1468","UKN12",18.0020765620053 +"1469","UKN13",18.3340233315753 +"1470","UKJ26",49.6030889064793 +"1471","UKJ27",52.2613099800432 +"1472","UKK15",61.6146625290828 +"1473","UKM73",22.631572106518 +"1474","UKM75",60.1741326227085 +"1475","UKM76",20.0167084384005 +"1476","UKM78",23.0269638176259 +"1477","UKK21",41.9584268582439 +"1478","UKK23",67.6335104806981 +"1479","UKL11",8.28306958487411 +"1480","UKG32",25.5042952618665 +"1481","UKG22",39.8078331866498 +"1482","UKG33",39.4399268053098 +"1483","UKG36",37.7282236454091 +"1484","UKI43",64.239725499899 +"1485","UKK22",51.6799421851423 +"1486","UKI44",75.3438288904466 +"1487","UKI45",39.776013624552 +"1488","UKI51",63.3479331608639 +"1489","UKI52",54.7193381598971 +"1490","UKG24",109.494020262497 +"1491","UKI53",75.1365700103197 +"1492","UKI54",42.7498663539051 +"1493","UKI61",39.7774803634614 +"1494","UKI62",47.599749788525 +"1495","UKJ36",67.6932282463699 +"1496","UKJ37",45.0630003363074 +"1497","UKM64",3.15919206370314 +"1498","UKJ41",32.4618316069773 +"1499","UKM77",30.3459947458367 +"1500","UKM81",25.2438171366598 +"1501","UKK30",65.6730725332081 +"1502","UKN14",18.2411003314428 +"1503","UKN15",16.9969965522736 +"1504","UKG37",39.9890565085013 +"1505","UKG38",34.031558965097 +"1506","UKG39",30.5632474343935 +"1507","UKH11",26.0940034847045 +"1508","UKH12",82.8509606000736 +"1509","UKH21",25.3640821861527 +"1510","UKI63",70.6373465206095 +"1511","UKI71",48.6970213142031 +"1512","UKI72",43.0089663478229 +"1513","UKI73",44.512535863003 +"1514","UKI74",70.0627392986249 +"1515","UKI75",61.4116379620541 +"1516","UKJ43",43.0822919816795 +"1517","UKN08",22.6192726146868 +"1518","UKN16",14.7169612866605 +"1519","UKJ44",62.6639841351972 +"1520","UKJ45",36.840371517583 +"1521","UKL15",35.9353370524563 +"1522","UKK43",93.7470510030859 diff --git a/pop_data_NPI_startDate_v2.csv b/pop_data_NPI_startDate_v2.csv new file mode 100644 index 0000000..e72a830 --- /dev/null +++ b/pop_data_NPI_startDate_v2.csv @@ -0,0 +1,240 @@ +iso3c,country,continent,region,INCOME_GRP,value,pop.col,lockdown,social_distancing,case_test,restrictions_intl,npi.date,R0.EG,R0.EG.low,R0.EG.high,R0.ML,R0.ML.low,R0.ML.high,totalcase,firstcase +ABW,Aruba,Americas,Caribbean,2. High income: nonOECD,106441,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,74,2020-3-13 +AFG,Afghanistan,Asia,Southern Asia,5. Low income,38054945,10-100 million,NA,2020-3-1,NA,2020-2-1,2020-3-1,2.494594133,2.152041424,2.875418405,2.42509253,2.005133337,2.883088149,367,2020-2-25 +AGO,Angola,Africa,Middle Africa,3. Upper middle income,32827403,10-100 million,2020-3-26,2020-3-23,NA,2020-3-1,2020-3-26,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,17,2020-3-22 +AIA,Anguilla,Americas,Caribbean,3. Upper middle income,18090,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,3,2020-3-27 +ALA,?land Islands,Europe,Northern Europe,NA,30506,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +ALB,Albania,Europe,Southern Europe,4. Lower middle income,2942033,1-10 million,2020-4-2,2020-3-10,NA,2020-3-9,2020-4-2,1.923978429,1.659574921,2.202539602,2.000010908,1.639086764,2.398100576,383,2020-3-9 +AND,Andorra,Europe,Southern Europe,2. High income: nonOECD,85635,<1 million,NA,NA,NA,NA,NA,2.708218637,2.318377527,3.205601235,2.700208345,2.267685085,3.181036936,545,2020-3-3 +ARE,United Arab Emirates,Asia,Western Asia,2. High income: nonOECD,9813168,1-10 million,NA,2020-3-8,NA,2020-1-2,2020-3-8,2.572489342,2.466943506,2.685483123,2.431799845,2.270252965,2.604938152,2359,2020-1-27 +ARG,Argentina,Americas,South America,3. Upper middle income,45510413,10-100 million,2020-3-19,2020-3-12,NA,2020-3-11,2020-3-19,2.546825812,2.392827388,2.714044957,2.299585269,2.107106166,2.503464564,1715,2020-3-4 +ARM,Armenia,Asia,Western Asia,4. Lower middle income,2938682,1-10 million,NA,2020-3-2,NA,2020-2-24,2020-3-2,2.066915814,1.900002197,2.233346573,1.985561059,1.764833842,2.223868564,853,2020-3-1 +ASM,American Samoa,Oceania,Polynesia,3. Upper middle income,49437,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +ATG,Antigua & Barbuda,Americas,Caribbean,3. Upper middle income,105106,<1 million,NA,2020-3-15,NA,2020-3-15,2020-3-15,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,15,2020-3-15 +AUS,Australia,Oceania,Australia and New Zealand,1. High income: OECD,25398179,10-100 million,2020-3-29,2020-3-13,NA,2020-3-1,2020-3-29,3.106270225,2.99673242,3.221601705,2.799982799,2.661731553,2.943010082,5956,2020-1-25 +AUT,Austria,Europe,Western Europe,1. High income: OECD,8782212,1-10 million,2020-3-16,2020-3-10,NA,2020-3-10,2020-3-16,2.864957298,2.793393042,2.93880953,2.532382141,2.447541679,2.619166427,12640,2020-2-26 +AZE,Azerbaijan,Asia,Western Asia,3. Upper middle income,10099745,10-100 million,NA,2020-3-1,NA,2020-2-29,2020-3-1,2.568221551,2.340040715,2.798574159,2.376340388,2.088576748,2.69346081,717,2020-2-29 +BDI,Burundi,Africa,Eastern Africa,5. Low income,11939223,10-100 million,NA,NA,NA,2020-3-22,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,3,2020-4-1 +BEL,Belgium,Europe,Western Europe,1. High income: OECD,11619957,10-100 million,2020-3-18,2020-3-13,NA,2020-3-18,2020-3-18,2.664117585,2.620017621,2.709196579,2.369176627,2.311847993,2.427473572,22194,2020-2-4 +BEN,Benin,Africa,Western Africa,5. Low income,12122982,10-100 million,2020-3-30,2020-3-19,NA,2020-3-17,2020-3-30,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,26,2020-3-17 +BES,Caribbean Netherlands,Americas,Caribbean,NA,26854,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,2,2020-4-2 +BFA,Burkina Faso,Africa,Western Africa,5. Low income,20903348,10-100 million,NA,2020-3-12,NA,2020-3-12,2020-3-12,2.279652195,1.927870881,2.717118552,2.392296641,1.953440905,2.870083525,384,2020-3-11 +BGD,Bangladesh,Asia,Southern Asia,5. Low income,169775310,>100 million,NA,NA,NA,2020-3-16,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,164,2020-3-9 +BGR,Bulgaria,Europe,Eastern Europe,3. Upper middle income,6940522,1-10 million,2020-3-13,2020-3-11,NA,2020-3-13,2020-3-13,2.017680116,1.793168595,2.268025606,1.990035647,1.709164456,2.311104676,577,2020-3-8 +BHR,Bahrain,Asia,Western Asia,2. High income: nonOECD,1697767,1-10 million,NA,2020-2-26,NA,2020-3-1,2020-2-26,1.508926568,1.430070987,1.59445645,1.481416471,1.314439459,1.656533286,811,2020-2-24 +BHS,Bahamas,Americas,Caribbean,2. High income: nonOECD,406835,<1 million,NA,2020-3-12,NA,2020-3-7,2020-3-12,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,36,2020-3-16 +BIH,Bosnia & Herzegovina,Europe,Southern Europe,3. Upper middle income,3498213,1-10 million,2020-3-12,2020-3-12,NA,2020-3-12,2020-3-12,2.36873235,2.135121618,2.616276965,2.282404954,2.007858632,2.5788482,781,2020-3-6 +BLM,St. Barth?lemy,Americas,Caribbean,1. High income: OECD,7122,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +BLR,Belarus,Europe,Eastern Europe,3. Upper middle income,9415432,1-10 million,NA,2020-3-14,2020-3-18,2020-3-14,2020-3-14,2.836453445,2.596604531,3.094422379,2.835352442,2.50752174,3.17629827,861,2020-2-28 +BLZ,Belize,Americas,Central America,4. Lower middle income,397999,<1 million,NA,2020-3-16,NA,2020-2-8,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,7,2020-3-24 +BMU,Bermuda,Americas,Northern America,2. High income: nonOECD,71750,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,39,2020-3-20 +BOL,Bolivia,Americas,South America,4. Lower middle income,11543980,10-100 million,2020-3-16,2020-3-14,NA,2020-3-14,2020-3-16,2.479766,1.907409124,3.224724559,2.5737101,1.925908103,3.343181922,210,2020-3-12 +BRA,Brazil,Americas,South America,3. Upper middle income,213863051,>100 million,NA,2020-3-16,NA,2020-3-18,2020-3-16,2.509922806,2.463818054,2.557173218,2.202482694,2.140822627,2.265245996,13717,2020-2-26 +BRB,Barbados,Americas,Caribbean,2. High income: nonOECD,287563,<1 million,NA,2020-3-11,NA,2020-2-5,2020-3-11,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,63,2020-3-18 +BRN,Brunei,Asia,South-Eastern Asia,2. High income: nonOECD,444514,<1 million,2020-3-18,2020-3-18,NA,2020-3-14,2020-3-18,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,135,2020-3-10 +BTN,Bhutan,Asia,Southern Asia,4. Lower middle income,835252,<1 million,NA,NA,NA,2020-1-31,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,5,2020-3-6 +BWA,Botswana,Africa,Southern Africa,3. Upper middle income,2484607,1-10 million,2020-4-2,2020-3-16,NA,2020-3-13,2020-4-2,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,7,2020-4-1 +CAF,Central African Republic,Africa,Middle Africa,5. Low income,4920883,1-10 million,NA,2020-3-13,NA,2020-1-29,2020-3-13,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,9,2020-3-16 +CAN,Canada,Americas,Northern America,1. High income: OECD,37603216,10-100 million,NA,2020-3-13,NA,2020-2-29,2020-3-13,2.726239744,2.682504719,2.771023407,2.336245378,2.277827345,2.39555457,17883,2020-1-26 +CHE,Switzerland,Europe,Western Europe,1. High income: OECD,8670541,1-10 million,2020-3-23,2020-2-28,NA,2020-2-13,2020-3-23,2.440445409,2.402589982,2.479199835,2.113443178,2.062653636,2.165106269,22164,2020-2-26 +CHL,Chile,Americas,South America,3. Upper middle income,18896464,10-100 million,2020-3-26,2020-3-15,NA,2020-3-10,2020-3-26,2.543145422,2.458858611,2.62596907,2.245415611,2.139957773,2.354247838,5116,2020-3-4 +CHN,China,Asia,Eastern Asia,3. Upper middle income,1424548268,>100 million,2020-1-23,2020-1-23,NA,2020-1-27,2020-1-23,3.011639075,2.975363162,3.048478945,2.591138435,2.549663105,2.63300703,82784,2019-12-2 +CIV,C?te d?Ivoire,Africa,Western Africa,4. Lower middle income,26171752,10-100 million,NA,2020-3-16,NA,2020-3-19,2020-3-16,2.474234631,2.0208523,2.970744167,2.524868771,2.062857722,3.051178644,349,2020-3-12 +CMR,Cameroon,Africa,Middle Africa,4. Lower middle income,25958179,10-100 million,NA,2020-3-18,2020-4-2,2020-3-7,2020-3-18,3.050508721,2.738001475,3.422761334,2.904389871,2.53331729,3.301898441,685,2020-3-7 +COD,Congo - Kinshasa,Africa,Middle Africa,5. Low income,89505184,10-100 million,2020-3-28,2020-3-18,NA,2020-3-20,2020-3-28,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,180,2020-3-11 +COG,Congo - Brazzaville,Africa,Middle Africa,4. Lower middle income,5686918,1-10 million,2020-3-31,2020-3-19,NA,2020-3-21,2020-3-31,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,45,2020-3-16 +COK,Cook Islands,Oceania,Polynesia,3. Upper middle income,8574,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +COL,Colombia,Americas,South America,3. Upper middle income,50220406,10-100 million,2020-3-25,2020-3-16,NA,2020-3-12,2020-3-25,2.296525495,2.166189306,2.436310447,2.142248171,1.970801621,2.324069705,1780,2020-3-7 +COM,Comoros,Africa,Eastern Africa,5. Low income,869595,<1 million,NA,2020-3-16,NA,2020-3-10,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +CPV,Cape Verde,Africa,Western Africa,4. Lower middle income,567346,<1 million,NA,2020-3-27,NA,2020-3-2,2020-3-27,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,7,2020-3-21 +CRI,Costa Rica,Americas,Central America,3. Upper middle income,5044180,1-10 million,NA,2020-3-15,NA,2020-3-18,2020-3-15,2.277628236,1.98719171,2.617240104,2.290068052,1.914713419,2.710093257,483,2020-3-7 +CUB,Cuba,Americas,Caribbean,3. Upper middle income,11495479,10-100 million,NA,2020-3-24,NA,2020-3-23,2020-3-24,2.603447159,2.214832208,3.04489995,2.59793658,2.159274938,3.086032421,396,2020-3-12 +CUW,Cura?ao,Americas,Caribbean,2. High income: nonOECD,163500,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,13,2020-3-13 +CYM,Cayman Islands,Americas,Caribbean,2. High income: nonOECD,61944,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,45,2020-3-20 +CYP,Cyprus,Asia,Western Asia,2. High income: nonOECD,1207350,1-10 million,2020-3-24,2020-3-9,NA,2020-3-15,2020-3-24,2.06052807,1.825434874,2.298181467,2.050495031,1.74434233,2.384893193,494,2020-3-10 +CZE,Czechia,Europe,Eastern Europe,1. High income: OECD,10633428,10-100 million,2020-3-16,2020-3-12,NA,2020-3-16,2020-3-16,2.434192265,2.34676524,2.525777513,2.19023264,2.079837878,2.304481207,5017,2020-3-2 +DEU,Germany,Europe,Western Europe,1. High income: OECD,82540447,10-100 million,2020-3-21,2020-3-10,NA,2020-2-29,2020-3-21,2.52252337,2.505760967,2.539515989,2.100505648,2.077350113,2.12376286,103228,2020-1-28 +DJI,Djibouti,Africa,Eastern Africa,4. Lower middle income,999900,<1 million,NA,NA,NA,2020-3-18,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,121,2020-3-19 +DMA,Dominica,Americas,Caribbean,3. Upper middle income,67932,<1 million,NA,NA,NA,2020-3-5,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,15,2020-3-23 +DNK,Denmark,Europe,Northern Europe,1. High income: OECD,5796797,1-10 million,NA,2020-3-11,NA,2020-3-12,2020-3-11,1.745610244,1.704246307,1.79119751,1.698760297,1.622546135,1.77694554,5071,2020-2-27 +DOM,Dominican Republic,Americas,Caribbean,3. Upper middle income,11189162,10-100 million,NA,2020-3-19,NA,2020-3-15,2020-3-19,2.94078656,2.754088321,3.147222676,2.652428888,2.448115891,2.867785799,1956,2020-3-2 +DZA,Algeria,Africa,Northern Africa,3. Upper middle income,43333263,10-100 million,2020-3-23,2020-3-12,NA,2020-3-12,2020-3-23,2.631882153,2.47605177,2.798040044,2.415267594,2.208500454,2.633419143,1468,2020-2-26 +ECU,Ecuador,Americas,South America,3. Upper middle income,17335642,10-100 million,2020-3-23,2020-3-2,NA,2020-3-2,2020-3-23,2.362386392,2.283548089,2.444206178,2.030679257,1.927818381,2.137163238,3995,2020-3-1 +EGY,Egypt,Africa,Northern Africa,4. Lower middle income,102941485,>100 million,NA,2020-3-15,NA,2020-3-16,2020-3-15,1.772492406,1.685142949,1.86480001,1.700222158,1.555391728,1.851742766,1322,2020-2-15 +ERI,Eritrea,Africa,Eastern Africa,5. Low income,5432210,1-10 million,2020-4-2,2020-3-17,NA,2020-3-17,2020-4-2,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,31,2020-3-22 +ESH,Western Sahara,Africa,Northern Africa,5. Low income,597330,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +ESP,Spain,Europe,Southern Europe,1. High income: OECD,46459218,10-100 million,2020-3-13,2020-3-13,NA,2020-3-11,2020-3-13,2.683071818,2.665389022,2.700914718,2.318193442,2.295389486,2.341140766,140510,2020-2-1 +EST,Estonia,Europe,Northern Europe,1. High income: OECD,1300557,1-10 million,2020-3-30,2020-3-12,NA,2020-3-11,2020-3-30,1.905871087,1.772809036,2.0511821,1.8499246,1.65884999,2.048684809,1149,2020-2-28 +ETH,Ethiopia,Africa,Eastern Africa,5. Low income,115983281,>100 million,NA,2020-3-16,NA,2020-3-23,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,52,2020-3-14 +FIN,Finland,Europe,Northern Europe,1. High income: OECD,5580128,1-10 million,2020-3-13,2020-3-13,NA,2020-3-7,2020-3-13,1.747275742,1.681080994,1.816113328,1.640306971,1.532841432,1.751119836,2308,2020-1-30 +FJI,Fiji,Oceania,Melanesia,4. Lower middle income,924918,<1 million,2020-3-19,2020-3-19,NA,2020-3-7,2020-3-19,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,15,2020-3-20 +FLK,Falkland Islands,Americas,South America,1. High income: OECD,77667,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,5,2020-4-4 +FRA,France,Europe,Western Europe,1. High income: OECD,65721164,10-100 million,2020-3-17,2020-2-29,NA,2020-3-16,2020-3-17,2.398620094,2.381640468,2.415793753,2.055135432,2.029776934,2.080646833,78167,2020-1-25 +FRO,Faroe Islands,Europe,Northern Europe,2. High income: nonOECD,51628,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,184,2020-3-20 +FSM,Micronesia (Federated States of),Oceania,Micronesia,4. Lower middle income,107780,<1 million,NA,2020-3-20,NA,2020-3-16,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +GAB,Gabon,Africa,Middle Africa,3. Upper middle income,2293492,1-10 million,NA,2020-3-7,NA,2020-3-13,2020-3-7,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,30,2020-3-13 +GBR,United Kingdom,Europe,Northern Europe,1. High income: OECD,67334204,10-100 million,2020-3-20,2020-3-16,NA,2020-3-24,2020-3-20,2.632459869,2.608535392,2.65664256,2.273823739,2.241188312,2.306785312,55242,2020-1-31 +GEO,Georgia,Asia,Western Asia,4. Lower middle income,3898524,1-10 million,2020-3-23,2020-3-18,NA,2020-3-15,2020-3-23,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,196,2020-2-27 +GGY,Guernsey,Europe,Northern Europe,2. High income: nonOECD,67052,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,166,2020-3-20 +GHA,Ghana,Africa,Western Africa,4. Lower middle income,29042130,10-100 million,2020-3-30,2020-3-16,NA,2020-3-10,2020-3-30,3.122459733,2.320571353,4.223096801,3.498494544,2.671702547,4.491772433,287,2020-3-13 +GIB,Gibraltar,Europe,Southern Europe,1. High income: OECD,29581,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,113,2020-3-20 +GIN,Guinea,Africa,Western Africa,5. Low income,13750824,10-100 million,NA,2020-3-26,NA,2020-3-21,2020-3-26,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,144,2020-3-14 +GLP,Guadeloupe,Americas,Caribbean,NA,448433,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +GMB,Gambia,Africa,Western Africa,5. Low income,2293492,1-10 million,NA,2020-3-18,NA,2020-3-13,2020-3-18,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,4,2020-3-18 +GNB,Guinea-Bissau,Africa,Western Africa,5. Low income,2000694,1-10 million,NA,2020-3-17,NA,2020-3-11,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,33,2020-3-27 +GNQ,Equatorial Guinea,Africa,Middle Africa,2. High income: nonOECD,1406276,1-10 million,NA,2020-3-17,NA,2020-3-15,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,16,2020-3-15 +GRC,Greece,Europe,Southern Europe,1. High income: OECD,11102567,10-100 million,2020-3-17,2020-3-11,NA,2020-3-9,2020-3-17,1.888691488,1.801730284,1.988025303,1.767091299,1.626896467,1.912525221,1832,2020-2-27 +GRD,Grenada,Americas,Caribbean,3. Upper middle income,109313,<1 million,NA,2020-3-13,NA,2020-3-16,2020-3-13,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,12,2020-3-23 +GRL,Greenland,Americas,Northern America,2. High income: nonOECD,55454,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,11,2020-3-20 +GTM,Guatemala,Americas,Central America,4. Lower middle income,17910807,10-100 million,NA,2020-3-14,NA,2020-3-12,2020-3-14,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,80,2020-3-15 +GUF,French Guiana,Americas,South America,NA,303980,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +GUM,Guam,Oceania,Micronesia,2. High income: nonOECD,168729,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,121,2020-3-19 +GUY,Guyana,Americas,South America,4. Lower middle income,790778,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,33,2020-3-13 +HKG,Hong Kong SAR China,Asia,Eastern Asia,2. High income: nonOECD,7547651,1-10 million,NA,NA,NA,NA,NA,1.705176231,1.630115646,1.789476893,1.859680676,1.658094768,2.076244898,863,2020-1-23 +HND,Honduras,Americas,Central America,4. Lower middle income,9719731,1-10 million,2020-4-6,2020-3-16,NA,2020-3-11,2020-4-6,2.791405688,2.287328365,3.391363515,2.887914072,2.285002239,3.563608836,312,2020-3-12 +HRV,Croatia,Europe,Southern Europe,2. High income: nonOECD,4115942,1-10 million,NA,2020-3-16,NA,2020-3-19,2020-3-16,2.813363899,2.592909497,3.052092495,2.532478321,2.280964697,2.801763927,1282,2020-2-26 +HTI,Haiti,Americas,Caribbean,5. Low income,10738247,10-100 million,2020-3-20,2020-3-20,NA,2020-3-20,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,25,2020-3-20 +HUN,Hungary,Europe,Eastern Europe,1. High income: OECD,9621251,1-10 million,2020-3-17,2020-3-9,2020-3-3,2020-3-2,2020-3-17,2.39625931,2.188949092,2.626870343,2.248803291,1.983028836,2.536769581,895,2020-3-5 +IDN,Indonesia,Asia,South-Eastern Asia,4. Lower middle income,272222982,>100 million,NA,NA,NA,2020-2-2,NA,2.167249844,2.076162618,2.261875565,1.973697158,1.848769416,2.104463642,2738,2020-3-2 +IMN,Isle of Man,Europe,Northern Europe,2. High income: nonOECD,90499,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,150,2020-3-21 +IND,India,Asia,Southern Asia,4. Lower middle income,691600020,>100 million,2020-3-16,2020-3-9,NA,2020-2-26,2020-3-16,2.738242209,2.648763602,2.8311683,2.52457564,2.403912419,2.648533007,5194,2020-1-30 +IRL,Ireland,Europe,Northern Europe,1. High income: OECD,4887990,1-10 million,2020-3-28,2020-3-12,NA,2020-3-24,2020-3-28,2.377723227,2.303774538,2.450275552,2.068201831,1.977634676,2.161452559,5709,2020-3-1 +IRN,Iran,Asia,Southern Asia,3. Upper middle income,83121554,10-100 million,2020-3-14,2020-2-27,NA,2020-1-31,2020-3-14,1.785260912,1.773586408,1.797138831,1.646029521,1.623616655,1.668620764,62589,2020-2-20 +IRQ,Iraq,Asia,Western Asia,4. Lower middle income,41502883,10-100 million,2020-3-11,2020-3-11,NA,2020-2-26,2020-3-11,2.037682352,1.9074639,2.172785159,1.964695966,1.755825537,2.187826041,1031,2020-2-25 +ISL,Iceland,Europe,Northern Europe,1. High income: OECD,343235,<1 million,NA,2020-3-16,2020-3-13,2020-3-20,2020-3-16,2.20686726,2.072740477,2.365605521,2.091502895,1.902665783,2.292495191,1586,2020-2-29 +ISR,Israel,Asia,Western Asia,1. High income: OECD,8713564,1-10 million,2020-3-17,2020-3-5,NA,2020-2-3,2020-3-17,2.537086163,2.47922714,2.596325058,2.196067009,2.120356947,2.273609703,9248,2020-2-22 +ITA,Italy,Europe,Southern Europe,1. High income: OECD,49572358,10-100 million,2020-2-23,2020-2-21,NA,2020-1-31,2020-2-23,2.357085686,2.342430646,2.371871876,2.029086555,2.007914075,2.050451726,135586,2020-1-31 +JAM,Jamaica,Americas,Caribbean,3. Upper middle income,2913167,1-10 million,NA,NA,NA,2020-3-14,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,63,2020-3-12 +JEY,Jersey,Europe,Northern Europe,2. High income: nonOECD,101073,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,170,2020-3-20 +JOR,Jordan,Asia,Western Asia,3. Upper middle income,10208664,10-100 million,2020-3-16,2020-3-14,NA,2020-3-14,2020-3-16,2.493690642,2.04131246,3.007760722,2.611569641,2.121969522,3.182393046,349,2020-3-3 +JPN,Japan,Asia,Eastern Asia,1. High income: OECD,126495644,>100 million,2020-4-7,2020-2-20,NA,2020-2-4,2020-4-7,1.714471234,1.67979447,1.750641965,1.722860427,1.635105361,1.811971291,3906,2020-1-15 +KAZ,Kazakhstan,Asia,Central Asia,3. Upper middle income,18777137,10-100 million,NA,2020-3-5,NA,2020-3-6,2020-3-5,2.511250107,2.254333027,2.831899409,2.406433191,2.100334723,2.737643334,704,2020-3-15 +KEN,Kenya,Africa,Eastern Africa,5. Low income,26745846,10-100 million,NA,2020-3-3,NA,2020-3-15,2020-3-3,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,172,2020-3-14 +KGZ,Kyrgyzstan,Asia,Central Asia,5. Low income,18905166,10-100 million,NA,NA,NA,2020-1-22,NA,2.134588814,1.76946342,2.566041881,2.20813891,1.788991091,2.702706257,270,2020-3-19 +KHM,Cambodia,Asia,South-Eastern Asia,5. Low income,17625417,10-100 million,NA,2020-3-16,NA,2020-3-17,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,117,2020-1-28 +KIR,Kiribati,Oceania,Micronesia,4. Lower middle income,122437,<1 million,NA,NA,NA,2020-3-7,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +KNA,St. Kitts & Nevis,Americas,Caribbean,2. High income: nonOECD,50848,<1 million,NA,NA,NA,2020-3-25,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,11,2020-3-26 +KOR,South Korea,Asia,Eastern Asia,1. High income: OECD,51506981,10-100 million,NA,2020-2-27,NA,2020-3-10,2020-2-27,3.490083415,3.377689919,3.608299592,3.045259404,2.921298952,3.172709542,10384,2020-1-20 +KOS,Kosovo,Europe,Southern Europe,4. Lower middle income,1932774,1-10 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +KWT,Kuwait,Asia,Western Asia,2. High income: nonOECD,4302866,1-10 million,NA,2020-2-26,NA,2020-2-20,2020-2-26,1.718876236,1.62624694,1.818361149,1.837870909,1.629061247,2.063904672,743,2020-2-24 +LAO,Laos,Asia,South-Eastern Asia,4. Lower middle income,7164828,1-10 million,NA,NA,NA,2020-2-17,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,12,2020-3-25 +LBN,Lebanon,Asia,Western Asia,3. Upper middle income,6019794,1-10 million,NA,2020-3-9,NA,2020-2-21,2020-3-9,2.18755451,1.949566912,2.453280665,2.117726637,1.794984113,2.479679624,548,2020-2-22 +LBR,Liberia,Africa,Western Africa,5. Low income,5103852,1-10 million,NA,2020-3-22,NA,2020-3-24,2020-3-22,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,14,2020-3-17 +LBY,Libya,Africa,Northern Africa,3. Upper middle income,6662176,1-10 million,2020-3-29,2020-3-13,NA,2020-3-16,2020-3-29,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,19,2020-3-25 +LCA,St. Lucia,Americas,Caribbean,3. Upper middle income,181197,<1 million,2020-3-23,2020-3-20,NA,2020-2-4,2020-3-23,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,14,2020-3-15 +LIE,Liechtenstein,Europe,Western Europe,2. High income: nonOECD,39137,<1 million,2020-2-28,2020-2-28,NA,2020-3-18,2020-2-28,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,78,2020-3-5 +LKA,Sri Lanka,Asia,Southern Asia,4. Lower middle income,21084040,10-100 million,2020-3-29,2020-3-13,NA,2020-3-14,2020-3-29,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,185,2020-1-28 +LSO,Lesotho,Africa,Southern Africa,4. Lower middle income,2322213,1-10 million,2020-3-30,2020-3-19,NA,2020-3-30,2020-3-30,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +LTU,Lithuania,Europe,Northern Europe,3. Upper middle income,2852471,1-10 million,NA,2020-3-11,NA,2020-1-27,2020-3-11,2.533038049,2.285454991,2.812418044,2.447701294,2.154224441,2.758572548,880,2020-2-28 +LUX,Luxembourg,Europe,Western Europe,1. High income: OECD,603951,<1 million,2020-3-16,2020-3-13,NA,NA,2020-3-16,3.14450344,2.961015844,3.343983818,2.898282867,2.691457781,3.115554792,2970,2020-3-1 +LVA,Latvia,Europe,Northern Europe,3. Upper middle income,1892993,1-10 million,NA,2020-3-14,NA,2020-3-14,2020-3-14,2.249631659,1.99127783,2.545461773,2.22034425,1.890079801,2.586871504,548,2020-3-3 +MAC,Macau SAR China,Asia,Eastern Asia,2. High income: nonOECD,651876,<1 million,NA,NA,NA,NA,NA,1.705176231,1.630115646,1.789476893,1.859680676,1.658094768,2.076244898,44,2020-1-22 +MAF,Saint Martin (French part),Americas,Caribbean,2. High income: nonOECD,32556,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +MAR,Morocco,Africa,Northern Africa,4. Lower middle income,37070719,10-100 million,NA,2020-3-13,NA,2020-3-14,2020-3-13,2.480701971,2.300354784,2.665697743,2.299986742,2.074075574,2.542207453,1184,2020-3-3 +MCO,Monaco,Europe,Western Europe,2. High income: nonOECD,30940,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,79,2020-2-29 +MDA,Moldova,Europe,Eastern Europe,4. Lower middle income,4017677,1-10 million,2020-3-25,2020-3-16,NA,2020-3-14,2020-3-25,2.531753667,2.347599476,2.751740191,2.415285546,2.168028725,2.6770755,1056,2020-3-8 +MDG,Madagascar,Africa,Eastern Africa,5. Low income,27690797,10-100 million,2020-3-28,2020-3-21,NA,2020-3-10,2020-3-28,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,85,2020-3-21 +MDV,Maldives,Asia,Southern Asia,3. Upper middle income,458903,<1 million,NA,2020-3-13,NA,2020-3-8,2020-3-13,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,19,2020-3-8 +MEX,Mexico,Americas,Central America,3. Upper middle income,133870037,>100 million,2020-3-30,2020-3-20,NA,2020-3-21,2020-3-30,2.332262295,2.242344071,2.426656544,2.071201909,1.945469729,2.200107344,2785,2020-2-29 +MHL,Marshall Islands,Oceania,Micronesia,4. Lower middle income,77917,<1 million,NA,NA,NA,2020-1-31,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +MKD,Macedonia,Europe,Southern Europe,3. Upper middle income,2088036,1-10 million,NA,2020-3-10,NA,2020-3-13,2020-3-10,2.065580599,1.871975022,2.270549326,1.920908527,1.672057029,2.197967117,599,2020-2-27 +MLI,Mali,Africa,Western Africa,5. Low income,20284183,10-100 million,NA,2020-3-11,NA,2020-3-19,2020-3-11,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,56,2020-3-26 +MLT,Malta,Europe,Southern Europe,2. High income: nonOECD,434370,<1 million,NA,2020-3-13,NA,2020-3-8,2020-3-13,1.527467942,1.336142809,1.73333954,1.613775948,1.322852739,1.934083283,293,2020-3-8 +MMR,Myanmar (Burma),Asia,South-Eastern Asia,5. Low income,54808276,10-100 million,NA,2020-3-13,NA,2020-3-15,2020-3-13,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,22,2020-3-24 +MNE,Montenegro,Europe,Southern Europe,3. Upper middle income,629393,<1 million,NA,2020-3-16,NA,2020-2-4,2020-3-16,2.08125496,1.729436278,2.5521905,2.211887199,1.771261188,2.720139016,241,2020-3-18 +MNG,Mongolia,Asia,Eastern Asia,4. Lower middle income,3209396,1-10 million,2020-3-10,2020-3-10,NA,2020-2-23,2020-3-10,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,15,2020-3-10 +MNP,Northern Mariana Islands,Oceania,Micronesia,2. High income: nonOECD,51433,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,8,2020-3-31 +MOZ,Mozambique,Africa,Eastern Africa,5. Low income,28603070,10-100 million,NA,2020-3-23,NA,2020-3-16,2020-3-23,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,10,2020-3-23 +MRT,Mauritania,Africa,Western Africa,5. Low income,4783765,1-10 million,NA,2020-3-17,NA,2020-3-17,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,6,2020-3-15 +MSR,Montserrat,Americas,Caribbean,4. Lower middle income,5373,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,6,2020-3-21 +MTQ,Martinique,Americas,Caribbean,NA,385459,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +MUS,Mauritius,Africa,Eastern Africa,3. Upper middle income,1274108,1-10 million,2020-3-20,2020-3-19,NA,2020-2-2,2020-3-20,2.34307343,1.841941394,2.95459448,2.520162487,2.008270488,3.090127508,268,2020-3-20 +MWI,Malawi,Africa,Eastern Africa,5. Low income,20283701,10-100 million,NA,2020-3-20,NA,2020-3-20,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,8,2020-4-3 +MYS,Malaysia,Asia,South-Eastern Asia,3. Upper middle income,32869317,10-100 million,2020-3-18,2020-3-11,NA,2020-3-8,2020-3-18,2.325475893,2.250078495,2.404674113,1.953579466,1.843006053,2.068513624,3963,2020-1-25 +MYT,Mayotte,Africa,Eastern Africa,NA,273097,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +NAM,Namibia,Africa,Southern Africa,3. Upper middle income,1348269,1-10 million,2020-3-28,2020-3-14,NA,2020-3-14,2020-3-28,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,16,2020-3-15 +NCL,New Caledonia,Oceania,Melanesia,2. High income: nonOECD,286905,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,18,2020-3-21 +NER,Niger,Africa,Western Africa,5. Low income,24074691,10-100 million,NA,2020-3-17,NA,2020-3-20,2020-3-17,3.704191471,2.877611227,4.677749803,3.837121531,3.026140158,4.731450636,278,2020-3-21 +NFK,Norfolk Island,Oceania,Australia and New Zealand,4. Lower middle income,1757,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +NGA,Nigeria,Africa,Western Africa,4. Lower middle income,204909220,>100 million,2020-3-30,2020-3-18,NA,2020-3-18,2020-3-30,2.378333838,1.926635535,2.964843153,2.504768701,1.983249872,3.135665393,254,2020-2-28 +NIC,Nicaragua,Americas,Central America,4. Lower middle income,6416569,1-10 million,NA,NA,NA,2020-3-31,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,6,2020-3-19 +NIU,Niue,Oceania,Polynesia,3. Upper middle income,1462,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +NLD,Netherlands,Europe,Western Europe,1. High income: OECD,17181252,10-100 million,NA,2020-3-12,NA,NA,2020-3-12,2.463124924,2.422334998,2.50482088,2.16943689,2.114196939,2.225560729,19580,2020-2-28 +NOR,Norway,Europe,Northern Europe,1. High income: OECD,5449696,1-10 million,NA,2020-3-12,NA,2020-3-15,2020-3-12,2.065603289,2.00557152,2.124080618,1.841465873,1.759314265,1.926179593,5863,2020-2-27 +NPL,Nepal,Asia,Southern Asia,5. Low income,30260246,10-100 million,2020-3-24,2020-3-10,NA,2020-3-7,2020-3-24,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,9,2020-1-25 +NRU,Nauru,Oceania,Micronesia,4. Lower middle income,9785,<1 million,NA,NA,NA,2020-3-2,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +NZL,New Zealand,Oceania,Australia and New Zealand,1. High income: OECD,4834421,1-10 million,2020-3-23,2020-3-19,NA,2020-3-13,2020-3-23,3.414155704,3.07085147,3.784231513,3.124406912,2.763189914,3.514133536,969,2020-2-28 +OMN,Oman,Asia,Western Asia,2. High income: nonOECD,5149698,1-10 million,NA,2020-3-15,NA,2020-3-4,2020-3-15,2.063987568,1.874523254,2.271194337,1.900786668,1.612128345,2.239254233,419,2020-2-25 +PAK,Pakistan,Asia,Southern Asia,4. Lower middle income,208362327,>100 million,NA,2020-3-13,NA,2020-2-20,2020-3-13,2.065499611,2.006437558,2.130552272,1.846268811,1.755215869,1.94043933,4072,2020-2-27 +PAN,Panama,Americas,Central America,3. Upper middle income,4289326,1-10 million,NA,2020-3-13,NA,2020-1-4,2020-3-13,2.284798126,2.171538274,2.406212334,2.082840647,1.941537746,2.229554265,2249,2020-3-10 +PCN,Pitcairn Islands,Oceania,Polynesia,5. Low income,50,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +PER,Peru,Americas,South America,3. Upper middle income,33312181,10-100 million,2020-3-16,2020-3-11,NA,2020-3-16,2020-3-16,2.325243899,2.234317885,2.419348208,2.151347775,2.025061338,2.285002457,2954,2020-3-7 +PHL,Philippines,Asia,South-Eastern Asia,4. Lower middle income,109702483,>100 million,2020-3-26,2020-3-10,2020-3-31,2020-1-19,2020-3-26,2.803450622,2.681074185,2.93479198,2.647600755,2.497021506,2.803865506,3764,2020-1-30 +PLW,Palau,Oceania,Micronesia,3. Upper middle income,21685,<1 million,NA,2020-3-17,NA,2020-2-13,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +PNG,Papua New Guinea,Oceania,Melanesia,4. Lower middle income,8755676,1-10 million,2020-3-24,2020-3-18,NA,2020-2-9,2020-3-24,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,2,2020-3-21 +POL,Poland,Europe,Eastern Europe,1. High income: OECD,37942222,10-100 million,2020-3-24,2020-3-12,NA,2020-3-10,2020-3-24,2.345230419,2.271993557,2.424027409,2.126306104,2.024994435,2.23092239,4848,2020-3-4 +PRI,Puerto Rico,Americas,Caribbean,2. High income: nonOECD,3650605,1-10 million,NA,NA,NA,NA,NA,3.669931037,3.079457595,4.403522412,3.822929303,3.255091758,4.448542651,573,2020-3-28 +PRK,North Korea,Asia,Eastern Asia,5. Low income,25840867,10-100 million,2020-1-23,2020-1-23,NA,2020-3-15,2020-1-23,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +PRT,Portugal,Europe,Southern Europe,1. High income: OECD,9972688,1-10 million,2020-4-3,2020-3-12,NA,2020-3-10,2020-4-3,2.763848794,2.699209436,2.831107493,2.448531817,2.370156882,2.528612039,12442,2020-3-3 +PRY,Paraguay,Americas,South America,4. Lower middle income,7066329,1-10 million,2020-3-20,2020-3-10,NA,2020-2-7,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,115,2020-3-8 +PSE,Palestinian Territories,Asia,Western Asia,NA,5322632,1-10 million,2020-3-7,2020-3-7,NA,2020-3-15,2020-3-7,1.710187804,1.513269763,1.935166199,1.830604996,1.480749023,2.241394798,260,2020-3-6 +PYF,French Polynesia,Oceania,Polynesia,2. High income: nonOECD,290741,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,47,2020-3-19 +QAT,Qatar,Asia,Western Asia,2. High income: nonOECD,2791800,1-10 million,2020-3-22,2020-3-9,NA,2020-3-14,2020-3-22,1.756079098,1.690431747,1.821891105,1.886074475,1.754532759,2.025534388,2057,2020-3-1 +REU,R?union,Africa,Eastern Africa,NA,896525,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +ROU,Romania,Europe,Eastern Europe,3. Upper middle income,19388360,10-100 million,NA,2020-3-16,NA,2020-3-9,2020-3-16,2.512435751,2.425924227,2.597416706,2.234673198,2.125221989,2.347808719,4417,2020-2-27 +RUS,Russia,Europe,Eastern Europe,3. Upper middle income,134651648,>100 million,2020-3-22,2020-3-16,NA,2020-3-13,2020-3-22,2.929061687,2.838647249,3.022492478,2.667389067,2.560770265,2.777180695,7497,2020-2-1 +RWA,Rwanda,Africa,Eastern Africa,5. Low income,14172046,10-100 million,2020-3-21,2020-3-8,NA,2020-3-8,2020-3-21,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,105,2020-3-15 +SAU,Saudi Arabia,Asia,Western Asia,2. High income: nonOECD,34709643,10-100 million,2020-3-25,2020-3-9,NA,2020-3-7,2020-3-25,2.094364827,2.011503381,2.182568004,1.878238006,1.764625613,1.996597876,2795,2020-3-3 +SDN,Sudan,Africa,Northern Africa,4. Lower middle income,43541202,10-100 million,NA,2020-3-15,NA,2020-1-20,2020-3-15,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,14,2020-3-14 +SEN,Senegal,Africa,Western Africa,4. Lower middle income,17200158,10-100 million,NA,2020-3-14,NA,NA,2020-3-14,2.090358105,1.734254457,2.495917054,2.088163838,1.648791965,2.604293474,237,2020-3-3 +SGP,Singapore,Asia,South-Eastern Asia,2. High income: nonOECD,5935044,1-10 million,2020-4-7,2020-2-15,NA,NA,2020-4-7,1.684078181,1.630095624,1.74000548,1.62825146,1.494063977,1.770296647,1481,2020-1-24 +SJM,Svalbard & Jan Mayen,Europe,Northern Europe,NA,2170,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +SLB,Solomon Islands,Oceania,Melanesia,4. Lower middle income,647294,<1 million,NA,2020-3-20,NA,2020-3-2,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +SLE,Sierra Leone,Africa,Western Africa,5. Low income,8046942,1-10 million,NA,2020-3-16,NA,2020-3-16,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,6,2020-4-1 +SLV,El Salvador,Americas,Central America,4. Lower middle income,6479060,1-10 million,2020-3-11,2020-3-11,NA,2020-3-11,2020-3-11,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,78,2020-3-19 +SMR,San Marino,Europe,Southern Europe,2. High income: nonOECD,34232,<1 million,NA,2020-3-8,NA,2020-3-8,2020-3-8,1.715014974,1.435914157,2.013257926,1.810571898,1.43842807,2.24040687,279,2020-2-28 +SOM,Somalia,Africa,Eastern Africa,5. Low income,16105176,10-100 million,NA,2020-3-31,NA,2020-3-15,2020-3-31,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,8,2020-3-17 +SPM,St. Pierre & Miquelon,Americas,Northern America,3. Upper middle income,5347,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +SRB,Serbia,Europe,Southern Europe,3. Upper middle income,8703948,1-10 million,NA,2020-3-17,NA,2020-3-15,2020-3-17,2.504311572,2.394465216,2.62067864,2.282126931,2.135631631,2.434613471,2447,2020-3-7 +SSD,South Sudan,Africa,Northern Africa,5. Low income,13610002,10-100 million,NA,2020-3-15,NA,2020-3-13,2020-3-15,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,1,2020-4-6 +STP,S?o Tom? & Pr?ncipe,Africa,Middle Africa,4. Lower middle income,218019,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +SUR,Suriname,Americas,South America,3. Upper middle income,577759,<1 million,NA,2020-3-27,NA,2020-3-14,2020-3-27,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,10,2020-3-15 +SVK,Slovakia,Europe,Eastern Europe,1. High income: OECD,5448874,1-10 million,2020-3-12,2020-3-12,NA,2020-3-12,2020-3-12,1.735319389,1.566116046,1.918495074,1.740450855,1.502432544,1.99580483,581,2020-3-7 +SVN,Slovenia,Europe,Southern Europe,1. High income: OECD,2082053,1-10 million,2020-3-19,2020-3-10,NA,2020-3-10,2020-3-19,1.8060668,1.666948581,1.944005677,1.744394505,1.566202892,1.935448674,1055,2020-3-5 +SWE,Sweden,Europe,Northern Europe,1. High income: OECD,10121690,10-100 million,NA,2020-3-12,NA,2020-3-19,2020-3-12,1.944827608,1.903924473,1.985974328,1.808343812,1.740858193,1.87759698,7693,2020-2-1 +SWZ,Swaziland,Africa,Southern Africa,4. Lower middle income,1439289,1-10 million,2020-3-27,2020-3-17,NA,2020-3-17,2020-3-27,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,10,2020-3-15 +SXM,Sint Maarten,Americas,Caribbean,2. High income: nonOECD,43847,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,40,2020-3-3 +SYC,Seychelles,Africa,Eastern Africa,3. Upper middle income,96117,<1 million,NA,2020-3-10,NA,2020-1-29,2020-3-10,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,11,2020-3-15 +SYR,Syria,Asia,Western Asia,4. Lower middle income,18924438,10-100 million,NA,2020-3-14,NA,2020-3-19,2020-3-14,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,19,2020-3-23 +TCA,Turks & Caicos Islands,Americas,Caribbean,2. High income: nonOECD,55926,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,8,2020-3-25 +TCD,Chad,Africa,Middle Africa,5. Low income,16285093,10-100 million,2020-3-19,2020-3-19,NA,2020-3-18,2020-3-19,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,9,2020-3-20 +TGO,Togo,Africa,Western Africa,5. Low income,8384290,1-10 million,2020-3-21,2020-3-16,NA,2020-3-20,2020-3-21,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,65,2020-3-7 +THA,Thailand,Asia,South-Eastern Asia,3. Upper middle income,34705432,10-100 million,2020-2-22,2020-2-22,NA,2020-1-3,2020-2-22,2.750850023,2.595953594,2.925762176,2.888130455,2.645975569,3.151288607,2369,2020-1-13 +TJK,Tajikistan,Asia,Central Asia,5. Low income,9475256,1-10 million,NA,2020-3-15,NA,2020-2-24,2020-3-15,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +TKL,Tokelau,Oceania,Polynesia,NA,1366,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +TKM,Turkmenistan,Asia,Central Asia,3. Upper middle income,6031184,1-10 million,NA,2020-3-15,NA,2020-3-15,2020-3-15,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +TLS,Timor-Leste,Asia,South-Eastern Asia,4. Lower middle income,1381396,1-10 million,NA,NA,NA,2020-3-15,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,1,2020-3-22 +TON,Tonga,Oceania,Polynesia,4. Lower middle income,111030,<1 million,2020-3-29,2020-3-20,NA,2020-3-5,2020-3-29,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +TTO,Trinidad & Tobago,Americas,Caribbean,2. High income: nonOECD,1377726,1-10 million,NA,NA,NA,2020-3-3,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,107,2020-3-13 +TUN,Tunisia,Africa,Northern Africa,3. Upper middle income,11903145,10-100 million,NA,2020-3-13,NA,2020-3-10,2020-3-13,2.592233279,2.279831178,2.927913213,2.51451476,2.155026929,2.900933778,596,2020-3-3 +TUR,Turkey,Asia,Western Asia,3. Upper middle income,83835758,10-100 million,NA,2020-3-16,NA,2020-2-5,2020-3-16,3.201506818,3.153446507,3.25048445,2.797685082,2.744393625,2.851724554,34109,2020-3-12 +TUV,Tuvalu,Oceania,Polynesia,3. Upper middle income,11342,<1 million,NA,NA,NA,2020-2-29,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +TWN,Taiwan,Asia,Eastern Asia,2. High income: nonOECD,23817898,10-100 million,NA,NA,NA,NA,NA,1.813381035,1.670911804,1.977335339,2.082870094,1.693069453,2.555840798,376,2020-1-21 +TZA,Tanzania,Africa,Eastern Africa,5. Low income,59071798,10-100 million,NA,2020-3-17,NA,2020-3-23,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,24,2020-3-17 +UGA,Uganda,Africa,Eastern Africa,5. Low income,47187702,10-100 million,2020-3-30,2020-3-20,NA,2020-3-22,2020-3-30,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,52,2020-3-22 +UKR,Ukraine,Europe,Eastern Europe,4. Lower middle income,43579233,10-100 million,2020-3-15,2020-3-9,NA,2020-2-19,2020-3-15,3.153353767,2.903691174,3.449262689,2.986649647,2.713966073,3.273378095,1462,2020-3-4 +URY,Uruguay,Americas,South America,3. Upper middle income,3494386,1-10 million,2020-3-24,2020-3-15,NA,2020-3-15,2020-3-24,2.771723112,2.278563435,3.329126474,2.824740949,2.321549751,3.400084291,424,2020-3-15 +USA,United States,Americas,Northern America,1. High income: OECD,331431527,>100 million,NA,2020-3-19,NA,2020-3-13,2020-3-19,2.749162695,2.739657053,2.758701443,2.307466284,2.29513127,2.319726347,398809,2020-1-21 +UZB,Uzbekistan,Asia,Central Asia,4. Lower middle income,33235820,10-100 million,NA,2020-3-15,NA,2020-3-2,2020-3-15,2.197531312,1.981802068,2.435310437,2.137278706,1.845807816,2.454240206,504,2020-3-16 +VCT,St. Vincent & Grenadines,Americas,Caribbean,3. Upper middle income,110764,<1 million,NA,2020-3-16,NA,NA,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,8,2020-3-13 +VEN,Venezuela,Americas,South America,3. Upper middle income,33172401,10-100 million,2020-3-16,2020-3-15,NA,2020-3-15,2020-3-16,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,166,2020-3-15 +VGB,British Virgin Islands,Americas,Caribbean,1. High income: OECD,37381,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,3,2020-3-27 +VIR,U.S. Virgin Islands,Americas,Caribbean,2. High income: nonOECD,104850,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,45,2020-3-24 +VNM,Vietnam,Asia,South-Eastern Asia,4. Lower middle income,98360146,10-100 million,2020-3-31,2020-3-31,NA,2020-3-2,2020-3-31,1.927353258,1.671938765,2.24567523,1.993834604,1.567255271,2.476179412,251,2020-1-24 +VUT,Vanuatu,Oceania,Melanesia,4. Lower middle income,293934,<1 million,2020-3-22,2020-3-22,NA,2020-2-11,2020-3-22,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +WLF,Wallis & Futuna,Oceania,Polynesia,4. Lower middle income,15854,<1 million,NA,NA,NA,NA,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +WSM,Samoa,Oceania,Polynesia,4. Lower middle income,200110,<1 million,2020-3-20,2020-3-20,NA,2020-3-20,2020-3-20,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +YEM,Yemen,Asia,Western Asia,4. Lower middle income,30245300,10-100 million,NA,NA,NA,2020-3-15,NA,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,0,2020-4-8 +ZAF,South Africa,Africa,Southern Africa,3. Upper middle income,19573745,10-100 million,2020-3-27,2020-3-15,2020-3-30,2020-3-16,2020-3-27,3.263878606,3.012402374,3.534179293,3.037345647,2.772896972,3.318105635,1749,2020-3-6 +ZMB,Zambia,Africa,Eastern Africa,4. Lower middle income,6226427,1-10 million,NA,2020-3-17,NA,2020-3-17,2020-3-17,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,39,2020-3-19 +ZWE,Zimbabwe,Africa,Eastern Africa,5. Low income,17645185,10-100 million,2020-3-30,2020-3-24,NA,2020-3-24,2020-3-30,2.397439702,2.246211283,2.58118347,2.216115725,2.016632461,2.431043521,10,2020-3-21 diff --git a/preprocess_data_2015.R b/preprocess_data_2015.R deleted file mode 100644 index 22a1eaf..0000000 --- a/preprocess_data_2015.R +++ /dev/null @@ -1,53 +0,0 @@ - -library(lubridate) - -# ## 2013 - 2014 data -# movement_data2 = read.csv("baidu/7 feb/Baidu_LBS_flow_201312-201404.csv") -# cell_user_from_data = read.csv("baidu/7 feb/LBSusers_from_201312-201404.csv") -# cell_user_from_data$date = date(cell_user_from_data$date) + days(1) -# cell_user_to_data = read.csv("baidu/7 feb/LBSusers_to_201312-201404.csv") -# cell_user_to_data$date = date(cell_user_to_data$date) + days(1) -pop_data = read.csv("baidu/2012SHP_2010census_2011_2016CDCPop_adm2.csv") - -relative_move_data = read.csv("baidu/7 feb/parameter_relative_movement_2014 8 feb.csv",stringsAsFactors=F) -relative_move_data$date = date(relative_move_data$date) + years(1) + days(19) -#### 2015 data - -movement_data = read.table("baidu/Baidu_IP_flow_201411_201505.txt",sep="\t",header=T) -cell_user_data = read.table("baidu/IPusers_201411-201511.txt",sep="\t",header=T) -pop_data = read.csv("baidu/2012SHP_2010census_2011_2016CDCPop_adm2.csv") -### - -patNames = unique(movement_data$to)[order(unique(movement_data$to))] -patIDs = 1:length(patNames) -pat_locator = data.frame(patNames,patIDs) - -#add patch names to the movement data -movement_data = merge(movement_data,pat_locator,by.x = "from",by.y = "patNames") -names(movement_data)[which(names(movement_data) == "patIDs")] = "fr_pat" -movement_data = merge(movement_data,pat_locator,by.x = "to",by.y = "patNames") -names(movement_data)[which(names(movement_data) == "patIDs")] = "to_pat" - -#add total numbers of users to movement data -movement_data = merge(movement_data,cell_user_data,by.x = c("from","date"),by.y=c("SHP_CITY_CODE","date")) -names(movement_data)[which(names(movement_data) == "users")] = "fr_users" - -movement_data = merge(movement_data,cell_user_data,by.x = c("to","date"),by.y=c("SHP_CITY_CODE","date")) -names(movement_data)[which(names(movement_data) == "users")] = "to_users" - -#convert dates to format R can read -movement_data$date = ymd(movement_data$date) - - -names(movement_data)[which(names(movement_data) == "move")] = "movers" -# -# missing_dates = c(date("2014-1-17"), date("2014-2-2"),date("2014-2-18"),date("2014-2-20"),date("2014-3-1"),date("2014-3-2")) -# for (dates in 1:length(missing_dates)){ -# replaceday = subset(movement_data,Date == missing_dates[dates] - days(1)) -# replaceday$Date = replaceday$Date + days(1) -# movement_data = rbind(movement_data,replaceday) -# } - -recrate = 1/6 #daily probability of recovery -exposerate = 2.68/6 # R0 of 2.68, 5.8 days till seeking treatment # How many people a single person potentially infects per day -- can be calculated from R0 estimate if you divide R0 by infectious period -exposepd = 3 # incubation period \ No newline at end of file diff --git a/preprocess_data_EU.R b/preprocess_data_EU.R new file mode 100644 index 0000000..4de8387 --- /dev/null +++ b/preprocess_data_EU.R @@ -0,0 +1,71 @@ +library(janitor) +library(lubridate) +library(raster) +library(rgdal) +library(data.table) +library(tidyverse) +library(sf) +library(exactextractr) +nuts3 <- st_read("NUTS_RG_01M_2016_4326_LEVL_3.shp/NUTS_RG_01M_2016_4326_LEVL_3.shp",stringsAsFactors=F) # admin 3 units + +nuts3$IDs = 1:dim(nuts3)[1] +#population raster from WorldPop.org +popdata = raster("ppp_2020_1km_Aggregated.tif") + +nuts3$pop <-exactextractr::exact_extract(popdata, nuts3, fun="sum") +nuts3_popdf=st_drop_geometry(nuts3[,c("IDs","pop")]) +#Google 2019 NUTS3 dataset; forms the baseline movement patterns for our model +movement_data = fread("agg_epi_mobility_corona",stringsAsFactors=F) + + +#Account for smartphone market share across countries when linking Google and Vodafone data +smartphone_penetration = read.csv("smartphone_penetration2018.csv") +smartphone_penetration$smartphone = as.numeric(gsub("[\\%,]", "", smartphone_penetration$Smartphone.penetration))/100 + + +iso2 = read.csv("iso2_csv.csv",stringsAsFactors=F) +iso2$Code[which(iso2$Code=="GB")] = "UK" +smartphone_penetration$ISO = "" +for (i in 1:dim(smartphone_penetration)[1]){ + if (length(which(iso2$Name == smartphone_penetration$Country[i]))){ + smartphone_penetration$ISO[i] = iso2$Code[which(iso2$Name == smartphone_penetration$Country[i])] + }} +#this dataset has some islands and other areas that aren't a part of the mainland country, so we'll remove and just use the country-level estimate +smartphone_penetration=smartphone_penetration[-c(11,15,25,29,33,35),] +nuts3$penetration = 0 +for (i in 1:dim(nuts3)[1]){ + if (length(which(smartphone_penetration$ISO == nuts3$CNTR_CODE[i]))){ + nuts3$penetration[i] = smartphone_penetration$smartphone[which(smartphone_penetration$ISO == nuts3$CNTR_CODE[i])] + }} +nuts3$penetration[which(nuts3$penetration == 0)] = mean(nuts3$penetration[-which(nuts3$penetration ==0 )]) +movement_data$to_name = substr(movement_data$V4,start=4,stop=8) +movement_data$fr_name = substr(movement_data$V3,start=4,stop=8) + + +movement_data$to_ID = 0 +movement_data$fr_ID =0 +movement_data$fr_penetration =0 +movement_data$to_ID = apply(movement_data,1,FUN=function(x){nuts3$IDs[which(nuts3$NUTS_ID == x[6])]}) +movement_data$fr_ID = apply(movement_data,1,FUN=function(x){nuts3$IDs[which(nuts3$NUTS_ID == x[7])]}) + +movement_data$fr_penetration = apply(movement_data,1,FUN=function(x){nuts3$penetration[which(nuts3$NUTS_ID == x[7])]}) +#the movement value itself is the log of a relative flow value. so we'll exponentiate to get the original relative population flow value +movement_data$move = exp(movement_data$V5) + +movement_data$pop_fr = 0 +movement_data$pop_fr = apply(movement_data,1,FUN=function(x){nuts3$pop[which(nuts3$NUTS_ID == x[7])]}) +#we adjust population flow values usign population in NUTS3area, further adjusted for smartphone penetration in that area. +movement_data$glh = log(movement_data$move/(movement_data$pop_fr * movement_data$fr_penetration)) +#this linear model includes only "glh" as a predictor for the probability of transition in the vodafone data +movement_model = readRDS("glm_model_log.gz") + +#predict the probability of transition using the adjusted google flow +movement_data$movenew = exp(predict(movement_model,re.form=NA,newdata=movement_data)) + +patNames = nuts3$NUTS_ID +patIDs = nuts3$IDs +pat_locator = data.frame(patNames,patIDs,nuts3$pop) +names(pat_locator)[which(names(pat_locator)== "nuts3.pop")] = "pop" +pat_locator$pop[which(is.na(pat_locator$pop))] = 1 + + diff --git a/preprocess_small.R b/preprocess_small.R deleted file mode 100644 index 9230f97..0000000 --- a/preprocess_small.R +++ /dev/null @@ -1,30 +0,0 @@ - -library(lubridate) - -# ## 2013 - 2014 data -# movement_data2 = read.csv("baidu/7 feb/Baidu_LBS_flow_201312-201404.csv") -# cell_user_from_data = read.csv("baidu/7 feb/LBSusers_from_201312-201404.csv") -# cell_user_from_data$date = date(cell_user_from_data$date) + days(1) -# cell_user_to_data = read.csv("baidu/7 feb/LBSusers_to_201312-201404.csv") -# cell_user_to_data$date = date(cell_user_to_data$date) + days(1) - -movement_data = read.table("testmove.csv",sep=",",header=T) - -patNames = unique(movement_data$to)[order(unique(movement_data$to))] -patIDs = 1:length(patNames) -pat_locator = data.frame(patNames,patIDs) - -#convert dates to format R can read -movement_data$date = ymd("2020-05-01") - -# -# missing_dates = c(date("2014-1-17"), date("2014-2-2"),date("2014-2-18"),date("2014-2-20"),date("2014-3-1"),date("2014-3-2")) -# for (dates in 1:length(missing_dates)){ -# replaceday = subset(movement_data,Date == missing_dates[dates] - days(1)) -# replaceday$Date = replaceday$Date + days(1) -# movement_data = rbind(movement_data,replaceday) -# } - -recrate = 1/6 #daily probability of recovery -exposerate = 2.68/6 # R0 of 2.68, 5.8 days till seeking treatment # How many people a single person potentially infects per day -- can be calculated from R0 estimate if you divide R0 by infectious period -exposepd = 3 # incubation period \ No newline at end of file diff --git a/run_model_2015.R b/run_model_2015.R deleted file mode 100644 index a595296..0000000 --- a/run_model_2015.R +++ /dev/null @@ -1,173 +0,0 @@ -####Model running code for BEARmod v.0.6 -rm(list=ls()) -library(data.table) # fread - fastly reading data -library(lubridate) - -# setwd('//worldpop.files.soton.ac.uk/Worldpop/Projects/WP519091_Seasonality') -# setwd('D:/OneDrive - University of Southampton/Wuhan Coronavirus R0/Spread risk') -#setwd('C:/Users/sl4m18/OneDrive - University of Southampton/Wuhan Coronavirus R0/Spread risk') - - -source("bearmod/BEARmod_development/bearmod_fx_dev.R") -# source("bearmod/bearmod_fx.R") -source("bearmod/BEARmod_development/preprocess_data_2015_dev.R") -#Initial parameters -NPat = length(patNames) -patnInf = rep(0,NPat) -patnExp = c(rep(0,NPat) ) - - - -#start infection in Wuhan -patnInf[which(patNames == 42010000)] = 10 - - -# pop2014 or pop2015 -pat_locator = merge(pat_locator,pop_data[,c("SHP_CITY_CODE","TOTAL_POP2015")],by.x="patNames",by.y="SHP_CITY_CODE") -names(pat_locator)[which(names(pat_locator) == "TOTAL_POP2015")] = "pop" - -#recovery rate variable -recover_df = data.frame(date = seq(from=min(movement_data$date),to=max(movement_data$date),by="days"),recrate = recrate) - recover_df$recrate[which(recover_df$date > "2015-2-18")] = 1/3 - - -#### Running the model #### - - - -HPop = InitiatePop(pat_locator,patnInf,patnExp) -###dates of simulation - -# input_dates = seq(date("2015-1-5"),date("2015-3-25"),by="days") -# input_dates = seq(date("2015-1-2"),date("2015-3-3"),by="days") # from 2020-12-08 to 2 wks after LNY's day -# input_dates = seq(date("2015-1-2"),date("2015-3-17"),by="days") # coresponding to the period from 2020-12-08 to 4 wks after LNY's day -#day_list = seq(date("2013-12-02"),date("2014-2-13"),by="days") - - input_dates = seq(date("2014-12-26"),date("2015-2-1"),by="days") - # input_dates = seq(date("2013-12-02"),date("2014-2-13"),by="days") # coresponding to the period from 2020-12-08 to 2 wks after LNY's day -# input_dates = seq(date("2013-12-02"),date("2014-2-27"),by="days") # coresponding to the period from 2020-12-08 to 4 wks after LNY's day -results = list() - -for (run in 1:500){ - - HPop_update = runSim(HPop,pat_locator,relative_move_data,movement_data, input_dates,recover_df, exposerate,exposepd,exposed_pop_inf_prop = .25, TSinday = 1) - print(paste0("Run # ",run)) - results[[run]] = HPop_update$all_spread -} -save(results,file="results.RData") -# -# ###### Master function #### -# HPop_update = runSim(HPop,pat_locator,relative_move_data,movement_data, input_dates,recover_df, exposerate,exposepd) -# -# -# ##Plotting the results -# newHPop = HPop_update$HPop -# epidemic_curve = HPop_update$epidemic_curve -# all_spread = HPop_update$all_spread -# epidemic_curve$Date_2020 <- seq(as.Date('2020-12-08'),(as.Date('2020-12-08') + (max(input_dates) - min(input_dates))), by='days') -# epidemic_curve$Date_2020_report <- epidemic_curve$Date_2020 + exposepd + 4 # 4 days - diagnosis, report delay -# epidemic_curve$inf_accu <- epidemic_curve$inf -# for(i in 2:nrow(epidemic_curve)){ -# epidemic_curve$inf_accu[i] <- epidemic_curve$inf_accu[i-1] + epidemic_curve$inf[i] -# } -# -# plot(epidemic_curve$Date_2020,epidemic_curve$inf) -# plot(epidemic_curve$Date_2020_report,epidemic_curve$inf) -# plot(epidemic_curve$Date_2020_report,epidemic_curve$inf_accu) -# -# -# # -# # ####Many iterations -# # output_df=matrix(0,0,340) -# # for (run in 1:1000){ -# # print(run) -# # HPop_update = runSim(HPop,pat_locator,movement_data, input_dates, recrate, exposerate,exposepd,relative_movement = 1) -# # -# # -# # newHPop = HPop_update$HPop -# # epidemic_curve = HPop_update$epidemic_curve -# # all_spread = HPop_update$all_spread -# # output_df = rbind(output_df,t(all_spread[,dim(all_spread)[2]])) -# # } -# # -# # output_df2 = output_df > 0 -# # colnames(output_df2) = newHPop$names -# # -# # -# # chn_shp$prob_CNY = 0 -# # for (i in 1:dim(chn_shp)[1]){ -# # if (length(which(colnames(output_df2) == chn_shp$ZONECODE[i]))>0){ -# # chn_shp$prob_CNY[i] = colSums(output_df2)[which(colnames(output_df2) == chn_shp$ZONECODE[i])]/1000 -# # }} -# # ggplot() + -# # geom_sf(chn_shp, mapping = aes(fill = prob_CNY) ) + scale_fill_distiller(palette="YlOrRd",direction=1) -# # ####Animation code -# # chn_shp -# # -# # ####Animation code -# # -# # #Numbers of people infected per patch, with IDs -# # outputdf = data.frame(ID = newHPop$names) -# # output_data = cbind(outputdf,all_spread) -# # library(reshape2) -# # melt_data = melt(output_data,id.vars="ID") -# # -# # library(ggplot2) -# # library(ggmap) -# # library(rgeos) -# # library("plyr") -# # library("ggplot2") -# # library("maptools") -# # library(raster) -# # library(igraph) -# # library(rgdal) -# # library(MASS) -# # library(fossil) -# # library(McSpatial) -# # library(geosphere) -# # library(ggrepel) -# # library(hexbin) -# # library(gganimate) -# # library(viridis) -# # library(sf) -# # chn_shp = read_sf(dsn="baidu/ChinaShapefile2012",layer="dishi") -# # library(ggplot2) -# # library(gganimate) -# # library(ggmap) -# # library(maps) -# # library(gapminder) -# # -# # -# # library(animation) -# # -# # -# # dev.control('enable') -# # -# # oopts = ani.options(interval = 0.3) -# # -# # -# # ani.options(oopts) -# # ani.record(reset = TRUE) -# # i=1 -# # -# # plots=list() -# # melt_data$variable = as.numeric(melt_data$variable) -# # for (i in 1:(as.numeric(date("2015-1-30")-date("2014-12-01")))){ -# # melt_data2= subset(melt_data,as.numeric(variable) ==i) -# # chn_shp2 = merge(chn_shp,melt_data2,by.x="ZONECODE",by.y="ID",all.x=T) -# # chn_shp2$value= round(chn_shp2$value) -# # plots[[i]] = ggplot() + -# # geom_sf(chn_shp2,mapping=aes(),fill="light grey") + -# # geom_sf(subset(chn_shp2,value>0), mapping = aes(fill = value) ) + -# # scale_fill_distiller(palette="YlOrRd",direction=1,limits = c(.1,max(melt_data$value)),trans="log10",name="# inf")+ -# # ggtitle(i) -# # #scale_fill_viridis(direction=-1,option="A",trans="log10")+ -# # theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.title=element_blank(), axis.text=element_blank(), axis.ticks=element_blank(), -# # panel.background = element_blank(), axis.line = element_line(colour = "white")) -# # print(i) -# # -# # } -# # trace.animate <- function(plotter) { for (i in 1:length(plotter)) { -# # print(plotter[[i]]) -# # }} -# # saveGIF(trace.animate(plots),interval=.3,movie.name="cov_model.gif",ani.width=800,ani.height=800) diff --git a/run_model_EU_all_runs.R b/run_model_EU_all_runs.R new file mode 100644 index 0000000..c3fca7a --- /dev/null +++ b/run_model_EU_all_runs.R @@ -0,0 +1,108 @@ +rm(list=ls()) + + +#This runs the intermittent lockdown simulation runs +library(data.table) +library(lubridate) +library(countrycode) +library(parallel) +library(countrycode) + +source("eu_model_init.R") + +HPop = InitiatePop(pat_locator,patnInf,patnExp) +#we can stipulate if the lockdown effect is driven by data ("real"), or entirely simulated using parameters that determine relative contact when countries are under lockdown "simulated" +run_lockdown_type = "real" +run_lockdown_length = 4 +run_lockdown_relative_contact = .35 +run_no_lockdown_relative_contact = .8 #reduction in contact assumed if no lockdown occurred in "simulated" runs + +countries = c("DE","UK","PL") + +pivot_date = as.Date("2020-04-08") +end_lockdown_date = pivot_date + weeks(run_lockdown_length) + +for (country_id in 1:length(countries)){ + country_left_out = countries[country_id] +glhflows_final = glhflows_all + +if (run_lockdown_type == "simulated"){ + glhflows_final$r0 = mean(glhflows_final$r0) + glhflows_lockdown$r0 = mean(glhflows_lockdown$r0) + glhflows_lockdown_extra$r0 = mean(glhflows_lockdown_extra$r0) + glhflows_nolockdown$r0 = mean(glhflows_nolockdown$r0) +} +while (max(glhflows_final$date) < end_lockdown_date){ + + glhflows_add = glhflows_lockdown_extra + if (run_lockdown_type == "simulated"){ + glhflows_add$relative_move = run_lockdown_relative_contact + glhflows_add$relative_contact = glhflows_add$r0 * recprob *rescale_contact* run_lockdown_relative_contact + if (!is.na(country_left_out)){ + + glhflows_add$relative_move[glhflows_add$country == country_left_out] =run_no_lockdown_relative_contact + glhflows_add$relative_contact[glhflows_add$country == country_left_out] = glhflows_add$r0[glhflows_add$country == country_left_out] * recprob *rescale_contact *run_no_lockdown_relative_contact + } + } + + if (run_lockdown_type == "real"){ + if (!is.na(country_left_out)){ + for (rowid in which(glhflows_add$country == country_left_out)){ + glhflows_add$relative_move[rowid] = glhflows_nolockdown$change[which(glhflows_nolockdown$NUTS3fr == glhflows_add$NUTS3fr[rowid])] + glhflows_add$relative_contact[rowid] = glhflows_add$r0[rowid] * recprob *rescale_contact * glhflows_nolockdown$change[which(glhflows_nolockdown$NUTS3fr == glhflows_add$NUTS3fr[rowid])] + } + } + } + glhflows_add$date = max(glhflows_final$date) + days(7) + #print(end_date - max(glhflows_final$date)) + glhflows_final = rbind(glhflows_final,glhflows_add) +} + + +while (max(glhflows_final$date) < end_date){ + + glhflows_add = glhflows_nolockdown + if (run_lockdown_type == "simulated"){ + glhflows_add$relative_move = run_no_lockdown_relative_contact + glhflows_add$relative_contact = glhflows_add$r0 * recprob *rescale_contact * run_no_lockdown_relative_contact + } + glhflows_add$date = max(glhflows_final$date) + days(7) + print(end_date - max(glhflows_final$date)) + glhflows_final = rbind(glhflows_final,glhflows_add) +} +exposerate = 1 + +glhflows_final$from = glhflows_final$NUTS3fr + + +HPop_new <- runSimbinder(glhflows_final) + +HPop_new$epidemic_curve$lockdown_type = run_lockdown_type +HPop_new$epidemic_curve$sim_relative_contact = run_lockdown_relative_contact +HPop_new$epidemic_curve$lockdown_length = run_lockdown_length +HPop_new$epidemic_curve$country = countries[country_id] + +HPop_new$all_spread$lockdown_type = run_lockdown_type +HPop_new$all_spread$sim_relative_contact = run_lockdown_relative_contact +HPop_new$all_spread$lockdown_length = run_lockdown_length +HPop_new$all_spread$country = countries[country_id] + +all_movement = as.data.frame(HPop_new$total_movement) +all_movement$lockdown_type = run_lockdown_type +all_movement$sim_relative_contact = run_lockdown_relative_contact +all_movement$lockdown_length = run_lockdown_length +all_movement$country =countries[country_id] + +all_spread_total = as.data.frame(HPop_new$all_spread_total) +all_spread_total$lockdown_type = run_lockdown_type +all_spread_total$sim_relative_contact = run_lockdown_relative_contact +all_spread_total$lockdown_length = run_lockdown_length +all_spread_total$country = countries[country_id] + +basefilename = paste0("ldtype",run_lockdown_type,"_ldlength",run_lockdown_length,"_sim-contact",run_lockdown_relative_contact*10,"_ctry",countries[country_id]) + +write.csv(HPop_new$epidemic_curve,paste0("results/epicurve2_",basefilename,".csv")) +write.csv(HPop_new$all_spread,paste0("results/allspread2_",basefilename,".csv")) +write.csv(all_spread_total,paste0("results/all_spread_total2_",basefilename,".csv")) + +} diff --git a/run_model_small.R b/run_model_small.R deleted file mode 100644 index 21fed95..0000000 --- a/run_model_small.R +++ /dev/null @@ -1,38 +0,0 @@ -####Model running code for BEARmod v.0.6 -rm(list=ls()) -library(data.table) # fread - fastly reading data -library(lubridate) - -source("bearmod_fx.R") - source("preprocess_small.R") -#Initial parameters -NPat = length(patNames) -patnInf = rep(0,NPat) -patnExp = c(rep(0,NPat) ) - -pat_locator$pop = 100 - -#start infection in Wuhan -patnInf[which(patNames == 1)] = 50 -#recovery rate variable -recover_df = data.frame(date = seq(from=min(movement_data$date),to=max(movement_data$date),by="days"),recrate = recrate) -relative_move_data=data.frame(date = "2020-05-01",from = patIDs,relative_move = .1) -#### Running the model #### - - - -HPop = InitiatePop(pat_locator,patnInf,patnExp) -###dates of simulation - - - input_dates = rep("2020-05-01",50) -results = list() - -for (run in 1:500){ - - HPop_update = runSim(HPop,pat_locator,relative_move_data,movement_data, input_dates,recover_df, exposerate,exposepd,exposed_pop_inf_prop = 0, TSinday = 1) - print(paste0("Run # ",run)) - results[[run]] = HPop_update$all_spread -} -save(results,file="results.RData") -# \ No newline at end of file diff --git a/smartphone_penetration2018.csv b/smartphone_penetration2018.csv new file mode 100644 index 0000000..ca30250 --- /dev/null +++ b/smartphone_penetration2018.csv @@ -0,0 +1,51 @@ +Rank,Flag,Country,Total population,Smartphone penetration,Smartphone users +1,United Kingdom,United Kingdom,"66,574,000",82.2%,"54,713,000" +2,Netherlands,Netherlands,"17,084,000",79.3%,"13,547,000" +3,Sweden,Sweden,"9,983,000",78.8%,"7,864,000" +4,Germany,Germany,"82,293,000",78.8%,"64,830,000" +5,United States,United States,"326,767,000",77.0%,"251,688,000" +6,Belgium,Belgium,"11,499,000",76.6%,"8,813,000" +7,France,France,"65,233,000",76.0%,"32,598,000" +8,Spain,Spain,"46,397,000",72.5%,"33,631,000" +9,Canada,Canada,"36,954,000",72.1%,"26,635,000" +10,Australia,Australia,"24,772,000",68.6%,"16,999,000" +11,South Korea,South Korea,"51,164,000",68.0%,"34,562,000" +12,Kazakhstan,Kazakhstan,"18,404,000",64.9%,"11,938,000" +13,Poland,Poland,"38,105,000",64.0%,"24,371,000" +14,Russia,Russian Federation,"143,965,000",63.8%,"91,865,000" +15,Taiwan,Taiwan,"23,694,000",60.0%,"14,223,000" +16,Italy,Italy,"59,291,000",58.0%,"34,394,000" +17,Malaysia,Malaysia,"32,042,000",57.5%,"18,437,000" +18,Japan,Japan,"127,185,000",55.3%,"70,327,000" +19,China,China,"1,415,046,000",55.3%,"782,848,000" +20,Romania,Romania,"19,581,000",53.8%,"10,538,000" +21,Ukraine,Ukraine,"44,009,000",48.3%,"21,276,000" +22,Argentina,Argentina,"44,689,000",46.9%,"20,979,000" +23,Saudi Arabia,Saudi Arabia,"33,554,000",46.0%,"15,449,000" +24,Mexico,Mexico,"130,759,000",45.6%,"59,597,000" +25,Philippines,Philippines,"106,512,000",44.9%,"47,858,000" +26,Chile,Chile,"18,197,000",44.2%,"8,049,000" +27,Thailand,Thailand,"69,183,000",43.7%,"30,217,000" +28,Brazil,Brazil,"210,868,000",41.3%,"87,172,000" +29,Venezuela,Venezuela,"32,381,000",40.8%,"13,224,000" +30,Colombia,Colombia,"49,465,000",39.8%,"19,669,000" +31,Morocco,Morocco,"36,192,000",37.9%,"13,707,000" +32,Turkey,Turkey,"81,917,000",37.9%,"31,060,000" +33,Vietnam,Vietnam,"96,491,000",37.7%,"36,378,000" +34,South Africa,South Africa,"57,398,000",35.5%,"20,371,000" +35,Iran,Iran (Islamic Republic of),"82,012,000",64.6%,"53,200,000" +36,Peru,Peru,"32,552,000",32.1%,"10,462,000" +37,Uzbekistan,Uzbekistan,"32,365,000",31.3%,"10,142,000" +38,Algeria,Algeria,"42,008,000",29.1%,"12,204,000" +39,Egypt,Egypt,"99,376,000",28.0%,"27,852,000" +40,India,India,"1,354,052,000",27.7%,"374,893,000" +41,Indonesia,Indonesia,"266,795,000",27.4%,"73,155,000" +42,Ghana,Ghana,"29,464,000",24.0%,"7,060,000" +43,Myanmar,Myanmar,"53,856,000",21.8%,"11,722,000" +44,Kenya,Kenya,"50,951,000",20.9%,"10,668,000" +45,Sudan,Sudan,"41,512,000",19.7%,"8,176,000" +46,Bangladesh,Bangladesh,"166,368,000",16.1%,"26,827,000" +47,Uganda,Uganda,"44,271,000",15.6%,"6,922,000" +48,Pakistan[2],Pakistan,"200,814,000",13.8%[3],"27,730,000" +49,Nigeria,Nigeria,"195,875,000",13.0%,"25,552,000" +50,Ethiopia,Ethiopia,"107,535,000",11.2%,"12,014,000" diff --git a/testmove.csv b/testmove.csv deleted file mode 100644 index e3257d6..0000000 --- a/testmove.csv +++ /dev/null @@ -1,6 +0,0 @@ -date,from,to,movers,fr_pat,to_pat,fr_users,to_users -1,1,2,10,1,2,100,100 -1,1,3,5,1,3,100,100 -1,1,4,4,1,4,100,100 -1,1,5,3,1,5,100,100 -1,5,1,8,5,1,100,100