vignettes/Michigan.Rmd
Michigan.Rmd
COVID-19 cases and hospital admissions have been rising in Michigan. We estimate an effective reproductive number of 1.36 as of March 25. We consider 4 possible strategies using the LEMMA model:
1. Maintain the status quo.
2. Vaccine Surge: Double the current vaccine allocation for two weeks.
3. Reopening Pause: Reenact restrictions that reduce the effective contact rate by 30% for two weeks.
4. Both Vaccine Surge and Reopening Pause.
With regard to the reopening pause, this might be possible by closing indoor dining, indoor bars and indoor gyms for two weeks. For comparison, we estimate that restrictions and behavior change in March 2020 reduced the effective contact rate by 67%.
Relative to the status quo, we estimate that the combined Vaccine Surge and Reopening Pause could reduce hospital admissions by 23000 and deaths by 2500 from April 3 to July 1. The Vaccine Surge alone could reduce hospital admissions by 10000 and deaths by 1200. The Reopening Pause alone could reduce hospital admissions by 16000 and deaths by 1700.
library(LEMMA)
no_change <- CredibilityIntervalFromExcel("MI.xlsx")
pause <- CredibilityIntervalFromExcel("MI_pause.xlsx")
double <- CredibilityIntervalFromExcel("MI_double.xlsx")
pause_double <- CredibilityIntervalFromExcel("MI_pause_double.xlsx")
We are not aware of good estimates of current seroprevalence in Michigan - if you have one please let us know! We use the CDC seroprevalence estimate prior to vaccine rollout. After vaccine rollout begins, interpretation of the CDC seroprevalence estimate is unclear (“Testing platforms differ between jurisdictions, with laboratories using a mix of anti-spike (i.e., seen with vaccine and/or infection) and anti-nucleocapsid (i.e., only with infection), some estimates will reflect receipt of vaccines.”).
The CDC estimates imply a case detection rate of around 40%, which seems high, but we used a prior of 35% for our base case. This would mean that there are many people without natural immunity and that the benefits from a vaccine surge and/or reopening pause would be large. In the Sensitivity Analysis section, we also used a lower prior of 25% case detection rate, implying a larger number with natural immunity and thus reductions in admissions and deaths that are roughly 40% as large as above.
As our base case, we assume the UK variant currently makes up 50% of the circulating SARS-COV2, grows at 3% per day and is 70% more transmissable than wild-type SARS-COV2. These values are considered fixed by LEMMA but we vary these assumptions in the Sensitivity Analysis. Other fixed values regarding variants and vaccine efficacy are on the Variants
sheet of the Excel input. Paramters on the Parameters with Distributions
(e.g. latent period, hospitalization rate, etc) are treated as parametersw with prior distributions to be estimated. Their posterior modes can be found in the Excel output file. See the main LEMMA page for more details on the LEMMA model and how to install and use it.
We examined the effect of high or low seroprevalence (prior on case detection rate = 25% or 35%), increased transmisability for the UK variant of 50% and 70%, current UK variant proportion 30%, 50%, 70%, and daily growth_UK 2%, 3%, 4%.
Code to reproduce this sensitivity analysis is below.
## double_vaccines pause low_seroprev trans_mult_UK cur_UK growth_UK admits_averted deaths_averted
## 1 TRUE TRUE TRUE 1.5 0.3 1.02 16270.265 1664.7633
## 2 TRUE FALSE TRUE 1.5 0.3 1.02 6506.436 742.6581
## 3 FALSE TRUE TRUE 1.5 0.3 1.02 12174.818 1222.3785
## 4 FALSE FALSE TRUE 1.5 0.3 1.02 0.000 0.0000
## 5 TRUE TRUE FALSE 1.5 0.3 1.02 20144.861 2081.2286
## 6 TRUE FALSE FALSE 1.5 0.3 1.02 9230.665 1052.8113
## 7 FALSE TRUE FALSE 1.5 0.3 1.02 12687.479 1290.7697
## 8 FALSE FALSE FALSE 1.5 0.3 1.02 0.000 0.0000
## 9 TRUE TRUE TRUE 1.7 0.3 1.02 16796.837 1715.7964
## 10 TRUE FALSE TRUE 1.7 0.3 1.02 6817.303 771.0565
## 11 FALSE TRUE TRUE 1.7 0.3 1.02 12496.894 1258.0746
## 12 FALSE FALSE TRUE 1.7 0.3 1.02 0.000 0.0000
## 13 TRUE TRUE FALSE 1.7 0.3 1.02 9102.254 966.3809
## 14 TRUE FALSE FALSE 1.7 0.3 1.02 2994.673 374.0657
## 15 FALSE TRUE FALSE 1.7 0.3 1.02 6954.969 719.8374
## 16 FALSE FALSE FALSE 1.7 0.3 1.02 0.000 0.0000
## 17 TRUE TRUE TRUE 1.5 0.5 1.02 19390.030 2031.8101
## 18 TRUE FALSE TRUE 1.5 0.5 1.02 7885.738 917.7870
## 19 FALSE TRUE TRUE 1.5 0.5 1.02 14326.753 1478.0224
## 20 FALSE FALSE TRUE 1.5 0.5 1.02 0.000 0.0000
## 21 TRUE TRUE FALSE 1.5 0.5 1.02 20884.973 2219.2189
## 22 TRUE FALSE FALSE 1.5 0.5 1.02 9429.427 1112.5222
## 23 FALSE TRUE FALSE 1.5 0.5 1.02 13194.550 1379.2518
## 24 FALSE FALSE FALSE 1.5 0.5 1.02 0.000 0.0000
## 25 TRUE TRUE TRUE 1.7 0.5 1.02 19566.053 2049.1190
## 26 TRUE FALSE TRUE 1.7 0.5 1.02 8168.375 948.3350
## 27 FALSE TRUE TRUE 1.7 0.5 1.02 13982.514 1442.5420
## 28 FALSE FALSE TRUE 1.7 0.5 1.02 0.000 0.0000
## 29 TRUE TRUE FALSE 1.7 0.5 1.02 20467.646 2171.4555
## 30 TRUE FALSE FALSE 1.7 0.5 1.02 9233.050 1086.6878
## 31 FALSE TRUE FALSE 1.7 0.5 1.02 12934.796 1351.2689
## 32 FALSE FALSE FALSE 1.7 0.5 1.02 0.000 0.0000
## 33 TRUE TRUE TRUE 1.5 0.7 1.02 19313.446 2059.1810
## 34 TRUE FALSE TRUE 1.5 0.7 1.02 7739.874 923.6501
## 35 FALSE TRUE TRUE 1.5 0.7 1.02 14190.693 1485.4792
## 36 FALSE FALSE TRUE 1.5 0.7 1.02 0.000 0.0000
## 37 TRUE TRUE FALSE 1.5 0.7 1.02 9091.565 1016.8031
## 38 TRUE FALSE FALSE 1.5 0.7 1.02 2742.080 371.7645
## 39 FALSE TRUE FALSE 1.5 0.7 1.02 7030.398 762.2984
## 40 FALSE FALSE FALSE 1.5 0.7 1.02 0.000 0.0000
## 41 TRUE TRUE TRUE 1.7 0.7 1.02 25234.667 2671.3196
## 42 TRUE FALSE TRUE 1.7 0.7 1.02 10978.640 1280.3306
## 43 FALSE TRUE TRUE 1.7 0.7 1.02 17367.615 1816.3734
## 44 FALSE FALSE TRUE 1.7 0.7 1.02 0.000 0.0000
## 45 TRUE TRUE FALSE 1.7 0.7 1.02 9318.940 1043.6781
## 46 TRUE FALSE FALSE 1.7 0.7 1.02 2952.923 398.7821
## 47 FALSE TRUE FALSE 1.7 0.7 1.02 6990.214 758.1892
## 48 FALSE FALSE FALSE 1.7 0.7 1.02 0.000 0.0000
## 49 TRUE TRUE TRUE 1.5 0.3 1.03 19322.801 1995.1369
## 50 TRUE FALSE TRUE 1.5 0.3 1.03 8216.540 934.1551
## 51 FALSE TRUE TRUE 1.5 0.3 1.03 13825.854 1408.9721
## 52 FALSE FALSE TRUE 1.5 0.3 1.03 0.000 0.0000
## 53 TRUE TRUE FALSE 1.5 0.3 1.03 10444.417 1121.0880
## 54 TRUE FALSE FALSE 1.5 0.3 1.03 3613.289 451.5280
## 55 FALSE TRUE FALSE 1.5 0.3 1.03 7790.566 817.1054
## 56 FALSE FALSE FALSE 1.5 0.3 1.03 0.000 0.0000
## 57 TRUE TRUE TRUE 1.7 0.3 1.03 20453.251 2113.6259
## 58 TRUE FALSE TRUE 1.7 0.3 1.03 9020.766 1019.8623
## 59 FALSE TRUE TRUE 1.7 0.3 1.03 14019.224 1436.2591
## 60 FALSE FALSE TRUE 1.7 0.3 1.03 0.000 0.0000
## 61 TRUE TRUE FALSE 1.7 0.3 1.03 11114.782 1195.0589
## 62 TRUE FALSE FALSE 1.7 0.3 1.03 4025.689 498.0253
## 63 FALSE TRUE FALSE 1.7 0.3 1.03 7972.485 842.3147
## 64 FALSE FALSE FALSE 1.7 0.3 1.03 0.000 0.0000
## 65 TRUE TRUE TRUE 1.5 0.5 1.03 20693.371 2201.0784
## 66 TRUE FALSE TRUE 1.5 0.5 1.03 8578.982 1010.8762
## 67 FALSE TRUE TRUE 1.5 0.5 1.03 14971.227 1571.3585
## 68 FALSE FALSE TRUE 1.5 0.5 1.03 0.000 0.0000
## 69 TRUE TRUE FALSE 1.5 0.5 1.03 23796.414 2568.1252
## 70 TRUE FALSE FALSE 1.5 0.5 1.03 11268.696 1336.2363
## 71 FALSE TRUE FALSE 1.5 0.5 1.03 14277.594 1525.9401
## 72 FALSE FALSE FALSE 1.5 0.5 1.03 0.000 0.0000
## 73 TRUE TRUE TRUE 1.7 0.5 1.03 23278.189 2477.4703
## 74 TRUE FALSE TRUE 1.7 0.5 1.03 10107.882 1182.3380
## 75 FALSE TRUE TRUE 1.7 0.5 1.03 15997.186 1689.4000
## 76 FALSE FALSE TRUE 1.7 0.5 1.03 0.000 0.0000
## 77 TRUE TRUE FALSE 1.7 0.5 1.03 9849.542 1097.7545
## 78 TRUE FALSE FALSE 1.7 0.5 1.03 3266.581 431.0080
## 79 FALSE TRUE FALSE 1.7 0.5 1.03 7207.326 783.5507
## 80 FALSE FALSE FALSE 1.7 0.5 1.03 0.000 0.0000
## 81 TRUE TRUE TRUE 1.5 0.7 1.03 21925.417 2378.9992
## 82 TRUE FALSE TRUE 1.5 0.7 1.03 8937.670 1081.7278
## 83 FALSE TRUE TRUE 1.5 0.7 1.03 15802.525 1689.3898
## 84 FALSE FALSE TRUE 1.5 0.7 1.03 0.000 0.0000
## 85 TRUE TRUE FALSE 1.5 0.7 1.03 24228.501 2663.7430
## 86 TRUE FALSE FALSE 1.5 0.7 1.03 10938.059 1336.9225
## 87 FALSE TRUE FALSE 1.5 0.7 1.03 15147.467 1642.3824
## 88 FALSE FALSE FALSE 1.5 0.7 1.03 0.000 0.0000
## 89 TRUE TRUE TRUE 1.7 0.7 1.03 28431.461 3070.4670
## 90 TRUE FALSE TRUE 1.7 0.7 1.03 12827.941 1521.2818
## 91 FALSE TRUE TRUE 1.7 0.7 1.03 18588.124 1989.4587
## 92 FALSE FALSE TRUE 1.7 0.7 1.03 0.000 0.0000
## 93 TRUE TRUE FALSE 1.7 0.7 1.03 8027.848 922.5805
## 94 TRUE FALSE FALSE 1.7 0.7 1.03 2191.507 311.6886
## 95 FALSE TRUE FALSE 1.7 0.7 1.03 6268.298 699.0355
## 96 FALSE FALSE FALSE 1.7 0.7 1.03 0.000 0.0000
## 97 TRUE TRUE TRUE 1.5 0.3 1.04 22222.730 2327.0762
## 98 TRUE FALSE TRUE 1.5 0.3 1.04 9806.125 1120.8668
## 99 FALSE TRUE TRUE 1.5 0.3 1.04 15438.511 1605.9976
## 100 FALSE FALSE TRUE 1.5 0.3 1.04 0.000 0.0000
## 101 TRUE TRUE FALSE 1.5 0.3 1.04 8248.353 908.9634
## 102 TRUE FALSE FALSE 1.5 0.3 1.04 2624.043 345.3211
## 103 FALSE TRUE FALSE 1.5 0.3 1.04 6119.581 656.9107
## 104 FALSE FALSE FALSE 1.5 0.3 1.04 0.000 0.0000
## 105 TRUE TRUE TRUE 1.7 0.3 1.04 23385.549 2445.1531
## 106 TRUE FALSE TRUE 1.7 0.3 1.04 10830.039 1229.3050
## 107 FALSE TRUE TRUE 1.7 0.3 1.04 15063.558 1573.2249
## 108 FALSE FALSE TRUE 1.7 0.3 1.04 0.000 0.0000
## 109 TRUE TRUE FALSE 1.7 0.3 1.04 13414.277 1451.2882
## 110 TRUE FALSE FALSE 1.7 0.3 1.04 5296.279 646.2177
## 111 FALSE TRUE FALSE 1.7 0.3 1.04 9103.238 976.0162
## 112 FALSE FALSE FALSE 1.7 0.3 1.04 0.000 0.0000
## 113 TRUE TRUE TRUE 1.5 0.5 1.04 22356.780 2401.2915
## 114 TRUE FALSE TRUE 1.5 0.5 1.04 9633.200 1143.8481
## 115 FALSE TRUE TRUE 1.5 0.5 1.04 15473.692 1639.8717
## 116 FALSE FALSE TRUE 1.5 0.5 1.04 0.000 0.0000
## 117 TRUE TRUE FALSE 1.5 0.5 1.04 11200.203 1254.7910
## 118 TRUE FALSE FALSE 1.5 0.5 1.04 3865.850 508.7319
## 119 FALSE TRUE FALSE 1.5 0.5 1.04 8116.609 887.3571
## 120 FALSE FALSE FALSE 1.5 0.5 1.04 0.000 0.0000
## 121 TRUE TRUE TRUE 1.7 0.5 1.04 24830.551 2674.6070
## 122 TRUE FALSE TRUE 1.7 0.5 1.04 11006.389 1300.8749
## 123 FALSE TRUE TRUE 1.7 0.5 1.04 16533.701 1771.9412
## 124 FALSE FALSE TRUE 1.7 0.5 1.04 0.000 0.0000
## 125 TRUE TRUE FALSE 1.7 0.5 1.04 25293.133 2792.1630
## 126 TRUE FALSE FALSE 1.7 0.5 1.04 12699.106 1530.4792
## 127 FALSE TRUE FALSE 1.7 0.5 1.04 13887.940 1528.9234
## 128 FALSE FALSE FALSE 1.7 0.5 1.04 0.000 0.0000
## 129 TRUE TRUE TRUE 1.5 0.7 1.04 23461.473 2568.2089
## 130 TRUE FALSE TRUE 1.5 0.7 1.04 9624.371 1172.3989
## 131 FALSE TRUE TRUE 1.5 0.7 1.04 16847.133 1820.6976
## 132 FALSE FALSE TRUE 1.5 0.7 1.04 0.000 0.0000
## 133 TRUE TRUE FALSE 1.5 0.7 1.04 9983.067 1148.1491
## 134 TRUE FALSE FALSE 1.5 0.7 1.04 3006.574 418.5837
## 135 FALSE TRUE FALSE 1.5 0.7 1.04 7600.870 850.0265
## 136 FALSE FALSE FALSE 1.5 0.7 1.04 0.000 0.0000
## 137 TRUE TRUE TRUE 1.7 0.7 1.04 24661.067 2699.2801
## 138 TRUE FALSE TRUE 1.7 0.7 1.04 10407.605 1263.8262
## 139 FALSE TRUE TRUE 1.7 0.7 1.04 17086.169 1850.5918
## 140 FALSE FALSE TRUE 1.7 0.7 1.04 0.000 0.0000
## 141 TRUE TRUE FALSE 1.7 0.7 1.04 8462.806 981.7534
## 142 TRUE FALSE FALSE 1.7 0.7 1.04 2334.124 333.7354
## 143 FALSE TRUE FALSE 1.7 0.7 1.04 6550.384 738.8318
## 144 FALSE FALSE FALSE 1.7 0.7 1.04 0.000 0.0000
Scenario <- function(pause, double_vaccines, low_seroprev, trans_mult_UK, cur_UK, growth_UK) {
sheets <- LEMMA:::ReadInputs("MI.xlsx")
pause_date <- as.Date("2021/4/3")
if (pause) {
sheets$Interventions <- rbind(sheets$Interventions,
data.table(mu_t_inter = c(pause_date, pause_date + 14),
sigma_t_inter = 0.1,
mu_beta_inter = c(0.7, 1/0.7),
sigma_beta_inter = 0.1,
mu_len_inter = 7,
sigma_len_inter = 0.1))
}
if (double_vaccines) {
sheets$`Vaccine Doses - Observed`[date >= pause_date & date <= (pause_date + 14), dose1 := dose1 * 2]
sheets$`Vaccine Doses - Observed`[date >= pause_date & date <= (pause_date + 14), dose2 := dose2 * 2]
sheets$`Vaccine Doses - Observed`[date >= pause_date & date <= (pause_date + 14), doseJ := doseJ * 2]
}
if (low_seroprev) {
sheets$`Parameters with Distributions`[internal.name == "frac_tested", Mean := 0.35]
} else {
sheets$`Parameters with Distributions`[internal.name == "frac_tested", Mean := 0.25]
}
sheets$Variants[name == "UK", transmisson_mult := trans_mult_UK]
sheets$Variants[name == "UK", frac_on_day0 := cur_UK]
sheets$Variants[name == "Wild", frac_on_day0 := 1 - cur_UK]
sheets$Variants[name == "UK", daily_growth_prior := growth_UK]
sheets$Variants[name == "UK", daily_growth_future := growth_UK]
sheets$Internal[internal.name == "output.filestr", value := paste0("MI_", pause, double_vaccines, low_seroprev, trans_mult_UK, cur_UK, growth_UK)]
inputs <- LEMMA:::ProcessSheets(sheets)
lemma <- LEMMA:::CredibilityInterval(inputs)
return(lemma)
}
RunScenario <- function(index) {
with(scen[index, ], Scenario(pause, double_vaccines, low_seroprev, trans_mult_UK, cur_UK, growth_UK))
}
scen <- expand.grid(pause = c(T, F), double_vaccines = c(T, F), low_seroprev = c(T, F), trans_mult_UK = c(1.5, 1.7), cur_UK = c(0.3, 0.5, 0.7), growth_UK = c(1.02, 1.03, 1.04))
lemma_list <- mclapply(1:nrow(scen), RunScenario, mc.cores = 12)