{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "This is surveillance 1.18.0. For overview type 'help(surveillance)'.\n", "\n", "Registered S3 method overwritten by 'cli':\n", " method from \n", " print.boxx spatstat\n", "\n", "rstan (Version 2.19.3, GitRev: 2e1f913d3ca3)\n", "\n", "For execution on a local, multicore CPU with excess RAM we recommend calling\n", "options(mc.cores = parallel::detectCores()).\n", "To avoid recompilation of unchanged Stan programs, we recommend calling\n", "rstan_options(auto_write = TRUE)\n", "\n", "For improved execution time, we recommend calling\n", "Sys.setenv(LOCAL_CPPFLAGS = '-march=corei7 -mtune=corei7')\n", "although this causes Stan to throw an error on a few processors.\n", "\n" ] }, { "data": { "text/html": [ "'R version 4.0.0 Patched (2020-05-24 r78561)'" ], "text/latex": [ "'R version 4.0.0 Patched (2020-05-24 r78561)'" ], "text/markdown": [ "'R version 4.0.0 Patched (2020-05-24 r78561)'" ], "text/plain": [ "[1] \"R version 4.0.0 Patched (2020-05-24 r78561)\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "libraries = c(\"dplyr\", \"magrittr\", \"tidyr\", \"surveillance\", \"rstan\") \n", "for(x in libraries) { library(x,character.only=TRUE,warn.conflicts=FALSE,quietly=TRUE) }\n", "\n", "'%&%' = function(x,y)paste0(x,y)\n", "\n", "R.Version()$version.string\n", "\n", "options(mc.cores = parallel::detectCores())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Loading the dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "137" ], "text/latex": [ "137" ], "text/markdown": [ "137" ], "text/plain": [ "[1] 137" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 15404 × 6
exp_typeis_asymptomaticonsettime_onsetreporttime_report
<chr><int><date><dbl><date><dbl>
imported02020-01-03 9NANA
imported02020-01-1420NANA
imported02020-01-2127NANA
imported02020-01-2329NANA
imported02020-01-2228NANA
imported02020-01-2632NANA
domestic02020-01-1420NANA
domestic02020-01-2026NANA
domestic02020-01-2329NANA
domestic02020-01-2531NANA
imported02020-01-2430NANA
domestic02020-01-2026NANA
imported02020-01-3036NANA
imported02020-01-2430NANA
domestic02020-01-2430NANA
domestic02020-02-0845NANA
domestic02020-02-0239NANA
domestic02020-01-2228NANA
domestic02020-01-2935NANA
domestic02020-01-3137NANA
imported02020-02-0340NANA
domestic02020-01-3137NANA
domestic02020-02-1047NANA
domestic02020-02-0542NANA
domestic02020-02-0441NANA
domestic02020-01-2026NANA
domestic02020-02-0138NANA
imported02020-02-1350NANA
domestic1NANA2020-02-1552
domestic1NANA2020-02-1552
..................
domestic02020-05-06133NA NA
domestic1NA NA2020-05-09136
domestic02020-04-29126NA NA
domestic02020-05-06133NA NA
domestic02020-04-26123NA NA
domestic02020-05-06133NA NA
domestic02020-05-03130NA NA
domestic02020-05-04131NA NA
domestic02020-04-30127NA NA
domestic02020-05-07134NA NA
domestic02020-05-02129NA NA
domestic02020-04-26123NA NA
domestic02020-04-24121NA NA
domestic02020-04-20117NA NA
domestic02020-05-06133NA NA
domestic1NA NA2020-05-09136
domestic02020-04-18115NA NA
domestic02020-05-02129NA NA
domestic02020-04-28125NA NA
domestic02020-05-02129NA NA
domestic02020-05-06133NA NA
domestic02020-04-26123NA NA
domestic02020-05-01128NA NA
domestic02020-05-06133NA NA
domestic02020-05-03130NA NA
domestic02020-05-05132NA NA
domestic02020-04-30127NA NA
domestic02020-05-06133NA NA
domestic1NA NA2020-05-09136
domestic1NA NA2020-05-09136
\n" ], "text/latex": [ "A data.frame: 15404 × 6\n", "\\begin{tabular}{llllll}\n", " exp\\_type & is\\_asymptomatic & onset & time\\_onset & report & time\\_report\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t imported & 0 & 2020-01-03 & 9 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-14 & 20 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-21 & 27 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-23 & 29 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-22 & 28 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-26 & 32 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-14 & 20 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-20 & 26 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-23 & 29 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-25 & 31 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-24 & 30 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-20 & 26 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-30 & 36 & NA & NA\\\\\n", "\t imported & 0 & 2020-01-24 & 30 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-24 & 30 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-08 & 45 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-02 & 39 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-22 & 28 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-29 & 35 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-31 & 37 & NA & NA\\\\\n", "\t imported & 0 & 2020-02-03 & 40 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-31 & 37 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-10 & 47 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-05 & 42 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-04 & 41 & NA & NA\\\\\n", "\t domestic & 0 & 2020-01-20 & 26 & NA & NA\\\\\n", "\t domestic & 0 & 2020-02-01 & 38 & NA & NA\\\\\n", "\t imported & 0 & 2020-02-13 & 50 & NA & NA\\\\\n", "\t domestic & 1 & NA & NA & 2020-02-15 & 52\\\\\n", "\t domestic & 1 & NA & NA & 2020-02-15 & 52\\\\\n", "\t ... & ... & ... & ... & ... & ...\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 1 & NA & NA & 2020-05-09 & 136\\\\\n", "\t domestic & 0 & 2020-04-29 & 126 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-26 & 123 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-03 & 130 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-04 & 131 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-30 & 127 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-07 & 134 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-02 & 129 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-26 & 123 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-24 & 121 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-20 & 117 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 1 & NA & NA & 2020-05-09 & 136\\\\\n", "\t domestic & 0 & 2020-04-18 & 115 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-02 & 129 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-28 & 125 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-02 & 129 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-26 & 123 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-01 & 128 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-03 & 130 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-05 & 132 & NA & NA\\\\\n", "\t domestic & 0 & 2020-04-30 & 127 & NA & NA\\\\\n", "\t domestic & 0 & 2020-05-06 & 133 & NA & NA\\\\\n", "\t domestic & 1 & NA & NA & 2020-05-09 & 136\\\\\n", "\t domestic & 1 & NA & NA & 2020-05-09 & 136\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 15404 × 6\n", "\n", "| exp_type <chr> | is_asymptomatic <int> | onset <date> | time_onset <dbl> | report <date> | time_report <dbl> |\n", "|---|---|---|---|---|---|\n", "| imported | 0 | 2020-01-03 | 9 | NA | NA |\n", "| imported | 0 | 2020-01-14 | 20 | NA | NA |\n", "| imported | 0 | 2020-01-21 | 27 | NA | NA |\n", "| imported | 0 | 2020-01-23 | 29 | NA | NA |\n", "| imported | 0 | 2020-01-22 | 28 | NA | NA |\n", "| imported | 0 | 2020-01-26 | 32 | NA | NA |\n", "| domestic | 0 | 2020-01-14 | 20 | NA | NA |\n", "| domestic | 0 | 2020-01-20 | 26 | NA | NA |\n", "| domestic | 0 | 2020-01-23 | 29 | NA | NA |\n", "| domestic | 0 | 2020-01-25 | 31 | NA | NA |\n", "| imported | 0 | 2020-01-24 | 30 | NA | NA |\n", "| domestic | 0 | 2020-01-20 | 26 | NA | NA |\n", "| imported | 0 | 2020-01-30 | 36 | NA | NA |\n", "| imported | 0 | 2020-01-24 | 30 | NA | NA |\n", "| domestic | 0 | 2020-01-24 | 30 | NA | NA |\n", "| domestic | 0 | 2020-02-08 | 45 | NA | NA |\n", "| domestic | 0 | 2020-02-02 | 39 | NA | NA |\n", "| domestic | 0 | 2020-01-22 | 28 | NA | NA |\n", "| domestic | 0 | 2020-01-29 | 35 | NA | NA |\n", "| domestic | 0 | 2020-01-31 | 37 | NA | NA |\n", "| imported | 0 | 2020-02-03 | 40 | NA | NA |\n", "| domestic | 0 | 2020-01-31 | 37 | NA | NA |\n", "| domestic | 0 | 2020-02-10 | 47 | NA | NA |\n", "| domestic | 0 | 2020-02-05 | 42 | NA | NA |\n", "| domestic | 0 | 2020-02-04 | 41 | NA | NA |\n", "| domestic | 0 | 2020-01-20 | 26 | NA | NA |\n", "| domestic | 0 | 2020-02-01 | 38 | NA | NA |\n", "| imported | 0 | 2020-02-13 | 50 | NA | NA |\n", "| domestic | 1 | NA | NA | 2020-02-15 | 52 |\n", "| domestic | 1 | NA | NA | 2020-02-15 | 52 |\n", "| ... | ... | ... | ... | ... | ... |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 1 | NA | NA | 2020-05-09 | 136 |\n", "| domestic | 0 | 2020-04-29 | 126 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 0 | 2020-04-26 | 123 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 0 | 2020-05-03 | 130 | NA | NA |\n", "| domestic | 0 | 2020-05-04 | 131 | NA | NA |\n", "| domestic | 0 | 2020-04-30 | 127 | NA | NA |\n", "| domestic | 0 | 2020-05-07 | 134 | NA | NA |\n", "| domestic | 0 | 2020-05-02 | 129 | NA | NA |\n", "| domestic | 0 | 2020-04-26 | 123 | NA | NA |\n", "| domestic | 0 | 2020-04-24 | 121 | NA | NA |\n", "| domestic | 0 | 2020-04-20 | 117 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 1 | NA | NA | 2020-05-09 | 136 |\n", "| domestic | 0 | 2020-04-18 | 115 | NA | NA |\n", "| domestic | 0 | 2020-05-02 | 129 | NA | NA |\n", "| domestic | 0 | 2020-04-28 | 125 | NA | NA |\n", "| domestic | 0 | 2020-05-02 | 129 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 0 | 2020-04-26 | 123 | NA | NA |\n", "| domestic | 0 | 2020-05-01 | 128 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 0 | 2020-05-03 | 130 | NA | NA |\n", "| domestic | 0 | 2020-05-05 | 132 | NA | NA |\n", "| domestic | 0 | 2020-04-30 | 127 | NA | NA |\n", "| domestic | 0 | 2020-05-06 | 133 | NA | NA |\n", "| domestic | 1 | NA | NA | 2020-05-09 | 136 |\n", "| domestic | 1 | NA | NA | 2020-05-09 | 136 |\n", "\n" ], "text/plain": [ " exp_type is_asymptomatic onset time_onset report time_report\n", "1 imported 0 2020-01-03 9 NA \n", "2 imported 0 2020-01-14 20 NA \n", "3 imported 0 2020-01-21 27 NA \n", "4 imported 0 2020-01-23 29 NA \n", "5 imported 0 2020-01-22 28 NA \n", "6 imported 0 2020-01-26 32 NA \n", "7 domestic 0 2020-01-14 20 NA \n", "8 domestic 0 2020-01-20 26 NA \n", "9 domestic 0 2020-01-23 29 NA \n", "10 domestic 0 2020-01-25 31 NA \n", "11 imported 0 2020-01-24 30 NA \n", "12 domestic 0 2020-01-20 26 NA \n", "13 imported 0 2020-01-30 36 NA \n", "14 imported 0 2020-01-24 30 NA \n", "15 domestic 0 2020-01-24 30 NA \n", "16 domestic 0 2020-02-08 45 NA \n", "17 domestic 0 2020-02-02 39 NA \n", "18 domestic 0 2020-01-22 28 NA \n", "19 domestic 0 2020-01-29 35 NA \n", "20 domestic 0 2020-01-31 37 NA \n", "21 imported 0 2020-02-03 40 NA \n", "22 domestic 0 2020-01-31 37 NA \n", "23 domestic 0 2020-02-10 47 NA \n", "24 domestic 0 2020-02-05 42 NA \n", "25 domestic 0 2020-02-04 41 NA \n", "26 domestic 0 2020-01-20 26 NA \n", "27 domestic 0 2020-02-01 38 NA \n", "28 imported 0 2020-02-13 50 NA \n", "29 domestic 1 NA 2020-02-15 52 \n", "30 domestic 1 NA 2020-02-15 52 \n", "... ... ... ... ... ... ... \n", "15375 domestic 0 2020-05-06 133 NA \n", "15376 domestic 1 NA 2020-05-09 136 \n", "15377 domestic 0 2020-04-29 126 NA \n", "15378 domestic 0 2020-05-06 133 NA \n", "15379 domestic 0 2020-04-26 123 NA \n", "15380 domestic 0 2020-05-06 133 NA \n", "15381 domestic 0 2020-05-03 130 NA \n", "15382 domestic 0 2020-05-04 131 NA \n", "15383 domestic 0 2020-04-30 127 NA \n", "15384 domestic 0 2020-05-07 134 NA \n", "15385 domestic 0 2020-05-02 129 NA \n", "15386 domestic 0 2020-04-26 123 NA \n", "15387 domestic 0 2020-04-24 121 NA \n", "15388 domestic 0 2020-04-20 117 NA \n", "15389 domestic 0 2020-05-06 133 NA \n", "15390 domestic 1 NA 2020-05-09 136 \n", "15391 domestic 0 2020-04-18 115 NA \n", "15392 domestic 0 2020-05-02 129 NA \n", "15393 domestic 0 2020-04-28 125 NA \n", "15394 domestic 0 2020-05-02 129 NA \n", "15395 domestic 0 2020-05-06 133 NA \n", "15396 domestic 0 2020-04-26 123 NA \n", "15397 domestic 0 2020-05-01 128 NA \n", "15398 domestic 0 2020-05-06 133 NA \n", "15399 domestic 0 2020-05-03 130 NA \n", "15400 domestic 0 2020-05-05 132 NA \n", "15401 domestic 0 2020-04-30 127 NA \n", "15402 domestic 0 2020-05-06 133 NA \n", "15403 domestic 1 NA 2020-05-09 136 \n", "15404 domestic 1 NA 2020-05-09 136 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "datestar = as.Date(\"2020-05-10\")\n", "datemin = as.Date(\"2019-12-25\") # particular choice\n", "\n", "read.csv(\"../data/JapaneseDataCOVID19 (\"%&%format(datestar,\"%y%m%d\")%&%\").csv\") %>%\n", " mutate(report = if_else(is.na(confirmed), reported, confirmed), \n", " # report and onset as Dates\n", " report = as.Date(report), \n", " onset = as.Date(onset),\n", " # time_report and time_onset as the number of days since datemin\n", " time_onset = as.numeric(onset - datemin), \n", " time_report = as.numeric(report - datemin)) %>%\n", " # removing original column as no need anymore\n", " select(-confirmed, -reported) -> df\n", "\n", "# nicer order ot the columns\n", "df %<>% select(exp_type, is_asymptomatic, onset, time_onset, report, time_report)\n", "\n", "# number of days between the cutoff time and datemin\n", "(tstar = as.numeric(datestar - datemin))\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "`summarise()` regrouping output by 'exp_type' (override with `.groups` argument)\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 3
timedomesticimported
<dbl><int><int>
2200
2300
2400
2500
3400
13600
\n" ], "text/latex": [ "A tibble: 6 × 3\n", "\\begin{tabular}{lll}\n", " time & domestic & imported\\\\\n", " & & \\\\\n", "\\hline\n", "\t 22 & 0 & 0\\\\\n", "\t 23 & 0 & 0\\\\\n", "\t 24 & 0 & 0\\\\\n", "\t 25 & 0 & 0\\\\\n", "\t 34 & 0 & 0\\\\\n", "\t 136 & 0 & 0\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 3\n", "\n", "| time <dbl> | domestic <int> | imported <int> |\n", "|---|---|---|\n", "| 22 | 0 | 0 |\n", "| 23 | 0 | 0 |\n", "| 24 | 0 | 0 |\n", "| 25 | 0 | 0 |\n", "| 34 | 0 | 0 |\n", "| 136 | 0 | 0 |\n", "\n" ], "text/plain": [ " time domestic imported\n", "1 22 0 0 \n", "2 23 0 0 \n", "3 24 0 0 \n", "4 25 0 0 \n", "5 34 0 0 \n", "6 136 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# At the moment we have a line-list, but we also want to have the number of imported and domestic cases per day\n", "# so we need to count and change the dataframe from long to wide format \n", "df %>%\n", " # respectively to the day of illness onset (time_onset)\n", " select(exp_type, time_onset) %>% \n", " # to count the cases we group by exp_type (domestic vs imported) and by time_onset\n", " group_by(exp_type, time_onset) %>% \n", " summarize(n = n()) %>%\n", " # then we transform the dataframe to the wide format\n", " spread(exp_type, n) %>% \n", " # however some days are missing because there were no cases on those days (e.g. at the beginning of the outbreak)\n", " # so we account for all subsequent days from datemin to datestar\n", " right_join(expand_grid(time_onset = seq(from = 1, to = tstar-1, by = 1)), by='time_onset') %>% \n", " # those missing days would have NAs, so we replace them with zeros\n", " replace(is.na(.), 0) %>%\n", " # for simplicity renaming the time columns\n", " rename(time = time_onset) -> Df_cases\n", "\n", "Df_cases %>% tail" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "`summarise()` regrouping output by 'exp_type' (override with `.groups` argument)\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 5
timedomestic_unobsimported_unobsdomesticimported
<dbl><int><int><int><int>
131270280
132270190
133150170
134110 70
135120 40
136110 00
\n" ], "text/latex": [ "A tibble: 6 × 5\n", "\\begin{tabular}{lllll}\n", " time & domestic\\_unobs & imported\\_unobs & domestic & imported\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t 131 & 27 & 0 & 28 & 0\\\\\n", "\t 132 & 27 & 0 & 19 & 0\\\\\n", "\t 133 & 15 & 0 & 17 & 0\\\\\n", "\t 134 & 11 & 0 & 7 & 0\\\\\n", "\t 135 & 12 & 0 & 4 & 0\\\\\n", "\t 136 & 11 & 0 & 0 & 0\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 5\n", "\n", "| time <dbl> | domestic_unobs <int> | imported_unobs <int> | domestic <int> | imported <int> |\n", "|---|---|---|---|---|\n", "| 131 | 27 | 0 | 28 | 0 |\n", "| 132 | 27 | 0 | 19 | 0 |\n", "| 133 | 15 | 0 | 17 | 0 |\n", "| 134 | 11 | 0 | 7 | 0 |\n", "| 135 | 12 | 0 | 4 | 0 |\n", "| 136 | 11 | 0 | 0 | 0 |\n", "\n" ], "text/plain": [ " time domestic_unobs imported_unobs domestic imported\n", "1 131 27 0 28 0 \n", "2 132 27 0 19 0 \n", "3 133 15 0 17 0 \n", "4 134 11 0 7 0 \n", "5 135 12 0 4 0 \n", "6 136 11 0 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# because some cases do not have date of illness onset, we still want to count them and probably do the backprojection later\n", "# so we repeat the previous procedure but by the day of report\n", "df %>% \n", " filter(is.na(time_onset)) %>% \n", " select(exp_type, time_report) %>% \n", " group_by(exp_type, time_report) %>% \n", " summarize(n = n()) %>% \n", " spread(exp_type, n) %>% \n", " # we mark those cases with \"_unobs\"-postfix\n", " rename(imported_unobs = imported, \n", " domestic_unobs = domestic, \n", " time = time_report) %>% \n", " # joining with the previously obtained dataframe\n", " right_join(Df_cases, by='time') %>% \n", " # again some days have zero counts, so they will be NAs after the right_join => making them zeros\n", " replace(is.na(.), 0) %>%\n", " arrange(time) -> Df_cases\n", "\n", "Df_cases %>% tail" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Backprojection" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 5
timedomestic_unobsimported_unobsdomesticimported
<dbl><dbl><dbl><dbl><dbl>
1420000
1430000
1440000
1450000
1460000
1470000
\n" ], "text/latex": [ "A tibble: 6 × 5\n", "\\begin{tabular}{lllll}\n", " time & domestic\\_unobs & imported\\_unobs & domestic & imported\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t 142 & 0 & 0 & 0 & 0\\\\\n", "\t 143 & 0 & 0 & 0 & 0\\\\\n", "\t 144 & 0 & 0 & 0 & 0\\\\\n", "\t 145 & 0 & 0 & 0 & 0\\\\\n", "\t 146 & 0 & 0 & 0 & 0\\\\\n", "\t 147 & 0 & 0 & 0 & 0\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 5\n", "\n", "| time <dbl> | domestic_unobs <dbl> | imported_unobs <dbl> | domestic <dbl> | imported <dbl> |\n", "|---|---|---|---|---|\n", "| 142 | 0 | 0 | 0 | 0 |\n", "| 143 | 0 | 0 | 0 | 0 |\n", "| 144 | 0 | 0 | 0 | 0 |\n", "| 145 | 0 | 0 | 0 | 0 |\n", "| 146 | 0 | 0 | 0 | 0 |\n", "| 147 | 0 | 0 | 0 | 0 |\n", "\n" ], "text/plain": [ " time domestic_unobs imported_unobs domestic imported\n", "1 142 0 0 0 0 \n", "2 143 0 0 0 0 \n", "3 144 0 0 0 0 \n", "4 145 0 0 0 0 \n", "5 146 0 0 0 0 \n", "6 147 0 0 0 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# if the observed counts are close to the right end, the backprojection algorithm can be unstable for them \n", "# as outlined by the developer of the package\n", "# so we will play a bit safer and put additional 10 days after datestar filled with zeros\n", "df_cases = Df_cases %>% rbind(data.frame(time=seq(tstar,tstar+10,1), imported=0, imported_unobs=0, domestic=0, domestic_unobs=0))\n", "df_cases %>% tail" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 30 × 7
timedomestic_unobsimported_unobsdomesticimportedimported_backprojdomestic_backproj
<dbl><dbl><dbl><dbl><dbl><dbl><dbl>
11811501550098.108752345
119 7101620093.958232329
120 8301060086.820185261
121 6601470076.029308817
122 4701150062.129701932
123 2201040047.032092685
124 4701210032.748434689
1251170 940020.166454186
126 490 690010.333683929
127 440 7700 4.207846904
128 420 7000 1.331383489
129 440 5900 0.322522824
130 370 3900 0.057996779
131 270 2800 0.007152493
132 270 1900 0.000000000
133 150 1700 0.000000000
134 110 700 0.000000000
135 120 400 0.000000000
136 110 000 0.000000000
137 00 000 0.000000000
138 00 000 0.000000000
139 00 000 0.000000000
140 00 000 0.000000000
141 00 000 0.000000000
142 00 000 0.000000000
143 00 000 0.000000000
144 00 000 0.000000000
145 00 000 0.000000000
146 00 000 0.000000000
147 00 000 0.000000000
\n" ], "text/latex": [ "A tibble: 30 × 7\n", "\\begin{tabular}{lllllll}\n", " time & domestic\\_unobs & imported\\_unobs & domestic & imported & imported\\_backproj & domestic\\_backproj\\\\\n", " & & & & & & \\\\\n", "\\hline\n", "\t 118 & 115 & 0 & 155 & 0 & 0 & 98.108752345\\\\\n", "\t 119 & 71 & 0 & 162 & 0 & 0 & 93.958232329\\\\\n", "\t 120 & 83 & 0 & 106 & 0 & 0 & 86.820185261\\\\\n", "\t 121 & 66 & 0 & 147 & 0 & 0 & 76.029308817\\\\\n", "\t 122 & 47 & 0 & 115 & 0 & 0 & 62.129701932\\\\\n", "\t 123 & 22 & 0 & 104 & 0 & 0 & 47.032092685\\\\\n", "\t 124 & 47 & 0 & 121 & 0 & 0 & 32.748434689\\\\\n", "\t 125 & 117 & 0 & 94 & 0 & 0 & 20.166454186\\\\\n", "\t 126 & 49 & 0 & 69 & 0 & 0 & 10.333683929\\\\\n", "\t 127 & 44 & 0 & 77 & 0 & 0 & 4.207846904\\\\\n", "\t 128 & 42 & 0 & 70 & 0 & 0 & 1.331383489\\\\\n", "\t 129 & 44 & 0 & 59 & 0 & 0 & 0.322522824\\\\\n", "\t 130 & 37 & 0 & 39 & 0 & 0 & 0.057996779\\\\\n", "\t 131 & 27 & 0 & 28 & 0 & 0 & 0.007152493\\\\\n", "\t 132 & 27 & 0 & 19 & 0 & 0 & 0.000000000\\\\\n", "\t 133 & 15 & 0 & 17 & 0 & 0 & 0.000000000\\\\\n", "\t 134 & 11 & 0 & 7 & 0 & 0 & 0.000000000\\\\\n", "\t 135 & 12 & 0 & 4 & 0 & 0 & 0.000000000\\\\\n", "\t 136 & 11 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 137 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 138 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 139 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 140 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 141 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 142 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 143 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 144 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 145 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 146 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\t 147 & 0 & 0 & 0 & 0 & 0 & 0.000000000\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 30 × 7\n", "\n", "| time <dbl> | domestic_unobs <dbl> | imported_unobs <dbl> | domestic <dbl> | imported <dbl> | imported_backproj <dbl> | domestic_backproj <dbl> |\n", "|---|---|---|---|---|---|---|\n", "| 118 | 115 | 0 | 155 | 0 | 0 | 98.108752345 |\n", "| 119 | 71 | 0 | 162 | 0 | 0 | 93.958232329 |\n", "| 120 | 83 | 0 | 106 | 0 | 0 | 86.820185261 |\n", "| 121 | 66 | 0 | 147 | 0 | 0 | 76.029308817 |\n", "| 122 | 47 | 0 | 115 | 0 | 0 | 62.129701932 |\n", "| 123 | 22 | 0 | 104 | 0 | 0 | 47.032092685 |\n", "| 124 | 47 | 0 | 121 | 0 | 0 | 32.748434689 |\n", "| 125 | 117 | 0 | 94 | 0 | 0 | 20.166454186 |\n", "| 126 | 49 | 0 | 69 | 0 | 0 | 10.333683929 |\n", "| 127 | 44 | 0 | 77 | 0 | 0 | 4.207846904 |\n", "| 128 | 42 | 0 | 70 | 0 | 0 | 1.331383489 |\n", "| 129 | 44 | 0 | 59 | 0 | 0 | 0.322522824 |\n", "| 130 | 37 | 0 | 39 | 0 | 0 | 0.057996779 |\n", "| 131 | 27 | 0 | 28 | 0 | 0 | 0.007152493 |\n", "| 132 | 27 | 0 | 19 | 0 | 0 | 0.000000000 |\n", "| 133 | 15 | 0 | 17 | 0 | 0 | 0.000000000 |\n", "| 134 | 11 | 0 | 7 | 0 | 0 | 0.000000000 |\n", "| 135 | 12 | 0 | 4 | 0 | 0 | 0.000000000 |\n", "| 136 | 11 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 137 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 138 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 139 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 140 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 141 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 142 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 143 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 144 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 145 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 146 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "| 147 | 0 | 0 | 0 | 0 | 0 | 0.000000000 |\n", "\n" ], "text/plain": [ " time domestic_unobs imported_unobs domestic imported imported_backproj\n", "1 118 115 0 155 0 0 \n", "2 119 71 0 162 0 0 \n", "3 120 83 0 106 0 0 \n", "4 121 66 0 147 0 0 \n", "5 122 47 0 115 0 0 \n", "6 123 22 0 104 0 0 \n", "7 124 47 0 121 0 0 \n", "8 125 117 0 94 0 0 \n", "9 126 49 0 69 0 0 \n", "10 127 44 0 77 0 0 \n", "11 128 42 0 70 0 0 \n", "12 129 44 0 59 0 0 \n", "13 130 37 0 39 0 0 \n", "14 131 27 0 28 0 0 \n", "15 132 27 0 19 0 0 \n", "16 133 15 0 17 0 0 \n", "17 134 11 0 7 0 0 \n", "18 135 12 0 4 0 0 \n", "19 136 11 0 0 0 0 \n", "20 137 0 0 0 0 0 \n", "21 138 0 0 0 0 0 \n", "22 139 0 0 0 0 0 \n", "23 140 0 0 0 0 0 \n", "24 141 0 0 0 0 0 \n", "25 142 0 0 0 0 0 \n", "26 143 0 0 0 0 0 \n", "27 144 0 0 0 0 0 \n", "28 145 0 0 0 0 0 \n", "29 146 0 0 0 0 0 \n", "30 147 0 0 0 0 0 \n", " domestic_backproj\n", "1 98.108752345 \n", "2 93.958232329 \n", "3 86.820185261 \n", "4 76.029308817 \n", "5 62.129701932 \n", "6 47.032092685 \n", "7 32.748434689 \n", "8 20.166454186 \n", "9 10.333683929 \n", "10 4.207846904 \n", "11 1.331383489 \n", "12 0.322522824 \n", "13 0.057996779 \n", "14 0.007152493 \n", "15 0.000000000 \n", "16 0.000000000 \n", "17 0.000000000 \n", "18 0.000000000 \n", "19 0.000000000 \n", "20 0.000000000 \n", "21 0.000000000 \n", "22 0.000000000 \n", "23 0.000000000 \n", "24 0.000000000 \n", "25 0.000000000 \n", "26 0.000000000 \n", "27 0.000000000 \n", "28 0.000000000 \n", "29 0.000000000 \n", "30 0.000000000 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "K = nrow(df_cases)\n", "\n", "# Incubation time period is adopted from [Linton et al 2020]\n", "# other research groups give quite similar values of the mean 5.2 days\n", "# see https://github.com/aakhmetz/COVID19IncubationPeriod\n", "inc_fit = list(meanlog=1.519, sdlog=0.615)\n", "incubation_probability = plnorm(1:K, inc_fit$meanlog, inc_fit$sdlog) - plnorm(1:K-1, inc_fit$meanlog, inc_fit$sdlog)\n", "# the surveillance packages requires to keep zero at the beginning\n", "inc_pmf = c(0,incubation_probability[1:41])\n", "# smoothing parameter values for backprojection of imported and domestic\n", "k_used = c(2,2)\n", "\n", "# if the backprojected value falls below this threshold, we set it to zero \n", "# in this case we will avoid arbitrarily small values which make no sense\n", "epsilon = 1e-3\n", "\n", "# backprojection of imported cases\n", "# parameters of the backprojection follows the parameters adopted in the tutorial for the package\n", "# the backprojection is done only if there are imported cases in the database\n", "if (sum(df_cases$imported)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$imported)\n", " bpnp.control = list(k = k_used[1], eps = rep(1e-4,2), iter.max=rep(1000,2), \n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"R\",\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=inc_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " # output result\n", " df_cases['imported_backproj'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['imported_backproj'] = df_cases['imported_backproj']/sum(df_cases['imported_backproj'])*sum(df_cases$imported)\n", "} else \n", " df_cases['imported_backproj'] = 0\n", "\n", "## backprojection of domestic cases (=domesically acquired infections)\n", "if (sum(df_cases$domestic)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$domestic)\n", " bpnp.control = list(k = k_used[2], eps = rep(1e-4,2), iter.max=rep(1000,2), \n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"R\",\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=inc_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " df_cases['domestic_backproj'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['domestic_backproj'] = df_cases['domestic_backproj']/sum(df_cases['domestic_backproj'])*sum(df_cases$domestic)\n", "} else\n", " df_cases['domestic_backproj'] = 0\n", "\n", "df_cases %>% tail(30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Backprojection including cases with unobserved date of illness onset" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 20 × 9
timedomestic_unobsimported_unobsdomesticimportedimported_backprojdomestic_backprojimported_backproj_unobsdomestic_backproj_unobs
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
117 980219001.021782e+02055.275342682
1181150155009.810875e+01053.085239052
119 710162009.395823e+01051.242101691
120 830106008.682019e+01048.486515636
121 660147007.602931e+01043.398273012
122 470115006.212970e+01035.194230769
123 220104004.703209e+01024.678663446
124 470121003.274843e+01014.449643806
1251170 94002.016645e+010 7.017536818
126 490 69001.033368e+010 2.880890504
127 440 77004.207847e+000 1.007775298
128 420 70001.331383e+000 0.293235407
129 440 59003.225228e-010 0.069160341
130 370 39005.799678e-020 0.012909911
131 270 28007.152493e-030 0.001863148
132 270 19000.000000e+000 0.000000000
133 150 17000.000000e+000 0.000000000
134 110 7000.000000e+000 0.000000000
135 120 4000.000000e+000 0.000000000
136 110 0000.000000e+000 0.000000000
\n" ], "text/latex": [ "A tibble: 20 × 9\n", "\\begin{tabular}{lllllllll}\n", " time & domestic\\_unobs & imported\\_unobs & domestic & imported & imported\\_backproj & domestic\\_backproj & imported\\_backproj\\_unobs & domestic\\_backproj\\_unobs\\\\\n", " & & & & & & & & \\\\\n", "\\hline\n", "\t 117 & 98 & 0 & 219 & 0 & 0 & 1.021782e+02 & 0 & 55.275342682\\\\\n", "\t 118 & 115 & 0 & 155 & 0 & 0 & 9.810875e+01 & 0 & 53.085239052\\\\\n", "\t 119 & 71 & 0 & 162 & 0 & 0 & 9.395823e+01 & 0 & 51.242101691\\\\\n", "\t 120 & 83 & 0 & 106 & 0 & 0 & 8.682019e+01 & 0 & 48.486515636\\\\\n", "\t 121 & 66 & 0 & 147 & 0 & 0 & 7.602931e+01 & 0 & 43.398273012\\\\\n", "\t 122 & 47 & 0 & 115 & 0 & 0 & 6.212970e+01 & 0 & 35.194230769\\\\\n", "\t 123 & 22 & 0 & 104 & 0 & 0 & 4.703209e+01 & 0 & 24.678663446\\\\\n", "\t 124 & 47 & 0 & 121 & 0 & 0 & 3.274843e+01 & 0 & 14.449643806\\\\\n", "\t 125 & 117 & 0 & 94 & 0 & 0 & 2.016645e+01 & 0 & 7.017536818\\\\\n", "\t 126 & 49 & 0 & 69 & 0 & 0 & 1.033368e+01 & 0 & 2.880890504\\\\\n", "\t 127 & 44 & 0 & 77 & 0 & 0 & 4.207847e+00 & 0 & 1.007775298\\\\\n", "\t 128 & 42 & 0 & 70 & 0 & 0 & 1.331383e+00 & 0 & 0.293235407\\\\\n", "\t 129 & 44 & 0 & 59 & 0 & 0 & 3.225228e-01 & 0 & 0.069160341\\\\\n", "\t 130 & 37 & 0 & 39 & 0 & 0 & 5.799678e-02 & 0 & 0.012909911\\\\\n", "\t 131 & 27 & 0 & 28 & 0 & 0 & 7.152493e-03 & 0 & 0.001863148\\\\\n", "\t 132 & 27 & 0 & 19 & 0 & 0 & 0.000000e+00 & 0 & 0.000000000\\\\\n", "\t 133 & 15 & 0 & 17 & 0 & 0 & 0.000000e+00 & 0 & 0.000000000\\\\\n", "\t 134 & 11 & 0 & 7 & 0 & 0 & 0.000000e+00 & 0 & 0.000000000\\\\\n", "\t 135 & 12 & 0 & 4 & 0 & 0 & 0.000000e+00 & 0 & 0.000000000\\\\\n", "\t 136 & 11 & 0 & 0 & 0 & 0 & 0.000000e+00 & 0 & 0.000000000\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 20 × 9\n", "\n", "| time <dbl> | domestic_unobs <dbl> | imported_unobs <dbl> | domestic <dbl> | imported <dbl> | imported_backproj <dbl> | domestic_backproj <dbl> | imported_backproj_unobs <dbl> | domestic_backproj_unobs <dbl> |\n", "|---|---|---|---|---|---|---|---|---|\n", "| 117 | 98 | 0 | 219 | 0 | 0 | 1.021782e+02 | 0 | 55.275342682 |\n", "| 118 | 115 | 0 | 155 | 0 | 0 | 9.810875e+01 | 0 | 53.085239052 |\n", "| 119 | 71 | 0 | 162 | 0 | 0 | 9.395823e+01 | 0 | 51.242101691 |\n", "| 120 | 83 | 0 | 106 | 0 | 0 | 8.682019e+01 | 0 | 48.486515636 |\n", "| 121 | 66 | 0 | 147 | 0 | 0 | 7.602931e+01 | 0 | 43.398273012 |\n", "| 122 | 47 | 0 | 115 | 0 | 0 | 6.212970e+01 | 0 | 35.194230769 |\n", "| 123 | 22 | 0 | 104 | 0 | 0 | 4.703209e+01 | 0 | 24.678663446 |\n", "| 124 | 47 | 0 | 121 | 0 | 0 | 3.274843e+01 | 0 | 14.449643806 |\n", "| 125 | 117 | 0 | 94 | 0 | 0 | 2.016645e+01 | 0 | 7.017536818 |\n", "| 126 | 49 | 0 | 69 | 0 | 0 | 1.033368e+01 | 0 | 2.880890504 |\n", "| 127 | 44 | 0 | 77 | 0 | 0 | 4.207847e+00 | 0 | 1.007775298 |\n", "| 128 | 42 | 0 | 70 | 0 | 0 | 1.331383e+00 | 0 | 0.293235407 |\n", "| 129 | 44 | 0 | 59 | 0 | 0 | 3.225228e-01 | 0 | 0.069160341 |\n", "| 130 | 37 | 0 | 39 | 0 | 0 | 5.799678e-02 | 0 | 0.012909911 |\n", "| 131 | 27 | 0 | 28 | 0 | 0 | 7.152493e-03 | 0 | 0.001863148 |\n", "| 132 | 27 | 0 | 19 | 0 | 0 | 0.000000e+00 | 0 | 0.000000000 |\n", "| 133 | 15 | 0 | 17 | 0 | 0 | 0.000000e+00 | 0 | 0.000000000 |\n", "| 134 | 11 | 0 | 7 | 0 | 0 | 0.000000e+00 | 0 | 0.000000000 |\n", "| 135 | 12 | 0 | 4 | 0 | 0 | 0.000000e+00 | 0 | 0.000000000 |\n", "| 136 | 11 | 0 | 0 | 0 | 0 | 0.000000e+00 | 0 | 0.000000000 |\n", "\n" ], "text/plain": [ " time domestic_unobs imported_unobs domestic imported imported_backproj\n", "1 117 98 0 219 0 0 \n", "2 118 115 0 155 0 0 \n", "3 119 71 0 162 0 0 \n", "4 120 83 0 106 0 0 \n", "5 121 66 0 147 0 0 \n", "6 122 47 0 115 0 0 \n", "7 123 22 0 104 0 0 \n", "8 124 47 0 121 0 0 \n", "9 125 117 0 94 0 0 \n", "10 126 49 0 69 0 0 \n", "11 127 44 0 77 0 0 \n", "12 128 42 0 70 0 0 \n", "13 129 44 0 59 0 0 \n", "14 130 37 0 39 0 0 \n", "15 131 27 0 28 0 0 \n", "16 132 27 0 19 0 0 \n", "17 133 15 0 17 0 0 \n", "18 134 11 0 7 0 0 \n", "19 135 12 0 4 0 0 \n", "20 136 11 0 0 0 0 \n", " domestic_backproj imported_backproj_unobs domestic_backproj_unobs\n", "1 1.021782e+02 0 55.275342682 \n", "2 9.810875e+01 0 53.085239052 \n", "3 9.395823e+01 0 51.242101691 \n", "4 8.682019e+01 0 48.486515636 \n", "5 7.602931e+01 0 43.398273012 \n", "6 6.212970e+01 0 35.194230769 \n", "7 4.703209e+01 0 24.678663446 \n", "8 3.274843e+01 0 14.449643806 \n", "9 2.016645e+01 0 7.017536818 \n", "10 1.033368e+01 0 2.880890504 \n", "11 4.207847e+00 0 1.007775298 \n", "12 1.331383e+00 0 0.293235407 \n", "13 3.225228e-01 0 0.069160341 \n", "14 5.799678e-02 0 0.012909911 \n", "15 7.152493e-03 0 0.001863148 \n", "16 0.000000e+00 0 0.000000000 \n", "17 0.000000e+00 0 0.000000000 \n", "18 0.000000e+00 0 0.000000000 \n", "19 0.000000e+00 0 0.000000000 \n", "20 0.000000e+00 0 0.000000000 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Backprojection of cases with unknown (=unobserved) dates of illness onset is done in two subsequent steps\n", "# First we backproject to the suggesting date of illness onset\n", "# Second we sum up with known observed counts and backproject them together by the incubation period\n", "# This is done like that because the surveillance package actually prohibits the heterogeneity in the data\n", "\n", "# Reporting delay: from onset to confirmation\n", "# the values are obtained separetely and here it is assumed to be known\n", "onset2report_fit = list(param1 = 1.741, param2 = 8.573)\n", "onset2report_probability = pweibull(1:K, onset2report_fit$param1, scale=onset2report_fit$param2) - pweibull(1:K-1, onset2report_fit$param1, scale=onset2report_fit$param2)\n", "onset2report_pmf = c(0,onset2report_probability[1:41])\n", "\n", "## import\n", "if (sum(df_cases$imported_unobs)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$imported_unobs)\n", " bpnp.control = list(k = k_used[1], eps = rep(1e-4,2), iter.max=rep(1000,2), \n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"R\",\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=onset2report_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " # output result\n", " df_cases['imported_backproj_unobs'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['imported_backproj_unobs'] = df_cases['imported_backproj_unobs']/sum(df_cases['imported_backproj_unobs'])*sum(df_cases$imported_unobs)\n", "} else \n", " df_cases['imported_backproj_unobs'] = 0\n", "\n", "## secondary\n", "if (sum(df_cases$domestic_unobs)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$domestic_unobs)\n", " bpnp.control = list(k = k_used[2], eps = rep(1e-3,2), iter.max=rep(1000,2), \n", " Tmark = tstar - 1, #attention\n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=onset2report_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " df_cases['domestic_backproj_unobs'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['domestic_backproj_unobs'] = df_cases['domestic_backproj_unobs']/sum(df_cases['domestic_backproj_unobs'])*sum(df_cases$domestic_unobs)\n", "} else\n", " df_cases['domestic_backproj_unobs'] = 0\n", "df_cases %<>% ungroup\n", "\n", "df_cases %>% filter(time% tail(20)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 30 × 11
timedomestic_unobsimported_unobsdomesticimportedimported_backprojdomestic_backprojimported_backproj_unobsdomestic_backproj_unobsimported_backproj_incl_unobsdomestic_backproj_incl_unobs
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
107151037120.0048986372.537108e+020.0097602851.009866e+020.0031412473.056866e+02
108154035600.0000000002.311702e+020.0016607868.799885e+010.0000000002.859795e+02
109 56028320.0000000002.061040e+020.0000000008.128916e+010.0000000002.625939e+02
110 56232300.0000000001.831526e+020.0000000007.647833e+010.0000000002.398983e+02
111147029200.0000000001.660050e+020.0000000007.202435e+010.0000000002.220498e+02
112101028000.0000000001.539337e+020.0000000006.843435e+010.0000000002.087914e+02
113 98022600.0000000001.440922e+020.0000000006.556801e+010.0000000001.973702e+02
114 91022500.0000000001.338058e+020.0000000006.296449e+010.0000000001.847542e+02
115119021600.0000000001.216966e+020.0000000006.050123e+010.0000000001.687925e+02
116 59015600.0000000001.099459e+020.0000000005.793726e+010.0000000001.508628e+02
117 98021900.0000000001.021782e+020.0000000005.527534e+010.0000000001.341985e+02
118115015500.0000000009.810875e+010.0000000005.308524e+010.0000000001.189053e+02
119 71016200.0000000009.395823e+010.0000000005.124210e+010.0000000001.028381e+02
120 83010600.0000000008.682019e+010.0000000004.848652e+010.0000000008.550350e+01
121 66014700.0000000007.602931e+010.0000000004.339827e+010.0000000006.818233e+01
122 47011500.0000000006.212970e+010.0000000003.519423e+010.0000000005.200660e+01
123 22010400.0000000004.703209e+010.0000000002.467866e+010.0000000003.783090e+01
124 47012100.0000000003.274843e+010.0000000001.444964e+010.0000000002.593969e+01
1251170 9400.0000000002.016645e+010.0000000007.017537e+000.0000000001.598117e+01
126 490 6900.0000000001.033368e+010.0000000002.880891e+000.0000000008.262887e+00
127 440 7700.0000000004.207847e+000.0000000001.007775e+000.0000000003.407351e+00
128 420 7000.0000000001.331383e+000.0000000002.932354e-010.0000000001.092231e+00
129 440 5900.0000000003.225228e-010.0000000006.916034e-020.0000000002.676521e-01
130 370 3900.0000000005.799678e-020.0000000001.290991e-020.0000000004.857183e-02
131 270 2800.0000000007.152493e-030.0000000001.863148e-030.0000000006.030619e-03
132 270 1900.0000000000.000000e+000.0000000000.000000e+000.0000000000.000000e+00
133 150 1700.0000000000.000000e+000.0000000000.000000e+000.0000000000.000000e+00
134 110 700.0000000000.000000e+000.0000000000.000000e+000.0000000000.000000e+00
135 120 400.0000000000.000000e+000.0000000000.000000e+000.0000000000.000000e+00
136 110 000.0000000000.000000e+000.0000000000.000000e+000.0000000000.000000e+00
\n" ], "text/latex": [ "A tibble: 30 × 11\n", "\\begin{tabular}{lllllllllll}\n", " time & domestic\\_unobs & imported\\_unobs & domestic & imported & imported\\_backproj & domestic\\_backproj & imported\\_backproj\\_unobs & domestic\\_backproj\\_unobs & imported\\_backproj\\_incl\\_unobs & domestic\\_backproj\\_incl\\_unobs\\\\\n", " & & & & & & & & & & \\\\\n", "\\hline\n", "\t 107 & 151 & 0 & 371 & 2 & 0.004898637 & 2.537108e+02 & 0.009760285 & 1.009866e+02 & 0.003141247 & 3.056866e+02\\\\\n", "\t 108 & 154 & 0 & 356 & 0 & 0.000000000 & 2.311702e+02 & 0.001660786 & 8.799885e+01 & 0.000000000 & 2.859795e+02\\\\\n", "\t 109 & 56 & 0 & 283 & 2 & 0.000000000 & 2.061040e+02 & 0.000000000 & 8.128916e+01 & 0.000000000 & 2.625939e+02\\\\\n", "\t 110 & 56 & 2 & 323 & 0 & 0.000000000 & 1.831526e+02 & 0.000000000 & 7.647833e+01 & 0.000000000 & 2.398983e+02\\\\\n", "\t 111 & 147 & 0 & 292 & 0 & 0.000000000 & 1.660050e+02 & 0.000000000 & 7.202435e+01 & 0.000000000 & 2.220498e+02\\\\\n", "\t 112 & 101 & 0 & 280 & 0 & 0.000000000 & 1.539337e+02 & 0.000000000 & 6.843435e+01 & 0.000000000 & 2.087914e+02\\\\\n", "\t 113 & 98 & 0 & 226 & 0 & 0.000000000 & 1.440922e+02 & 0.000000000 & 6.556801e+01 & 0.000000000 & 1.973702e+02\\\\\n", "\t 114 & 91 & 0 & 225 & 0 & 0.000000000 & 1.338058e+02 & 0.000000000 & 6.296449e+01 & 0.000000000 & 1.847542e+02\\\\\n", "\t 115 & 119 & 0 & 216 & 0 & 0.000000000 & 1.216966e+02 & 0.000000000 & 6.050123e+01 & 0.000000000 & 1.687925e+02\\\\\n", "\t 116 & 59 & 0 & 156 & 0 & 0.000000000 & 1.099459e+02 & 0.000000000 & 5.793726e+01 & 0.000000000 & 1.508628e+02\\\\\n", "\t 117 & 98 & 0 & 219 & 0 & 0.000000000 & 1.021782e+02 & 0.000000000 & 5.527534e+01 & 0.000000000 & 1.341985e+02\\\\\n", "\t 118 & 115 & 0 & 155 & 0 & 0.000000000 & 9.810875e+01 & 0.000000000 & 5.308524e+01 & 0.000000000 & 1.189053e+02\\\\\n", "\t 119 & 71 & 0 & 162 & 0 & 0.000000000 & 9.395823e+01 & 0.000000000 & 5.124210e+01 & 0.000000000 & 1.028381e+02\\\\\n", "\t 120 & 83 & 0 & 106 & 0 & 0.000000000 & 8.682019e+01 & 0.000000000 & 4.848652e+01 & 0.000000000 & 8.550350e+01\\\\\n", "\t 121 & 66 & 0 & 147 & 0 & 0.000000000 & 7.602931e+01 & 0.000000000 & 4.339827e+01 & 0.000000000 & 6.818233e+01\\\\\n", "\t 122 & 47 & 0 & 115 & 0 & 0.000000000 & 6.212970e+01 & 0.000000000 & 3.519423e+01 & 0.000000000 & 5.200660e+01\\\\\n", "\t 123 & 22 & 0 & 104 & 0 & 0.000000000 & 4.703209e+01 & 0.000000000 & 2.467866e+01 & 0.000000000 & 3.783090e+01\\\\\n", "\t 124 & 47 & 0 & 121 & 0 & 0.000000000 & 3.274843e+01 & 0.000000000 & 1.444964e+01 & 0.000000000 & 2.593969e+01\\\\\n", "\t 125 & 117 & 0 & 94 & 0 & 0.000000000 & 2.016645e+01 & 0.000000000 & 7.017537e+00 & 0.000000000 & 1.598117e+01\\\\\n", "\t 126 & 49 & 0 & 69 & 0 & 0.000000000 & 1.033368e+01 & 0.000000000 & 2.880891e+00 & 0.000000000 & 8.262887e+00\\\\\n", "\t 127 & 44 & 0 & 77 & 0 & 0.000000000 & 4.207847e+00 & 0.000000000 & 1.007775e+00 & 0.000000000 & 3.407351e+00\\\\\n", "\t 128 & 42 & 0 & 70 & 0 & 0.000000000 & 1.331383e+00 & 0.000000000 & 2.932354e-01 & 0.000000000 & 1.092231e+00\\\\\n", "\t 129 & 44 & 0 & 59 & 0 & 0.000000000 & 3.225228e-01 & 0.000000000 & 6.916034e-02 & 0.000000000 & 2.676521e-01\\\\\n", "\t 130 & 37 & 0 & 39 & 0 & 0.000000000 & 5.799678e-02 & 0.000000000 & 1.290991e-02 & 0.000000000 & 4.857183e-02\\\\\n", "\t 131 & 27 & 0 & 28 & 0 & 0.000000000 & 7.152493e-03 & 0.000000000 & 1.863148e-03 & 0.000000000 & 6.030619e-03\\\\\n", "\t 132 & 27 & 0 & 19 & 0 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00\\\\\n", "\t 133 & 15 & 0 & 17 & 0 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00\\\\\n", "\t 134 & 11 & 0 & 7 & 0 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00\\\\\n", "\t 135 & 12 & 0 & 4 & 0 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00\\\\\n", "\t 136 & 11 & 0 & 0 & 0 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00 & 0.000000000 & 0.000000e+00\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 30 × 11\n", "\n", "| time <dbl> | domestic_unobs <dbl> | imported_unobs <dbl> | domestic <dbl> | imported <dbl> | imported_backproj <dbl> | domestic_backproj <dbl> | imported_backproj_unobs <dbl> | domestic_backproj_unobs <dbl> | imported_backproj_incl_unobs <dbl> | domestic_backproj_incl_unobs <dbl> |\n", "|---|---|---|---|---|---|---|---|---|---|---|\n", "| 107 | 151 | 0 | 371 | 2 | 0.004898637 | 2.537108e+02 | 0.009760285 | 1.009866e+02 | 0.003141247 | 3.056866e+02 |\n", "| 108 | 154 | 0 | 356 | 0 | 0.000000000 | 2.311702e+02 | 0.001660786 | 8.799885e+01 | 0.000000000 | 2.859795e+02 |\n", "| 109 | 56 | 0 | 283 | 2 | 0.000000000 | 2.061040e+02 | 0.000000000 | 8.128916e+01 | 0.000000000 | 2.625939e+02 |\n", "| 110 | 56 | 2 | 323 | 0 | 0.000000000 | 1.831526e+02 | 0.000000000 | 7.647833e+01 | 0.000000000 | 2.398983e+02 |\n", "| 111 | 147 | 0 | 292 | 0 | 0.000000000 | 1.660050e+02 | 0.000000000 | 7.202435e+01 | 0.000000000 | 2.220498e+02 |\n", "| 112 | 101 | 0 | 280 | 0 | 0.000000000 | 1.539337e+02 | 0.000000000 | 6.843435e+01 | 0.000000000 | 2.087914e+02 |\n", "| 113 | 98 | 0 | 226 | 0 | 0.000000000 | 1.440922e+02 | 0.000000000 | 6.556801e+01 | 0.000000000 | 1.973702e+02 |\n", "| 114 | 91 | 0 | 225 | 0 | 0.000000000 | 1.338058e+02 | 0.000000000 | 6.296449e+01 | 0.000000000 | 1.847542e+02 |\n", "| 115 | 119 | 0 | 216 | 0 | 0.000000000 | 1.216966e+02 | 0.000000000 | 6.050123e+01 | 0.000000000 | 1.687925e+02 |\n", "| 116 | 59 | 0 | 156 | 0 | 0.000000000 | 1.099459e+02 | 0.000000000 | 5.793726e+01 | 0.000000000 | 1.508628e+02 |\n", "| 117 | 98 | 0 | 219 | 0 | 0.000000000 | 1.021782e+02 | 0.000000000 | 5.527534e+01 | 0.000000000 | 1.341985e+02 |\n", "| 118 | 115 | 0 | 155 | 0 | 0.000000000 | 9.810875e+01 | 0.000000000 | 5.308524e+01 | 0.000000000 | 1.189053e+02 |\n", "| 119 | 71 | 0 | 162 | 0 | 0.000000000 | 9.395823e+01 | 0.000000000 | 5.124210e+01 | 0.000000000 | 1.028381e+02 |\n", "| 120 | 83 | 0 | 106 | 0 | 0.000000000 | 8.682019e+01 | 0.000000000 | 4.848652e+01 | 0.000000000 | 8.550350e+01 |\n", "| 121 | 66 | 0 | 147 | 0 | 0.000000000 | 7.602931e+01 | 0.000000000 | 4.339827e+01 | 0.000000000 | 6.818233e+01 |\n", "| 122 | 47 | 0 | 115 | 0 | 0.000000000 | 6.212970e+01 | 0.000000000 | 3.519423e+01 | 0.000000000 | 5.200660e+01 |\n", "| 123 | 22 | 0 | 104 | 0 | 0.000000000 | 4.703209e+01 | 0.000000000 | 2.467866e+01 | 0.000000000 | 3.783090e+01 |\n", "| 124 | 47 | 0 | 121 | 0 | 0.000000000 | 3.274843e+01 | 0.000000000 | 1.444964e+01 | 0.000000000 | 2.593969e+01 |\n", "| 125 | 117 | 0 | 94 | 0 | 0.000000000 | 2.016645e+01 | 0.000000000 | 7.017537e+00 | 0.000000000 | 1.598117e+01 |\n", "| 126 | 49 | 0 | 69 | 0 | 0.000000000 | 1.033368e+01 | 0.000000000 | 2.880891e+00 | 0.000000000 | 8.262887e+00 |\n", "| 127 | 44 | 0 | 77 | 0 | 0.000000000 | 4.207847e+00 | 0.000000000 | 1.007775e+00 | 0.000000000 | 3.407351e+00 |\n", "| 128 | 42 | 0 | 70 | 0 | 0.000000000 | 1.331383e+00 | 0.000000000 | 2.932354e-01 | 0.000000000 | 1.092231e+00 |\n", "| 129 | 44 | 0 | 59 | 0 | 0.000000000 | 3.225228e-01 | 0.000000000 | 6.916034e-02 | 0.000000000 | 2.676521e-01 |\n", "| 130 | 37 | 0 | 39 | 0 | 0.000000000 | 5.799678e-02 | 0.000000000 | 1.290991e-02 | 0.000000000 | 4.857183e-02 |\n", "| 131 | 27 | 0 | 28 | 0 | 0.000000000 | 7.152493e-03 | 0.000000000 | 1.863148e-03 | 0.000000000 | 6.030619e-03 |\n", "| 132 | 27 | 0 | 19 | 0 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 |\n", "| 133 | 15 | 0 | 17 | 0 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 |\n", "| 134 | 11 | 0 | 7 | 0 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 |\n", "| 135 | 12 | 0 | 4 | 0 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 |\n", "| 136 | 11 | 0 | 0 | 0 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 | 0.000000000 | 0.000000e+00 |\n", "\n" ], "text/plain": [ " time domestic_unobs imported_unobs domestic imported imported_backproj\n", "1 107 151 0 371 2 0.004898637 \n", "2 108 154 0 356 0 0.000000000 \n", "3 109 56 0 283 2 0.000000000 \n", "4 110 56 2 323 0 0.000000000 \n", "5 111 147 0 292 0 0.000000000 \n", "6 112 101 0 280 0 0.000000000 \n", "7 113 98 0 226 0 0.000000000 \n", "8 114 91 0 225 0 0.000000000 \n", "9 115 119 0 216 0 0.000000000 \n", "10 116 59 0 156 0 0.000000000 \n", "11 117 98 0 219 0 0.000000000 \n", "12 118 115 0 155 0 0.000000000 \n", "13 119 71 0 162 0 0.000000000 \n", "14 120 83 0 106 0 0.000000000 \n", "15 121 66 0 147 0 0.000000000 \n", "16 122 47 0 115 0 0.000000000 \n", "17 123 22 0 104 0 0.000000000 \n", "18 124 47 0 121 0 0.000000000 \n", "19 125 117 0 94 0 0.000000000 \n", "20 126 49 0 69 0 0.000000000 \n", "21 127 44 0 77 0 0.000000000 \n", "22 128 42 0 70 0 0.000000000 \n", "23 129 44 0 59 0 0.000000000 \n", "24 130 37 0 39 0 0.000000000 \n", "25 131 27 0 28 0 0.000000000 \n", "26 132 27 0 19 0 0.000000000 \n", "27 133 15 0 17 0 0.000000000 \n", "28 134 11 0 7 0 0.000000000 \n", "29 135 12 0 4 0 0.000000000 \n", "30 136 11 0 0 0 0.000000000 \n", " domestic_backproj imported_backproj_unobs domestic_backproj_unobs\n", "1 2.537108e+02 0.009760285 1.009866e+02 \n", "2 2.311702e+02 0.001660786 8.799885e+01 \n", "3 2.061040e+02 0.000000000 8.128916e+01 \n", "4 1.831526e+02 0.000000000 7.647833e+01 \n", "5 1.660050e+02 0.000000000 7.202435e+01 \n", "6 1.539337e+02 0.000000000 6.843435e+01 \n", "7 1.440922e+02 0.000000000 6.556801e+01 \n", "8 1.338058e+02 0.000000000 6.296449e+01 \n", "9 1.216966e+02 0.000000000 6.050123e+01 \n", "10 1.099459e+02 0.000000000 5.793726e+01 \n", "11 1.021782e+02 0.000000000 5.527534e+01 \n", "12 9.810875e+01 0.000000000 5.308524e+01 \n", "13 9.395823e+01 0.000000000 5.124210e+01 \n", "14 8.682019e+01 0.000000000 4.848652e+01 \n", "15 7.602931e+01 0.000000000 4.339827e+01 \n", "16 6.212970e+01 0.000000000 3.519423e+01 \n", "17 4.703209e+01 0.000000000 2.467866e+01 \n", "18 3.274843e+01 0.000000000 1.444964e+01 \n", "19 2.016645e+01 0.000000000 7.017537e+00 \n", "20 1.033368e+01 0.000000000 2.880891e+00 \n", "21 4.207847e+00 0.000000000 1.007775e+00 \n", "22 1.331383e+00 0.000000000 2.932354e-01 \n", "23 3.225228e-01 0.000000000 6.916034e-02 \n", "24 5.799678e-02 0.000000000 1.290991e-02 \n", "25 7.152493e-03 0.000000000 1.863148e-03 \n", "26 0.000000e+00 0.000000000 0.000000e+00 \n", "27 0.000000e+00 0.000000000 0.000000e+00 \n", "28 0.000000e+00 0.000000000 0.000000e+00 \n", "29 0.000000e+00 0.000000000 0.000000e+00 \n", "30 0.000000e+00 0.000000000 0.000000e+00 \n", " imported_backproj_incl_unobs domestic_backproj_incl_unobs\n", "1 0.003141247 3.056866e+02 \n", "2 0.000000000 2.859795e+02 \n", "3 0.000000000 2.625939e+02 \n", "4 0.000000000 2.398983e+02 \n", "5 0.000000000 2.220498e+02 \n", "6 0.000000000 2.087914e+02 \n", "7 0.000000000 1.973702e+02 \n", "8 0.000000000 1.847542e+02 \n", "9 0.000000000 1.687925e+02 \n", "10 0.000000000 1.508628e+02 \n", "11 0.000000000 1.341985e+02 \n", "12 0.000000000 1.189053e+02 \n", "13 0.000000000 1.028381e+02 \n", "14 0.000000000 8.550350e+01 \n", "15 0.000000000 6.818233e+01 \n", "16 0.000000000 5.200660e+01 \n", "17 0.000000000 3.783090e+01 \n", "18 0.000000000 2.593969e+01 \n", "19 0.000000000 1.598117e+01 \n", "20 0.000000000 8.262887e+00 \n", "21 0.000000000 3.407351e+00 \n", "22 0.000000000 1.092231e+00 \n", "23 0.000000000 2.676521e-01 \n", "24 0.000000000 4.857183e-02 \n", "25 0.000000000 6.030619e-03 \n", "26 0.000000000 0.000000e+00 \n", "27 0.000000000 0.000000e+00 \n", "28 0.000000000 0.000000e+00 \n", "29 0.000000000 0.000000e+00 \n", "30 0.000000000 0.000000e+00 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Now backprojecting unobs + obs by the incubation period\n", "\n", "# backprojection of imported_unobs cases\n", "if (sum(df_cases$imported_unobs)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$imported_backproj_unobs + df_cases$imported)\n", " bpnp.control = list(k = k_used[1], eps = rep(1e-4,2), iter.max=rep(1000,2), Tmark = nrow(df_cases)-10,\n", " Tmark = tstar - 1, #attention\n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"R\",\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=inc_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " # output result\n", " df_cases['imported_backproj_incl_unobs'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['imported_backproj_incl_unobs'] = df_cases['imported_backproj_incl_unobs']/sum(df_cases['imported_backproj_incl_unobs'])*sum(df_cases$imported_backproj_unobs + df_cases$imported)\n", "} else \n", " df_cases['imported_backproj_incl_unobs'] = 0\n", "\n", "# backprojection of domestic_unobs cases\n", "if (sum(df_cases$domestic_unobs)>0) {\n", " sts = new(\"sts\", epoch=df_cases$time, observed=df_cases$domestic_backproj_unobs + df_cases$domestic)\n", " bpnp.control = list(k = k_used[2], eps = rep(1e-4,2), iter.max=rep(1000,2), \n", " B = -1, alpha = 0.01, verbose = FALSE, lambda0 = NULL, \n", " eq3a.method = c(\"C\"))\n", " sts_bp = backprojNP(sts, incu.pmf=inc_pmf, control=modifyList(bpnp.control,list(eq3a.method=\"C\")))\n", " df_cases['domestic_backproj_incl_unobs'] = upperbound(sts_bp) %>% as.numeric %>% replace(. < epsilon, 0) \n", " df_cases['domestic_backproj_incl_unobs'] = df_cases['domestic_backproj_incl_unobs']/sum(df_cases['domestic_backproj_incl_unobs'])*sum(df_cases$domestic_backproj_unobs + df_cases$domestic)\n", "} else\n", " df_cases['domestic_backproj_incl_unobs'] = 0\n", "\n", "df_cases %>% filter(time% tail(30)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "342" ], "text/latex": [ "342" ], "text/markdown": [ "342" ], "text/plain": [ "[1] 342" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# total number of imported cases\n", "sum(df_cases$imported) + sum(df_cases$imported_unobs)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "15062" ], "text/latex": [ "15062" ], "text/markdown": [ "15062" ], "text/plain": [ "[1] 15062" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# total number of domestically acquired infections\n", "sum(df_cases$domestic) + sum(df_cases$domestic_unobs)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "2889" ], "text/latex": [ "2889" ], "text/markdown": [ "2889" ], "text/plain": [ "[1] 2889" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# among them are unobsered\n", "sum(df_cases$domestic_unobs)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "df_cases %<>% select(-domestic_backproj_unobs,-imported_backproj_unobs) %>% filter(time% write.csv(\"../results/JapaneseDataCOVID19_with_backproj (\"%&%format(datestar,\"%y%m%d\")%&%\").csv\", row.names=FALSE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# [R] Effective reproduction number" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Stan program" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "## The code is written by Andrei R. Akhmetzhanov and verified by Kenji Mizumoto\n", "\"functions {\n", " /* discretesized version of lognormal distribution */\n", " // the first element is after day one \n", " vector plognormal(real mu, real sigma, int K) {\n", " vector[K] res; \n", " for (k in 1:K)\n", " res[k] = exp(lognormal_lcdf(k | mu, sigma));\n", "\n", " return append_row(res[1], res[2:K]-res[1:(K-1)]); \n", " }\n", "\n", " /* discretesized version of Weibull distribution */\n", " vector pweibull(real kappa, real theta, int K) {\n", " vector[K] res; \n", " for (k in 1:K) \n", " res[k] = -expm1(-pow(1.0*k/theta, kappa)); // instead of using Stan function weibull_lcdf it is easier to write it directly\n", "\n", " return append_row(res[1], res[2:K]-res[1:(K-1)]); \n", " }\n", "\n", " /* calculating the convolutions */\n", " // X: first function, Yrev: reversed version of the second function\n", " // K: length of X and Yrev\n", " // the result is the vector of length K-1, because the first element equal zero is omitted\n", " vector convolution(vector X, vector Yrev, int K) {\n", " vector[K-1] res;\n", " res[1] = X[1]*Yrev[K];\n", " for (k in 2:K-1) // 2:K-1 is equivalent to 2:(K-1)\n", " res[k] = dot_product(head(X, k), tail(Yrev, k)); // by definition of the convolution\n", "\n", " return res; \n", " }\n", "\n", " /* Special form of the convolution with adjusting to the delay */\n", " // F: cumulative distribution function of the reporting delay\n", " // it is the same idea as in [Tsuzuki et al 2017] (doi:10.2807/1560-7917.ES.2017.22.46.17-00710)\n", " vector convolution_with_delay(vector X, vector Yrev, vector F, int K) {\n", " vector[K-1] res;\n", " vector[K] Z = X ./ F; // first we need to nowcast the observed counts (=to account for not yet reported)\n", "\n", " res[1] = F[2]*Z[1]*Yrev[K];\n", " for (k in 3:K) \n", " res[k-1] = F[k]*dot_product(head(Z, k-1), tail(Yrev, k-1));\n", "\n", " return res; \n", " }\n", "}\n", "\n", "data {\n", " int K; //number of days\n", " vector[K] imported_backproj;\n", " vector[K] domestic_backproj;\n", " int upper_bound;\n", "\n", " // serial interval\n", " real param1_SI;\n", " real param2_SI;\n", "\n", " // reporting delay is given by Weibul distribution\n", " real param1_delay;\n", " real param2_delay;\n", "\n", " // incubation period\n", " real mu_inc;\n", " real sigma_inc;\n", "}\n", "\n", "transformed data {\n", " // RStan requires to declare all variables at the beginning, so there is some mixture\n", " vector[K] cases_backproj;\n", "\n", " vector[K-1] conv;\n", " vector[K-1] conv_delay_adj;\n", "\n", " cases_backproj = imported_backproj + domestic_backproj;\n", " // all variables declared within {..} are local \n", " // so they will not be recorded in the output of Stan\n", " {\n", " // serial interval\n", " vector[K] gt;\n", " vector[K] gtrev;\n", " // incubation period\n", " vector[upper_bound] IncPeriod; \n", " vector[upper_bound] IncPeriod_inv;\n", " // reporting delay\n", " vector[upper_bound] ReportDelay;\n", " vector[upper_bound] conv_report_inc;\n", " \n", " vector[upper_bound] F_tmp;\n", " vector[K] F; \n", "\n", " // serial interval is modeled by Weibull distribution\n", " gt = pweibull(param1_SI, param2_SI, K);\n", " for (k in 1:K) \n", " gtrev[k] = gt[K+1-k];\n", "\n", " // incubation period is modeled by lognormal distribution\n", " IncPeriod = plognormal(mu_inc, sigma_inc, upper_bound);\n", " // we need to have it in reverse order for our convolution function used later\n", " for (k in 1:upper_bound)\n", " IncPeriod_inv[k] = IncPeriod[upper_bound+1-k];\n", "\n", " // reporting delay is modeled by Weibull distribution\n", " ReportDelay = pweibull(param1_delay, param2_delay, upper_bound);\n", "\n", " // convolution of the reporting delay and incubation period\n", " conv_report_inc = append_row(rep_vector(0,1), convolution(ReportDelay, IncPeriod_inv, upper_bound));\n", " conv_report_inc = cumulative_sum(conv_report_inc);\n", " \n", " // here the form is a bit complicated because technically upper_bound is not K in general, it can be any number > K\n", " for (k in 1:upper_bound) \n", " F_tmp[k] = conv_report_inc[upper_bound+1-k];\n", " F = head(F_tmp, K);\n", "\n", " // convolution without adjusting for the delay\n", " conv = convolution(cases_backproj, gtrev, K);\n", "\n", " // convolution with adjusting for the delay\n", " conv_delay_adj = convolution_with_delay(cases_backproj, gtrev, F, K);\n", " }\n", "}\n", "\n", "parameters {\n", " // effective reproduction number without adjustment to the delay in reporting\n", " vector[K-1] Rt;\n", "\n", " // effective reproduction number with adjustment to the delay in reporting\n", " vector[K-1] Rt_adj;\n", "}\n", "\n", "model {\n", " Rt ~ normal(2.4, 2.0);\n", " Rt_adj ~ normal(2.4, 2.0);\n", " \n", " // two independent likelihood written in one line\n", " target += gamma_lpdf(tail(domestic_backproj, K-1) | Rt .* conv + 1e-13, 1.0)\n", " + gamma_lpdf(tail(domestic_backproj, K-1) | Rt_adj .* conv_delay_adj + 1e-13, 1.0);\n", "}\" %>% cat(file=\"fit_infection.stan\", sep=\"\", fill=TRUE)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "#model discription\n", "stanmodel = NULL\n", "stanmodel = stan_model(file='fit_infection.stan')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "stan_data = list(\n", " K = nrow(df_cases),\n", " imported_backproj = df_cases$imported_backproj,\n", " domestic_backproj = df_cases$domestic_backproj,\n", " upper_bound = tstar,\n", " ## Serial interval [Nishiura et al 2020 - only certain cases]\n", " param1_SI = 2.305,\n", " param2_SI = 5.452,\n", " ## reported delay\n", " param1_delay = onset2report_fit$param1,\n", " param2_delay = onset2report_fit$param2,\n", " ## incubation period [Linton et al 2020 - with right truncation excl. Wuhan residents]\n", " mu_inc = inc_fit$meanlog,\n", " sigma_inc = inc_fit$sdlog\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## MCMC settings" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "Iter = 10000\n", "Warmup = 2000\n", "Chains = 2\n", "Seed = 1234" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model fit" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "fit <- sampling(stanmodel, \n", " data=stan_data,\n", " iter=Iter,\n", " warmup=Warmup,\n", " chains = Chains, \n", " seed=1234)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Loading required package: tibble\n", "\n", "Loading required package: stringr\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 12
variabletimemeanse_meansd2.5%25%50%75%97.5%n_effRhat
<chr><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
1Rt23.8038450.011379381.6173430.95852552.6157843.7068374.8862687.20154220200.720.9999394
2Rt33.8023080.011059581.6145340.97873902.6195883.7052294.8984687.19075221311.650.9999047
3Rt43.8279000.011246181.6141510.99694822.6462663.7379794.8834487.24608220600.510.9999704
4Rt53.8314250.011217141.6161461.03113452.6589273.7251884.9130397.23020520758.550.9999470
5Rt63.8476210.010953091.6338130.99341832.6619923.7519994.9204217.30396122250.040.9999310
6Rt73.8337130.011359921.6232340.99475582.6417173.7237364.8926457.25564120417.930.9999616
\n" ], "text/latex": [ "A data.frame: 6 × 12\n", "\\begin{tabular}{r|llllllllllll}\n", " & variable & time & mean & se\\_mean & sd & 2.5\\% & 25\\% & 50\\% & 75\\% & 97.5\\% & n\\_eff & Rhat\\\\\n", " & & & & & & & & & & & & \\\\\n", "\\hline\n", "\t1 & Rt & 2 & 3.803845 & 0.01137938 & 1.617343 & 0.9585255 & 2.615784 & 3.706837 & 4.886268 & 7.201542 & 20200.72 & 0.9999394\\\\\n", "\t2 & Rt & 3 & 3.802308 & 0.01105958 & 1.614534 & 0.9787390 & 2.619588 & 3.705229 & 4.898468 & 7.190752 & 21311.65 & 0.9999047\\\\\n", "\t3 & Rt & 4 & 3.827900 & 0.01124618 & 1.614151 & 0.9969482 & 2.646266 & 3.737979 & 4.883448 & 7.246082 & 20600.51 & 0.9999704\\\\\n", "\t4 & Rt & 5 & 3.831425 & 0.01121714 & 1.616146 & 1.0311345 & 2.658927 & 3.725188 & 4.913039 & 7.230205 & 20758.55 & 0.9999470\\\\\n", "\t5 & Rt & 6 & 3.847621 & 0.01095309 & 1.633813 & 0.9934183 & 2.661992 & 3.751999 & 4.920421 & 7.303961 & 22250.04 & 0.9999310\\\\\n", "\t6 & Rt & 7 & 3.833713 & 0.01135992 & 1.623234 & 0.9947558 & 2.641717 & 3.723736 & 4.892645 & 7.255641 & 20417.93 & 0.9999616\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 12\n", "\n", "| | variable <chr> | time <dbl> | mean <dbl> | se_mean <dbl> | sd <dbl> | 2.5% <dbl> | 25% <dbl> | 50% <dbl> | 75% <dbl> | 97.5% <dbl> | n_eff <dbl> | Rhat <dbl> |\n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| 1 | Rt | 2 | 3.803845 | 0.01137938 | 1.617343 | 0.9585255 | 2.615784 | 3.706837 | 4.886268 | 7.201542 | 20200.72 | 0.9999394 |\n", "| 2 | Rt | 3 | 3.802308 | 0.01105958 | 1.614534 | 0.9787390 | 2.619588 | 3.705229 | 4.898468 | 7.190752 | 21311.65 | 0.9999047 |\n", "| 3 | Rt | 4 | 3.827900 | 0.01124618 | 1.614151 | 0.9969482 | 2.646266 | 3.737979 | 4.883448 | 7.246082 | 20600.51 | 0.9999704 |\n", "| 4 | Rt | 5 | 3.831425 | 0.01121714 | 1.616146 | 1.0311345 | 2.658927 | 3.725188 | 4.913039 | 7.230205 | 20758.55 | 0.9999470 |\n", "| 5 | Rt | 6 | 3.847621 | 0.01095309 | 1.633813 | 0.9934183 | 2.661992 | 3.751999 | 4.920421 | 7.303961 | 22250.04 | 0.9999310 |\n", "| 6 | Rt | 7 | 3.833713 | 0.01135992 | 1.623234 | 0.9947558 | 2.641717 | 3.723736 | 4.892645 | 7.255641 | 20417.93 | 0.9999616 |\n", "\n" ], "text/plain": [ " variable time mean se_mean sd 2.5% 25% 50% \n", "1 Rt 2 3.803845 0.01137938 1.617343 0.9585255 2.615784 3.706837\n", "2 Rt 3 3.802308 0.01105958 1.614534 0.9787390 2.619588 3.705229\n", "3 Rt 4 3.827900 0.01124618 1.614151 0.9969482 2.646266 3.737979\n", "4 Rt 5 3.831425 0.01121714 1.616146 1.0311345 2.658927 3.725188\n", "5 Rt 6 3.847621 0.01095309 1.633813 0.9934183 2.661992 3.751999\n", "6 Rt 7 3.833713 0.01135992 1.623234 0.9947558 2.641717 3.723736\n", " 75% 97.5% n_eff Rhat \n", "1 4.886268 7.201542 20200.72 0.9999394\n", "2 4.898468 7.190752 21311.65 0.9999047\n", "3 4.883448 7.246082 20600.51 0.9999704\n", "4 4.913039 7.230205 20758.55 0.9999470\n", "5 4.920421 7.303961 22250.04 0.9999310\n", "6 4.892645 7.255641 20417.93 0.9999616" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "require(tibble)\n", "require(stringr)\n", "\n", "# Check the result\n", "## Rt is for backproj\n", "## Rt_adj is for backproj_incl_unobs\n", "## The first and the last values should be ignored because no information is available and Rt* is unstable\n", "### notice that Reff starts from t=2 not t=1, so one of the coordinates is shifted by one\n", "summary(fit)$summary %T>% \n", " write.csv(\"../results/Results of Stan (script C).csv\") %>%\n", " as.data.frame %>% tibble::rownames_to_column(\"index\") -> df_summary\n", "\n", "out = stringr::str_match_all(df_summary$index, \"[\\\\d+(.*)]\")\n", "df_summary$time = sapply(out, function(x) paste(x[,1],collapse=\"\"))\n", "df_summary %<>% mutate(time = as.numeric(time) + 1, variable = str_extract(index, \"^[^\\\\[]+\")) %>%\n", " select(-index) %>% select(variable, time, everything())\n", "\n", "df_summary %>% head" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 6
timeRt_lowerRt_IQR_lowerRt_medianRt_IQR_upperRt_upper
<dbl><dbl><dbl><dbl><dbl><dbl>
120.96066742.6610393.7358164.9055397.243792
230.96953392.6372993.7167574.8911097.245668
340.95459272.6466013.7374454.8944257.228038
450.98110072.6496003.7569104.8996317.293788
561.04865282.6672593.7520734.9093727.228146
671.00874982.6906293.7571934.8982317.266286
\n" ], "text/latex": [ "A data.frame: 6 × 6\n", "\\begin{tabular}{r|llllll}\n", " & time & Rt\\_lower & Rt\\_IQR\\_lower & Rt\\_median & Rt\\_IQR\\_upper & Rt\\_upper\\\\\n", " & & & & & & \\\\\n", "\\hline\n", "\t1 & 2 & 0.9606674 & 2.661039 & 3.735816 & 4.905539 & 7.243792\\\\\n", "\t2 & 3 & 0.9695339 & 2.637299 & 3.716757 & 4.891109 & 7.245668\\\\\n", "\t3 & 4 & 0.9545927 & 2.646601 & 3.737445 & 4.894425 & 7.228038\\\\\n", "\t4 & 5 & 0.9811007 & 2.649600 & 3.756910 & 4.899631 & 7.293788\\\\\n", "\t5 & 6 & 1.0486528 & 2.667259 & 3.752073 & 4.909372 & 7.228146\\\\\n", "\t6 & 7 & 1.0087498 & 2.690629 & 3.757193 & 4.898231 & 7.266286\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 6\n", "\n", "| | time <dbl> | Rt_lower <dbl> | Rt_IQR_lower <dbl> | Rt_median <dbl> | Rt_IQR_upper <dbl> | Rt_upper <dbl> |\n", "|---|---|---|---|---|---|---|\n", "| 1 | 2 | 0.9606674 | 2.661039 | 3.735816 | 4.905539 | 7.243792 |\n", "| 2 | 3 | 0.9695339 | 2.637299 | 3.716757 | 4.891109 | 7.245668 |\n", "| 3 | 4 | 0.9545927 | 2.646601 | 3.737445 | 4.894425 | 7.228038 |\n", "| 4 | 5 | 0.9811007 | 2.649600 | 3.756910 | 4.899631 | 7.293788 |\n", "| 5 | 6 | 1.0486528 | 2.667259 | 3.752073 | 4.909372 | 7.228146 |\n", "| 6 | 7 | 1.0087498 | 2.690629 | 3.757193 | 4.898231 | 7.266286 |\n", "\n" ], "text/plain": [ " time Rt_lower Rt_IQR_lower Rt_median Rt_IQR_upper Rt_upper\n", "1 2 0.9606674 2.661039 3.735816 4.905539 7.243792\n", "2 3 0.9695339 2.637299 3.716757 4.891109 7.245668\n", "3 4 0.9545927 2.646601 3.737445 4.894425 7.228038\n", "4 5 0.9811007 2.649600 3.756910 4.899631 7.293788\n", "5 6 1.0486528 2.667259 3.752073 4.909372 7.228146\n", "6 7 1.0087498 2.690629 3.757193 4.898231 7.266286" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_summary %>%\n", " filter(variable=='Rt_adj') %>% \n", " select(time,`2.5%`,`25%`,`50%`,`75%`,`97.5%`) -> df_summary_\n", "names(df_summary_) = c('time','Rt_lower','Rt_IQR_lower','Rt_median','Rt_IQR_upper','Rt_upper')\n", "df_summary_ %>% head" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A tibble: 6 × 15
datetimedomestic_unobsimported_unobsdomesticimportedimported_backprojdomestic_backprojimported_backproj_incl_unobsdomestic_backproj_incl_unobsRt_lowerRt_IQR_lowerRt_medianRt_IQR_upperRt_upper
<date><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
2020-02-023900401.17396132.4093451.17494132.7285690.24263070.60561380.85568001.15590161.768350
2020-02-034000910.89897321.5072330.90085372.2709090.11655460.34130980.50305660.69287841.129236
2020-02-044100500.50001081.4726790.50190783.0320500.10351120.30414920.45521940.62902481.022204
2020-02-054200110.20105382.0918940.20223314.8791090.14798260.40440450.57536160.78287751.226896
2020-02-064300510.10827493.2693450.10837837.4866030.28992710.64415510.88324661.15541941.716245
2020-02-074400120.19671784.7423970.19438309.9073240.50157351.03101681.36056201.70819722.470284
\n" ], "text/latex": [ "A tibble: 6 × 15\n", "\\begin{tabular}{lllllllllllllll}\n", " date & time & domestic\\_unobs & imported\\_unobs & domestic & imported & imported\\_backproj & domestic\\_backproj & imported\\_backproj\\_incl\\_unobs & domestic\\_backproj\\_incl\\_unobs & Rt\\_lower & Rt\\_IQR\\_lower & Rt\\_median & Rt\\_IQR\\_upper & Rt\\_upper\\\\\n", " & & & & & & & & & & & & & & \\\\\n", "\\hline\n", "\t 2020-02-02 & 39 & 0 & 0 & 4 & 0 & 1.1739613 & 2.409345 & 1.1749413 & 2.728569 & 0.2426307 & 0.6056138 & 0.8556800 & 1.1559016 & 1.768350\\\\\n", "\t 2020-02-03 & 40 & 0 & 0 & 9 & 1 & 0.8989732 & 1.507233 & 0.9008537 & 2.270909 & 0.1165546 & 0.3413098 & 0.5030566 & 0.6928784 & 1.129236\\\\\n", "\t 2020-02-04 & 41 & 0 & 0 & 5 & 0 & 0.5000108 & 1.472679 & 0.5019078 & 3.032050 & 0.1035112 & 0.3041492 & 0.4552194 & 0.6290248 & 1.022204\\\\\n", "\t 2020-02-05 & 42 & 0 & 0 & 1 & 1 & 0.2010538 & 2.091894 & 0.2022331 & 4.879109 & 0.1479826 & 0.4044045 & 0.5753616 & 0.7828775 & 1.226896\\\\\n", "\t 2020-02-06 & 43 & 0 & 0 & 5 & 1 & 0.1082749 & 3.269345 & 0.1083783 & 7.486603 & 0.2899271 & 0.6441551 & 0.8832466 & 1.1554194 & 1.716245\\\\\n", "\t 2020-02-07 & 44 & 0 & 0 & 1 & 2 & 0.1967178 & 4.742397 & 0.1943830 & 9.907324 & 0.5015735 & 1.0310168 & 1.3605620 & 1.7081972 & 2.470284\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A tibble: 6 × 15\n", "\n", "| date <date> | time <dbl> | domestic_unobs <dbl> | imported_unobs <dbl> | domestic <dbl> | imported <dbl> | imported_backproj <dbl> | domestic_backproj <dbl> | imported_backproj_incl_unobs <dbl> | domestic_backproj_incl_unobs <dbl> | Rt_lower <dbl> | Rt_IQR_lower <dbl> | Rt_median <dbl> | Rt_IQR_upper <dbl> | Rt_upper <dbl> |\n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| 2020-02-02 | 39 | 0 | 0 | 4 | 0 | 1.1739613 | 2.409345 | 1.1749413 | 2.728569 | 0.2426307 | 0.6056138 | 0.8556800 | 1.1559016 | 1.768350 |\n", "| 2020-02-03 | 40 | 0 | 0 | 9 | 1 | 0.8989732 | 1.507233 | 0.9008537 | 2.270909 | 0.1165546 | 0.3413098 | 0.5030566 | 0.6928784 | 1.129236 |\n", "| 2020-02-04 | 41 | 0 | 0 | 5 | 0 | 0.5000108 | 1.472679 | 0.5019078 | 3.032050 | 0.1035112 | 0.3041492 | 0.4552194 | 0.6290248 | 1.022204 |\n", "| 2020-02-05 | 42 | 0 | 0 | 1 | 1 | 0.2010538 | 2.091894 | 0.2022331 | 4.879109 | 0.1479826 | 0.4044045 | 0.5753616 | 0.7828775 | 1.226896 |\n", "| 2020-02-06 | 43 | 0 | 0 | 5 | 1 | 0.1082749 | 3.269345 | 0.1083783 | 7.486603 | 0.2899271 | 0.6441551 | 0.8832466 | 1.1554194 | 1.716245 |\n", "| 2020-02-07 | 44 | 0 | 0 | 1 | 2 | 0.1967178 | 4.742397 | 0.1943830 | 9.907324 | 0.5015735 | 1.0310168 | 1.3605620 | 1.7081972 | 2.470284 |\n", "\n" ], "text/plain": [ " date time domestic_unobs imported_unobs domestic imported\n", "1 2020-02-02 39 0 0 4 0 \n", "2 2020-02-03 40 0 0 9 1 \n", "3 2020-02-04 41 0 0 5 0 \n", "4 2020-02-05 42 0 0 1 1 \n", "5 2020-02-06 43 0 0 5 1 \n", "6 2020-02-07 44 0 0 1 2 \n", " imported_backproj domestic_backproj imported_backproj_incl_unobs\n", "1 1.1739613 2.409345 1.1749413 \n", "2 0.8989732 1.507233 0.9008537 \n", "3 0.5000108 1.472679 0.5019078 \n", "4 0.2010538 2.091894 0.2022331 \n", "5 0.1082749 3.269345 0.1083783 \n", "6 0.1967178 4.742397 0.1943830 \n", " domestic_backproj_incl_unobs Rt_lower Rt_IQR_lower Rt_median Rt_IQR_upper\n", "1 2.728569 0.2426307 0.6056138 0.8556800 1.1559016 \n", "2 2.270909 0.1165546 0.3413098 0.5030566 0.6928784 \n", "3 3.032050 0.1035112 0.3041492 0.4552194 0.6290248 \n", "4 4.879109 0.1479826 0.4044045 0.5753616 0.7828775 \n", "5 7.486603 0.2899271 0.6441551 0.8832466 1.1554194 \n", "6 9.907324 0.5015735 1.0310168 1.3605620 1.7081972 \n", " Rt_upper\n", "1 1.768350\n", "2 1.129236\n", "3 1.022204\n", "4 1.226896\n", "5 1.716245\n", "6 2.470284" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_cases %>%\n", " mutate(date = datemin + time) %>% \n", " left_join(df_summary_, by='time') %>%\n", " select(date,time,everything()) %>% na.omit -> figure_data\n", "\n", "range = c(as.Date(\"2020-02-01\"), datestar - 17)\n", "figure_data %<>% filter(date < range[2], date > range[1])\n", "\n", "figure_data %>% head" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngjzo/20ppMQ2xnWTAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 300, "width": 420 }, "text/plain": { "height": 300, "width": 420 } }, "output_type": "display_data" } ], "source": [ "scaling_parameter=max(figure_data$domestic_backproj+figure_data$imported_backproj)/5.0\n", "options(repr.plot.width=7,repr.plot.height=5)\n", "\n", "figure_data %>% \n", " select(date,imported_backproj,domestic_backproj) %>% \n", " gather(exp_type,value,-date) %>%\n", " ggplot(aes(x=date)) + \n", " geom_bar(aes(y=value, fill=exp_type, group=exp_type), stat='identity', width=0.7) +\n", " geom_line(data = figure_data, aes(y=Rt_median*scaling_parameter),color=\"#1380A1\",size=1) +\n", " geom_ribbon(data = figure_data, \n", " aes(ymax=Rt_upper*scaling_parameter, ymin=Rt_lower*scaling_parameter), \n", " fill=\"#1380A1\", alpha = 0.25) +\n", " geom_ribbon(data = figure_data, \n", " aes(ymax=Rt_IQR_upper*scaling_parameter, ymin=Rt_IQR_lower*scaling_parameter), \n", " fill=\"#1380A1\", alpha = 0.5) +\n", " scale_fill_manual(values=c(\"#FAAB18\",\"gray35\")) +\n", " ggtitle(\"Entire Japan excluding unknown cases\") +\n", " labs(x=\"\\nDate of infection\", y=\"Incidence\\n\") +\n", " theme(text = element_text(size=12, family=\"sans\",color=\"black\"),\n", " axis.text = element_text(size=10, family=\"sans\",color=\"black\"),\n", " panel.grid.major = element_blank(), panel.grid.minor = element_blank(),\n", " legend.position = \"none\") +\n", " guides(fill=F) +\n", " theme_bw() +\n", " scale_x_date(date_labels=\"%m/%d\",date_breaks =\"10 day\", limits = range, expand = c(0, 0)) +\n", " scale_y_continuous(limit=c(0,620), expand = c(0, 0),\n", " sec.axis = sec_axis(~./(scaling_parameter), breaks=c(0,2,4,6,8,10), name = \"Effective reproduction number\\n\")) +\n", " geom_hline(yintercept=1*scaling_parameter, linetype=\"dashed\", color = \"#1380A1\", size =0.7)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "4.0.0" } }, "nbformat": 4, "nbformat_minor": 4 }