While I’m catching up on journal club reading, two weeks ago we discussed Chu et al, Transmission Assessment Surveys (TAS) to Define Endpoints for Lymphatic Filariasis Mass Drug Administration: A Multicenter Evaluation, which takes on the question of how to decide when it is safe to stop a massive disease elimination program. This work must rely on some cool mathematical epi modeling, to say how many years of what level of coverage is necessary before you can hope the LF is gone.
Category Archives: disease modeling
Journal Club: Transmission Assessment Surveys (TAS) to Define Endpoints for Lymphatic Filariasis Mass Drug Administration: A Multicenter Evaluation
This week in journal club we are discussing Rudan et al, Epidemiology and etiology of childhood pneumonia in 2010. This description of an estimation method comes with an 80 page spreadsheet showing the calculation!
Papers on with results from some of my favorite models from the GBD 2010 appeared this week:
Degenhardt et al, Global burden of disease attributable to illicit drug use and dependence: findings from the Global Burden of Disease Study 2010, http://www.thelancet.com/journals/lancet/article/PIIS0140-6736(13)61530-5
Whiteford et al, Global burden of disease attributable to mental and substance use disorders: findings from the Global Burden of Disease Study 2010, http://www.thelancet.com/journals/lancet/article/PIIS0140-6736(13)61611-6
It is just the kind of stuff to generate catchy health news headlines.
The figure from the last post was quite slickly generate with a little Python pattern that I want to share. It is all based on my new Python knowledge of the “with” statement, and my new mainstay of pythonic data manipulation: pandas.
from contextlib import contextmanager @contextmanager def columns_in(df): col_names = df.columns col_list = [df[col] for col in col_names] try: yield tuple(col_list) finally: for i, col in enumerate(col_names): df[col] = col_list[i]
With “with”, the python code for the simulation is almost exactly the mathematical description of the simulation:
with columns_in(state) as (C,D,q,r,s): for t in range(T-1): C[t+1] = C[t] + q[t] - r[t] if C[t+1] < 0: C[t+1] = 0 D[t+1] = D[t] + r[t] - s[t] q[t+1] = s[t+1-7] if t % 7 == 6 else 0 # special case, first pickup, need to deliver something if t == 6: q[t+1] = 70. r[t+1] = 8. s[t+1] = D[t] if t % 7 == 6 else 0 # special case, forget to take the diapers out if t == 34: s[t+1] = 0
The impetus for my first personal, practical application of pure system dynamics modeling came from my sleep-deprived thoughts about Baby Diaper Service, which works as follows:
On your first and second deliveries you receive the full number of diapers you order. Thereafter, you will be on a rotation system. The number of diapers you turn in one week will be returned to you the next, up to your maximum order.
Simple? Sure, but complex enough to have two hallmarks of SDM: feedback and delay.
- Feedback: The number of diapers delivered depends on the number I turn in.
- Delay: The number of diapers I get this week is the number I turned in last week.
This led to a very different sort of science that the contemporaneously developing field of econometrics. This divide is captured in a dialog I enjoyed in The Electronic Oracle (if I recall correctly, I don’t have it nearby).
However, the futures that could be are just what I was concerned about in those sleepless early months. I kept worrying about a dirty diaper catastrophe, what if we forget to put dirty diapers out this week?
Needless to say, I was greatly relieved to have the results of this simulation in my back pocket. Thank you, System Dynamics Modeling!
Epilogue: eventually I did miss one week and failed to turn in diapers to the delivery service. I was all ready to tough it out for my reward. But it turns out that you just call up the service and get them to come by for a special pickup for a small fee. Thank you, Baby Diaper Service!
There is an area of management sciences thta I didn’t see much of in my days of ACO at CMU. It is yet another thing that I didn’t realize I’d be interested in when I was a student (like statistics). System dynamics modeling is its name.
I started to understand the importance of this research area when I was building my model of the Insecticide Treated mosquito Net distribution system a few years ago.
After we drew up a wonderful mess of boxes and arrows representing a compartmental model of nets flowing from manufacturers to distributors to households, I started thinking that this must have been done before. And indeed, in the early days of computer research, a bustling group centerd at the Sloan School at MIT did do it. I learned my history on this from an interesting book Feedback thought in social science and systems theory by George Richardson. The practical conventions, as far as I know them, I put together from a primer and a textbook, both of which are loaded with demographic and epidemiological examples. In my research, I’ve always focused on something a little different that the mainstream of system dynamics modeling, using the compartmental models to justify mechanistically one or another particular nonlinear regression.
It was in my sleep-deprived state of parenthood to a one-month-old that the Sloan-School brand of system dynamics modeling method really proved its utility for me.
I didn’t go to INFORMS, because I get lost at mega-conferences. Give me 200 people attending one track of talks, preferably with lots of coffee breaks. But I did talk to people who went. One exciting thing that I heard about is this: Pyomo, the Python Optimization Modeling Objects package. There was a talk that applied it to do some optimization of disease parameters for an infectious disease model, which is sort of like the business I’ve been getting in to lately. Fortunately, the slides from the talk are online, here.
Now I must see if I can run the examples.