Adjusting for confounding with a negative control outcome

When studying the effect of an exposure $$T$$ on an outcome $$Y$$, we can control for measured confounders $$X$$, but the treatment effect can still be biased by residual confounding due to unmeasured confounders $$U$$. One approach for detecting this kind of bias is to use a negative control outcome $$N$$ (e.g. here), which is not caused by $$T$$ but shares the same confounder $$U$$. If, after adjusting for confounders $$X$$ using a regression model (for example), there a non-zero effect of $$T$$ on $$N$$, then we know there is residual confounding.

This approach can detect confounding, but not necessarily estimate the magnitude of confounding bias, as explained in eAppendix 3 of this paper. The issue is that the effect of $$U$$ on $$N$$ is not necessarily equal to the effect of $$U$$ on $$Y$$.

However, if one views $$N$$ as a surrogate for unmeasured confounding, then why can we not simply add it as a covariate in our original regression model? That is, why can we not adjust our estimates of the effect of $$T$$ on $$Y$$ by adding $$N$$ to our measured confounders $$X$$?

I usually avoid adjusting for any post-treatment variable as it could lead to collider bias, but by assumption, $$Y$$ is not associated with $$N$$, so this is not an issue. That said, there could be M-bias. Is that the reason why this should be avoided?

• Off-hand, I'd say that as $N$ isn't related to $T,$ it shouldn't (theoretically) change your regression coefficients much, if at all. Dec 15, 2022 at 19:32
• @AdrianKeister $N$ shares a common cause ($U$) with $T$, so even though it is not causally related, it can be strongly correlated because of the strength of the unmeasured confounder. Dec 15, 2022 at 19:35
• But it won't shut off the backdoor path; you can always try simulating this experience with some known example. Dec 15, 2022 at 19:37

That's an interesting thought, but naively, conditioning on $$N$$ doesn't closes the backdoor path $$T \leftarrow U \rightarrow Y$$. See the orange path in this DAG:

It can be shown using a fairly simple simulation based on this DAG:

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf

def generate_data(seed, M=10000):
rng = np.random.default_rng(seed)

x = rng.normal(size=M)
u = rng.normal(size=M)

t_logit = 1 + 0.5*x + 1*u + rng.normal(size=M)
t_propensity = 1 / (1 + np.exp(-t_logit))
t = rng.binomial(1, t_propensity)

y = 1 + 2*t + 0.5*x + 1*u + rng.normal(size=M)

n = 1 + 0.5*x + 1*u + rng.normal(size=M) # not affected by t

data = pd.DataFrame({
"x": x, "u": u, "t": t,
"y": y, "n": n,
})
return data


Which running a 100 times:

res = []
for i in range(100):
data = generate_data(i)

correct = smf.ols("y ~ 1 + t + x + u", data=data).fit().params['t']
misspecified = smf.ols("y ~ 1 + t + x", data=data).fit().params['t']
nc_adjusted = smf.ols("y ~ 1 + t + x + n", data=data).fit().params['t']


However, if you play around with the correlation between $$U$$ and $$N$$ you are correct to assume that the stronger the correlation is the smaller the bias is (even bounded by the model with $$U$$ to the model without $$U$$) because $$N$$ becomes $$U$$ from information perspective:
• This is very helpful, @ehudk. Can you think of the potential risks of this approach? Adjusting for $U$ cannot lead to collider bias, because it is not downstream from $T$, but is there some other type of bias I would risk introducing by adjusting for $N$? Jan 9, 2023 at 2:49
• You have to be very certain $N$ is not affected by $T$ because otherwise you might introduce post-treatment adjustment bias. However, my main concern with this approach (personally) is temporality issues. (Negative) outcomes occur during follow-up and are not available during baseline. This may hinder generalizability or usability of conclusions (think of a physician needing to enter patient's details into some risk calculator during meeting, they won't have access to future events [outcomes]) Jan 14, 2023 at 13:02