A recent paper came out in The Lancet about alcohol consumption claiming that overall considering all causes, there’s no “safe” level of consumption. Of course that made a big splash in the news. It happened that Andrew Gelman also posted another study about alcohol and when I mentioned some serious concerns about this Lancet paper, the study author actually responded on Gelman’s blog.

I followed up with some specific concerns, but the main issue is that if you want to get causal inference you must either have randomized assignment to ensure on average zero probabilistic dependence on important unaccounted for effects, or have a *causal model* that mimics the real mechanism at least approximately and is believable. Of course the mechanism of death from diseases is … life and all its complexities. In particular the time-dependency aspects.

To illustrate how this time dependency is important I created a qualitative differential equation model that is intended to simulate some kind of simple risk model through time. The basics are this:

1 unit of people are born at time t=0, as time goes on (1 unit of time is about 20 years) they slowly die of various causes. There are 3 causes we track through to 6 units of time:

1. “Heart disease” which we assume begins to affect people around 2.5 units of time, and is reduced by 25% for each dose of alcohol, assumed valid only for small doses, such as less than 2.
2. “Cancer” which we assume begins to affect people later, around 3 units of time, and is completely unaffected by alcohol (just for illustration purposes).
3. “Other causes” which ramps up somewhat slowly between about 3 and 5 units of time but ensures that very few people really make it past 5 units or so (~100 yrs). Other causes are unaffected by alcohol.

Code is below, but first, the graph which shows overall survival, cumulative heart disease deaths, and cumulative cancer deaths through time for two groups: Red = no alcohol, and Blue = 1 dose of alcohol daily

Qualitative model of Alcohol risk and deaths

Notice that by construction the people who take 1 dose of alcohol have lower instantaneous heart disease risk, and the same cancer and other cause risk. This means they live longer (blue survival curve on top is above red). But if you look at the individual causes, you see a reduced heart disease risk, but in cancer you see there are MORE deaths? By construction, alcohol doesn’t change your cancer risk in this model… So why do more alcohol drinkers die of cancer? The answer is that they live longer on average because they don’t die of heart disease as much… So eventually they die of cancer, or “other causes”.

At the very minimum you need to reproduce this kind of thing in your model, or you have no hope of teasing out how things work.

Now for the code:

```kill(all);
reset();

invlogit(t) := 1.0/(1.0+exp(-t));

rH(t,D) := invlogit((t-2.5)/.5)*.2*(1.0-D/4.0);
rC(t,D) := invlogit((t-3.0)/.5)*.1;
rO(t,D) := .02+invlogit((t-5.0)/0.2)*10.0;

dHdt: A*rH(t,D);
dCdt: A*rC(t,D);
dOdt: A*rO(t,D);

draw(terminal='png,file_name="AlcoholRisks",dimensions=[400,800],
gr2d(title="Survival Overall (D=1 blue, D=0 red)",points_joined=true,
points(map(lambda([x], x[1]),solnD1),map(lambda([x],x[2]),solnD1)),
color="red",
points(map(lambda([x], x[1]),solnD0),map(lambda([x],x[2]),solnD0))),
gr2d(title="Death by Heart Disease (D=1 blue, D=0 red)",
points_joined=true,
points(map(lambda([x], x[1]),solnD1),map(lambda([x],x[3]),solnD1)),
color="red",
points(map(lambda([x], x[1]),solnD0),map(lambda([x],x[3]),solnD0))),
gr2d(title="Death by Cancer (D=1 blue, D=0 red)",
points_joined=true,
points(map(lambda([x], x[1]),solnD1),map(lambda([x],x[4]),solnD1)),
color="red",
points(map(lambda([x], x[1]),solnD0),map(lambda([x],x[4]),solnD0))));

```

4 Responses leave one →
October 26, 2018

Daniel, I think your point here is a very good one, and is part of what troubles me about this kind of work. For simulation purposes, though, how well would “age adjusting” an epi (linear) model account for this effect? I will be even more disturbed if I find out some kind of age adjustment isn’t standard here…

• October 31, 2018

I’m not sure how well age adjustment would work. Ideally what you need is some age adjustment that takes into account alterations on earlier mortality caused by the consumption pattern. That seems unlikely to be the kind of thing that’s done. I think more likely a linear model is used.

Basically, age is treated as if it’s a pre-treatment predictor variable, but age itself is a post-treatment outcome variable: you live longer/shorter due to the consumption. What’s needed to do a good job is a causal model through time.