The post On Problem Statements appeared first on MetaSD.

]]>The Most Underrated Skill in Management

There are few management skills more powerful than the discipline of clearly articulating the problem you seek to solve before jumping into action.

BY NELSON P. REPENNING, DON KIEFFER, AND TODD ASTOR

A good problem statement has five basic elements:

• It references something the organization cares about and connects that element to a clear and specific goal;

• it contains a clear articulation of the gap between the current state and the goal;

• the key variables — the target, the current state, and the gap — are quantifiable;

• it is as neutral as possible concerning possible diagnoses or solutions; and

• it is sufficiently small in scope that you can tackle it quickly.

The post On Problem Statements appeared first on MetaSD.

]]>The post Excel, lost in the cloud appeared first on MetaSD.

]]>='https://ventanasystems-my.sharepoint.com/personal/vrbo_onmicrosoft_com/Documents/_Mkt/lxpgi/Model/Model/[Cohort Model Natural Increase.xlsx]Boston'!S135+'https://ventanasystems-my.sharepoint.com/personal/vrbo_onmicrosoft_com/Documents/_Mkt/lxpgi/Model/Model/[Cohort Model Immigration.xlsx]Boston'!S119+('https://ventanasystems-my.sharepoint.com/personal/vrbo_onmicrosoft_com/Documents/_Mkt/lxpgi/Model/Model/[Cohort Model NPR.xlsx]Boston'!S119-'https://ventanasystems-my.sharepoint.com/personal/vrbo_onmicrosoft_com/Documents/_Mkt/lxpgi/Model/Model/[Cohort Model.xlsx]Boston'!R119

URLs as equation terms? What were they thinking? This is an interface choice that makes things easy for programmers, and impossible for users.

The post Excel, lost in the cloud appeared first on MetaSD.

]]>The post Coronavirus Roundup II appeared first on MetaSD.

]]>What I think is a pretty important article from LANL: High Contagiousness and Rapid Spread of Severe Acute Respiratory Syndrome Coronavirus 2. This tackles the questions I wondered about in my steady state growth post, i.e. that high observed growth rates imply high R0 if duration of infectiousness is long.

Earlier in the epidemic, this was already a known problem:

The reproductive number of COVID-19 is higher compared to SARS coronavirus

Epiforecasts’ time varying R0 estimates

CMMID’s time varying reporting coverage estimates

NECSI’s daily update for the US

The nifty database of US state policies from Raifman et al. at BU

A similar policy tracker for the world

The covidtracking database. Very useful, if you don’t mind a little mysterious turbulence in variable naming.

The Kinsa thermometer US health weather map

Nature’s Special report: The simulations driving the world’s response to COVID-19

Pandemics Depress the Economy, Public Health Interventions Do Not: Evidence from the 1918 Flu

Projecting the transmission dynamics of SARS-CoV-2 through the postpandemic period has some interesting dynamics, including seasonality.

Quantifying SARS-CoV-2 transmission suggests epidemic control with digital contact tracing looks at requirements for contact tracing and isolation

Models for Count Data With Overdispersion has important considerations for calibration

Variolation: hmm. Filed under “interesting but possibly crazy.”

Creative, and less obviously crazy: An alternating lock-down strategy for sustainable mitigation of COVID-19

The post Coronavirus Roundup II appeared first on MetaSD.

]]>The post How useful are antibody tests? appeared first on MetaSD.

]]>Antibody tests in detecting SARS-CoV-2 infection: a meta-analysis

In total, we identified 38 eligible studies that include data from 7,848 individuals. The analyses showed that tests using the S antigen are more sensitive than N antigen-based tests. IgG tests perform better compared to IgM ones, andshow better sensitivity when the samples were taken longer after the onset of symptoms. Moreover, irrespective of the method, a combined IgG/IgM test seems to be a better choice in terms of sensitivity than measuring either antibody type alone. All methods yielded high specificity with some of them (ELISA and LFIA) reaching levels around 99%. ELISA-and CLIA-based methods performed better in terms of sensitivity (90-94%) followed by LFIA and FIA with sensitivities ranging from 80% to 86%.

