Can anyone point me towards a good explanation of when a residualized variable in a regression will give you the same answer as using a non-residualized variable with controls? For instance, say I want to know the effect of a variable $x$ on $y$ and need to control for $a$ and $b$. In a classic linear model framework I can either add $a$ and $b$ as covariates (i.e., control variables) to the model of $y$ on $x$, or I can first regress $x$ on $a$ and $b$, and then use the residuals from this regression (the residualized $x$) to predict $y$. Both will give the same coefficient for $x$. This works in the linear model case, but does a residualized $x$ give the same coefficient as $x$ with controls for other types of models, e.g., logit models or Poisson models? My own simple simulations suggest they do not (see R code below), but I am trying to understand why, and if residualization can ever be used in place of adding controls outside of the linear model framework. Can anyone point me towards a good explanation? #generate the data n=10000 set.seed(3345) a=rnorm(n); b=rnorm(n) x = .4*a + .4*b*b + rnorm(n) y = .5*x + .3*a + .3*b*b + rnorm(n) ## LINEAR MODEL #### #a model with controls gets the right coefficient summary(lm(y ~ x + a + I(b^2))) residmod=lm(x ~ a + I(b^2)) x.resid=resid(residmod) #using a residualized variable gets the same coefficient summary(lm(y ~ x.resid)) ## LOGIT MODEL #### y=.5*x + .3*a + .3*b*b + rlogis(n) ydichot=ifelse(y >0, 1, 0) #a model with controls gets the right coefficient summary(glm(ydichot ~ x + a + I(b^2), family=binomial)) #using a residualized variable does NOT get the same coefficient summary(glm(ydichot ~ x.resid, family=binomial)) ## POISSON MODEL #### mu=exp(.5*x + .3*a + .3*b*b) ycount=rpois(n, mu) summary(glm(ycount ~ x + a + I(b^2), family=poisson)) #using a residualized variable does NOT get the same coefficient summary(glm(ycount ~ x.resid, family=poisson))