The sensitivity results are interesting, but I’m more interested in timing:

Sample quality, low antibody concentrations and especially timing of the test -too soon after a person is infected when antibodies have not been developed yet or toolate when IgM antibodies have decreased or disappeared -could potentially explain the low ability of the antibody tests to identify people with COVID-19. According to kinetic measurements of some of the included studies 22, 49, 54

IgM peaks between days 5 and 12 and then drops slowly. IgGs reach peak concentrations after day 20 or so as IgM antibodies disappear.This meta-analysis showed, through meta-regression, that IgG tests did have better sensitivity when the samples were taken longer after the onset of symptoms. This is further corroborated by the lower specificity of IgM antibodies compared to IgG 15. Only few of the included studies provided data stratified by the time of onset of symptoms, so a separate stratified analysis was not feasible, but this should be a goal for future studies.

This is an important knowledge gap. Timing really matters, because tests that aren’t sensitive to early asymptomatic transmission have limited utility for preventing spread. Consider the distribution of serial infection times (Ferretti et al., *Science*):

Testing by itself doesn’t do anything to reduce the spread of infection. It’s an enabler: transmission goes down only if coronavirus-positive individuals identified through testing change their behavior. That implies a chain of delays:

- Conduct the test and get the results
- Inform the positive person
- Get them into a situation where they won’t infect their coworkers, family, etc.
- Trace their contacts, test them, and repeat

A test that only achieves peak sensitivity at >5 days may not leave much time for these delays to play out, limiting the effectiveness of contact tracing and isolation. A test that peaks at day 20 would be pretty useless (though interesting for surveillance and other purposes).

Seroconversion rates of 30% at onset of symptoms seem problematic, given the significant pre-symptomatic transmission implied by the Ferretti, Liu & Nishiura results on serial infection times. I hope the US testing strategy relies on lots of *fast* tests, not just lots of tests.

See also:

Antibody surveys suggesting vast undercount of coronavirus infections may be unreliable in *Science*

h/t Yioryos Stamboulis

The post How useful are antibody tests? appeared first on MetaSD.

]]>The post A coronavirus prediction you can bank on appeared first on MetaSD.

]]>The antiscience crowd will be out in force. They’ll cherry-pick the early model projections of an uncontrolled epidemic, and use that to claim that modelers predicted a catastrophe that didn’t happen, and conclude that there was never a problem. This is the Cassandra’s curse of all successful modeling interventions. (See *Nobody Ever Gets Credit for Fixing Problems that Never Happened* for a similar situation.)

But it won’t stop there. A lot of people don’t really care what the modelers actually said. They’ll just make stuff up. Just today I saw a comment at the Bozeman Chronicle to the effect of, “if this was as bad as they said, we’d all be dead.” Of course that was never in the cards, or the models, but that doesn’t matter in Dunning Krugerland.

Modelers, be prepared for a lot more of this. I think we need to be thinking more about defensive measures, like forecast archiving and presentation of results only with confidence bounds attached. However, it’s hard to do that and to produce model results at a pace that keeps up with the evolution of the epidemic. That’s something we need more infrastructure for.

The post A coronavirus prediction you can bank on appeared first on MetaSD.

]]>The post Coronavirus Curve-fitting OverConfidence appeared first on MetaSD.

]]>I understand that the IHME model is now more or less the official tool of the Federal Government. Normally I’m happy to see models guiding policy. It’s better than the alternative: would you fly in a plane designed by lawyers? (Apparently we have been.)

However, there’s nothing *magic* about a model. Using flawed methods, bad data, the wrong boundary, etc. can make the results GIGO. When a bad model blows up, the consequences can be just as harmful as any other bad reasoning. In addition, the metaphorical shrapnel hits the rest of us modelers. Currently, I’m hiding in my foxhole.

On top of the issues I mentioned previously, I think there are two more problems with the IHME model:

First, they fit the Normal distribution to cumulative cases, rather than incremental cases. Even in a parallel universe where the nonphysical curve fit was optimal, this would lead to understatement of the uncertainty in the projections.

Second, because the model has no operational mapping of real-world concepts to equation structure, you have no hooks to use to inject policy changes and the uncertainty associated with them. You have to construct some kind of arbitrary index and translate that to changes in the size and timing of the peak in an unprincipled way. This defeats the purpose of having a model.

For example, from the methods paper:

A covariate of days with expected exponential growth in the cumulative death rate was created using information on the number of days after the death rate exceeded 0.31 per million to the day when different social distancing measures were mandated by local and national government: school closures, non-essential business closures including bars and restaurants, stay-at-home recommendations, and travel restrictions including public transport closures. Days with 1 measure were counted as 0.67 equivalents, days with 2 measures as 0.334 equivalents and with 3 or 4 measures as 0.

This postulates a relationship that has only the most notional grounding. There’s no concept of compliance, nor any sense of the effect of stringency and exceptions.

In the real world, there’s also no linear relationship between “# policies implemented” and “days of exponential growth.” In fact, I would expect this to be extremely nonlinear, with a threshold effect. Either your policies reduce R0 below 1 and the epidemic peaks and shrinks, or they don’t, and it continues to grow at some positive rate until a large part of the population is infected. I don’t think this structure captures that reality at all.

That’s why, in the IHME figure above (retrieved yesterday), you don’t see any scenarios in which the epidemic fizzles, because we get lucky and warm weather slows the virus, or there are many more mild cases than we thought. You also don’t see any runaway scenarios in which measures fail to bring R0 below 1, resulting in sustained growth. Nor is there any possibility of ending measures too soon, resulting in an echo.

For comparison, I ran some sensitivity runs my model for North Dakota last night. I included uncertainty from fit to data (for example, R0 constrained to fit observations via MCMC) and some a priori uncertainty about effectiveness and duration of measures, and from the literature about fatality rates, seasonality, and unobserved asymptomatics.

I found that I couldn’t exclude the IHME projections from my confidence bounds, so they’re not completely crazy. However, they understate the uncertainty in the situation by a *huge* margin. They forecast the peak at a fairly definite time, plus or minus a factor of two. With my hybrid-SEIR model, the 95% bounds include variation by a factor of 10. The difference is that their bounds are derived only from curve fitting, and therefore omit a vast amount of structural uncertainty that is represented in my model.

Who is right? We could argue, but since the IHME model is statistically flawed and doesn’t include any direct effect of uncertainty in R0, prevalence of unobserved mild cases, temperature sensitivity of the virus, effectiveness of measures, compliance, travel, etc., I would not put any money on the future remaining within their confidence bounds.

The post Coronavirus Curve-fitting OverConfidence appeared first on MetaSD.

]]>The post Crusonia on COVID19 appeared first on MetaSD.

]]>The second panelist – Eugene Scarberry – was really interesting, both for his extensive experience in the trenches getting things approved at the FDA, and some good background on ventilators and alternatives, and how to get more of them.

The post Crusonia on COVID19 appeared first on MetaSD.

]]>The post The Normal distribution is a bad COVID19 model appeared first on MetaSD.

]]>We developed a curve-fitting tool to fit a nonlinear mixed effects model to the available admin 1 cumulative death data. The cumulative death rate for each location is assumed to follow a parametrized Gaussian error function … where the function is the Gaussian error function(written explicitly above), p controls the maximum death rate at each location, t is the time since death rate exceeded 1e-15, ß(beta)is a location-specific inflection point(time at which rate of increase of the death rate is maximum), and α(alpha)is a location-specific growth parameter. Other sigmoidal functional forms … were considered but did not fit the data as well. Data were fit to the log of the death rate in the available data, using an optimization framework described in the appendix.

One bell-shaped curve is as good as another, right? No!

*Like Young Frankenstein, epidemic curves are not Normal.*

The graph below compares 3 possible models: the Normal distribution, the Logistic distribution (which has an equivalent differential equation interpretation), and the SEIR model. Consider what’s happening when you fit a sigmoid to the epidemic data so far (red box). The curves below are normalized to yield similar peaks, but imagine what would happen to the peaks if you fit all 3 to the same data series.

The problem is that this curve-fitting exercise expects data from a small portion of the behavior to tell you about the peak. But over that interval, there’s little behavior variation. Any exponential is going to fit reasonably well. Even worse, if there are any biases in the data, such as dramatic shifts in test coverage, the fit is likely to reflect those biases as much as it does the physics of the system. That’s largely why the history of fitting diffusion models to emerging trends in the forecasting literature is so dreadful.

After the peak, the right tail of the SEIR model is also quite different, because the time constant of recovery is different from the time constant for the growth phase. This asymmetry may also have implications for planning.

It’s easier to see what’s going on if you plot the curves above on a log-y scale:

The logistic and SEIR models have a linear left tail. That is to say that they have a constant growth rate in the early epidemic, until controls are imposed or you run out of susceptible people.

The Normal distribution (red) is a parabola, which means that the growth rate is steadily decreasing, long before you get near the peak. Similarly, if you go backwards in time, the Normal distribution predicts that the growth rate would have been higher back in November, when patient 0 emerged.

There *is* some reason to think that epidemics start faster due to social network topology, but also some reasons for *slower* emergence. In any case, that’s not what is observed for COVID19 – uncontrolled growth rates are pretty constant:

*https://aatishb.com/covidtrends/*

Mining data to extract relationships works great in many settings. But when you have sparse data with lots of known measurement problems, it’s treacherous. In that case, you need a model of the physics of the system and the lags and biases in the data generating process. Then you test that model against all available information, including

- conservation laws,
- operational correspondence with physical processes,
- opinions from subject matter experts and measurements from other levels of aggregation,
- dimensional consistency,
- robustness in extreme conditions, and finally
- fit to data.

Fortunately, a good starting point has existed for almost a century: the SEIR model. It’s not without pitfalls, and needs some disaggregation and a complementary model of policies and the case reporting process, but if you want simple projections, it’s a good place to start.

Once you have triangulation from all of these sources, you have some hope of getting the peak right. But your confidence bounds should still be derived not only from the fit itself, but also priors on parameters that were not part of the estimation process.

Update: Coronavirus Curve-fitting OverConfidence

The post The Normal distribution is a bad COVID19 model appeared first on MetaSD.

]]>The post Steady State Growth in SIR & SEIR Models appeared first on MetaSD.

]]>It began with a puzzle: I re-implemented my conceptual coronavirus model for multiple regions, tuning it for Italy and Switzerland. The goal was to use it to explore border closure policies. But calibration revealed a problem: using mainstream parameters for the incubation time, recovery time, and R0 yielded lukewarm growth in infections. Retuning to fit the data yields R0=5, which is outside the range of most estimates. It also makes control extremely difficult, because you have to reduce transmission by 1-1/R0 = 80% to stop the spread.

To understand why, I decided to solve the model analytically for the steady-state growth rate in the early infection period, when there are plenty of susceptible people, so the infection rate is unconstrained by availability of victims. That analysis is reproduced in the subsequent sections. It’s of general interest as a way of thinking about growth in SD models, not only for epidemics, but also in marketing (the Bass Diffusion model is essentially an epidemic model) and in growing economies and supply chains.

First, though, I’ll skip to the punch line.

The puzzle exists because R0 is not a complete description of the structure of an epidemic. It tells you some important things about how it will unfold, like how much you have to reduce transmission to stop it, but critically, not how fast it will go. That’s because the growth rate is entangled with the incubation and recovery times, or more generally the distribution of the generation time (the time between primary and secondary infections).

This means that an R0 value estimated with one set of assumptions about generation times (e.g., using the R package R0) can’t be plugged into an SEIR model with different delay structure assumptions, without changing the trajectory of the epidemic. Specifically, the growth rate is likely to be different. The growth rate is, unfortunately, pretty important, because it influences the time at which critical thresholds like ventilator capacity will be breached.

The mathematics of this are laid out clearly by Wallinga & Lipsitch. They approach the problem from generating functions, which give up simple closed-form solutions a little more readily than my steady-state growth calculations below. For example, for the SEIR model,

R0= (1 +r/b_{1})(1 +r/b_{2}) (Eqn. 3.2)

Where r is the growth rate, b1 is the inverse of the incubation time, and b2 is the inverse of the recovery time. If you plug in r = 0.3/day, b1 = 1/(5 days), b2 = 1/(10 days), R0 = 10, which is not plausible for COVID-19. Similarly, if you plug in the frequently-seen R0=2.4 with the time constants above, you get growth at 8%/day, not the observed 30%/day.

There are actually more ways to get into trouble by using R0 as a shorthand for rich assumptions in models. Stochastic dynamics and network topology matter, for example. In The Failure of R0, Li Blakely & Smith write,

However, in almost every aspect that matters, R 0 is flawed. Diseases can persist with R 0 < 1, while diseases with R 0 > 1 can die out. We show that the same model of malaria gives many different values of R 0, depending on the method used, with the sole common property that they have a threshold at 1. We also survey estimated values of R 0 for a variety of diseases, and examine some of the alternatives that have been proposed. If R 0 is to be used, it must be accompanied by caveats about the method of calculation, underlying model assumptions and evidence that it is actually a threshold. Otherwise, the concept is meaningless.

Is this merely a theoretical problem? I don’t think so. Here’s how things stand in some online SEIR-type simulators:

Model | R0 (dmnl) | Incubation (days) | Infectious (days) | Growth Rate (%/day) |

My original | 3.3 | 5 | 7 | 17 |

Homer US | 3.5 | 5.4 | 11 | 18 |

covidsim.eu | 4 | 4 & 1 | 10 | 17 |

Epidemic Calculator | 2.2 | 5.2 | 2.9 | 30* |

Imperial College | 2.4 | 5.1 | ~3** | 20*** |

*Observed in simulator; doesn’t match steady state calculation, so some feature is unknown.

**Est. from 6.5 day mean generation time, distributed around incubation time.

***Not reported; doubling time appears to be about 6 days.

I think this is certainly a Tower of Babel situation. It seems likely that the low-order age structure in the SEIR model is problematic for accurate representation of the dynamics. But it also seems like piecemeal parameter selection understates the true uncertainty in these values. We need to know the joint distribution of R0 and the generation time distribution in order to properly represent what is going on.

The classic epidemic model is the SIR model:

A complete analysis is complicated, but the essence is pretty simple. (There’s a cool phase space analysis here, and the original Kormack & McKendrick paper is here. My Vensim tutorial is here.) Thinking about the model from an SD perspective, I got interested in the relationship between the steady-state growth of infections early in the epidemic and the reproduction ratio R0.

The following walks through that computation. The same math often proves useful in other settings. For example, if you have a supply chain in a growing economy, it’s useful to initialize all of the stocks to the same growth trajectory.

The key flow in the model is infections:

Infecting = Transmission Rate * Infected * Susceptible / Population

with units:

people/day = (~~people/person~~)/day * people *~~people / people~~

The transmission rate summarizes the likelihood of passing the disease from one person to another: how frequently are people in contact, and what’s the chance that a contact results in transmission.

The stock of infected people then changes according to:

d(Infected)/dt = Infecting - Recovering = Transmission Rate * Infected * Susceptible / Population - Infected / Duration

Early in the epidemic, Susceptible / Population is approximately 1, so this simplifies to

= Infected * ( Transmission Rate - 1/Duration )

So initially, the epidemic grows at a rate

g = Transmission Rate - 1/Duration ~ fraction/day

This is closely related to the reproduction ratio, R0,

Transmission Rate = R0/Duration g = (R0-1)/Duration

Thus g = 0 when Transmission Rate = 1/Duration, and when R0 = 1.

Rearranging,

R0 = 1 + g*Duration R0 = 1 + g/Removal Rate Removal Rate = 1/Duration

So far so good. But coronavirus isn’t immediately infective, so it’s better represented by the SEIR model:

This adds a stock of exposed people, who aren’t yet symptomatic, and aren’t (as) infective to others. So this brings us to the question I was originally interested in: how does the delay between infection and infectivity change the growth of the disease? It’s just algebra, but it turns out to be a little messy.

Again, since we’re only interested in the early epidemic, neglect susceptible and recovered, and consider only exposed E and infected I. Call the rates infecting, advancing and recovering i, a and r. Call the incubation time Te and the duration of infection Ti and the transmission rate beta (typically named β, but I don’t have time for Greek letters). Exposed people are partially infectious (not shown on the diagram above), so that

i = beta*(I + alpha*E)

In steady state, both stocks grow at the same rate g:

g = dE/E = dI/I (i-a)/E = (a-r)/I (beta*(I+alpha*E)-E/Te)/E = (E/Te-I/Ti)/I

Solve this for

x = I/E = [-(beta*alpha*te+te/ti-1)+SQRT( (beta*alpha*te+te/ti-1)^2 + 4*beta*te )]/(2*beta*te)

Then there’s one more constraint: the aggregate I + E must grow at the same fractional rate as the individual components.

g = d(E+I)/(E+I) = (b(I+alpha*E) - I/Ti)/(E+I)

Substituting E= I/x,

g = (beta*(1+alpha/x)-1/ti)/(1/x+1)

This is all laid out in the following model:

The upper portion shows how the observed values (“obs” variables) quickly converge to the expected values (“*” variables) for the growth rate and ratio I/E:

The lower portion is a replica of the same structure, cutting the feedback from E and I to infections. Instead, I feed in a unit impulse of infections (i.e., one infection in time approaching 0). Then I compute the infections that person would generate during their tenure in the system. That should converge to R0:

… and it does.

You’ll notice that I now have multiple cross-checks on these results: analytical solutions compared to simulations, and impulse response verifying the closed-loop results. This might be overkill for people who don’t make mistakes, but for me it’s not. I don’t want to trust my fate to people who think they don’t make mistakes. One in 100 might be a genius, but the other 99 are just arrogant fanatics. That’s why I’m always hoping to get triangulation among simulations, analytical solutions and data.

The post Steady State Growth in SIR & SEIR Models appeared first on MetaSD.

]]>The post A model of COVID-19 in the US with endogenous testing, containment measures, and social distancing appeared first on MetaSD.

]]>The core of the model is an SEIR chain, similar to my model. This adds some nice features, including endogenous testing and a feedback decision rule for control measures. It’s parameterized for the US.

I haven’t spent significant time with the model yet, so I can’t really comment. An alarming feature of this disease is that doublings occur on the same time scale as thinking through an iteration of a model, especially if coronavirus is not your day job. I hope to add some further thoughts when I’ve thinned my backlog a bit.

From the slide deck:

Conclusions

- The results here come from a model with several key numerical assumptions, especially around behavioral responses. As the 4 runs illustrate, if the assumptions are modified, the overall results change over some range of possibility.
- My assumptions about the behavioral responses were informed by what we been seeing recently in the US: a good response, even in regions not yet hard-hit. The message is out, and it is having an effect.
- Because of the responses, and despite the absence of a vaccine, I conclude this epidemic will not infect a third or half of the population as some have predicted. Rather, we are likely to see 6m-28m cases in the US in total, resulting in 100k-500k deaths. This projection assumes a vaccine available by next April.
- I also conclude that our hospital system overall has enough bed capacity to handle the peak load late April/early May; and enough ventilator capacity except during those 3 weeks in the more pessimistic
Slowbothscenario. We would need 180k ventilators (rather than the assumed 120k) to avoid this shortage in the pessimistic scenario.- I have not addressed here the impact of containment measures and social distancing on the economy, including the supply of food and other necessities. This supply is important, affecting our ability to maintain strong containment and distancing.

This archive contains the Vensim model in mdl and vpmx format, a custom graph set (already loaded in the model), and some runs:

A nice slide deck documenting the results:

This uses data via GET XLS so it won’t work with PLE; the Model Reader will work.

Update, 3/24/2020: This version refines the model. I’ve added a copy with the data variables deleted, that should work with PLE.

Update, 4/27/2020:

The post A model of COVID-19 in the US with endogenous testing, containment measures, and social distancing appeared first on MetaSD.

]]>