When place secretly drives both \(x\) and \(y\), MGWR maps the confounder, not the effect
An unobserved attribute of place shifts the outcome and the covariate levels.
MGWR’s local slopes then absorb that contamination.
What looks like genuine spatial heterogeneity is omitted-variable bias wearing a map. Can we get the real coefficients back?
One dataset, six estimators, and a coefficient surface that flips sign
True coefficient surfaces (\(\beta_1\) dome, \(\beta_2\) gradient, \(\beta_3\) constant) versus the exponential confounder \(\alpha_i\) — which dominates the cross-section by 50× the slope range.
Where we’re going
The lab: a 225-unit, 3-period panel where place drives every covariate
Why the naive pooled fit gets the most-biased slope backwards
MGWFER’s one move — the within-transformation — and why it works
Stage 2: recovering the confounder itself as a per-unit quantity
The Investigation
Act II
The lab: 225 spatial units × 3 periods, with place wired into every covariate
Outcome — \(y_{it}\) built from three causally-active slopes plus a fixed effect
Confounder — \(sc_i\) (the spatial context), exponential, range \(2\) to \(52\)
Covariates — each one coupled to place: \(x_{k}=0.05\,sc_i+\nu_k\)
We simulate the paper’s DGP (Eqs. 39–45) verbatim on a 15×15 grid. The coupling makes the indirect channel \(sc\to x_k\) active — that is the whole point.
Couple every covariate to place and \(x_4\) correlates 0.84 with \(y\) — with zero causal effect
Quantity
Value
Meaning
\(\mathrm{Cor}(x_k, sc)\)
0.84
every covariate tracks place
\(\mathrm{Cor}(x_4, y)\)
0.84
spurious — \(\beta_4\equiv 0\)
A regression that does not condition on \(sc\) will read this 0.84 as a real effect. That is the bias mechanism, made concrete.
Wooldridge in one line: OLS recovers \(\beta_k+\delta_k\), not \(\beta_k\)
\[\Rightarrow\quad y = (\beta_0+\delta_0) + \textstyle\sum_k x_k(\beta_k+\delta_k) + (\varepsilon+\eta)\]
Hide \(sc\) in the error and project it on the covariates: the bias on each slope is exactly \(\delta_k\), the indirect contextual effect.
Six estimators, escalating discipline — only one removes the confounder
OLS / pooled OLS — global, no fix; the bias is on full display
Individual FE — global, within-transform; clean but no surface
MGWR (cross-section) / PMGWR — local surfaces, still contaminated
MGWFER — local surfaces and clean identification
Only MGWFER inherits the FE estimator’s identification while delivering a location-specific coefficient surface.
Globally, OLS overstates every slope ~4× and “detects” a null effect at \(p<10^{-13}\)
Coefficient
TRUE
Pooled OLS
Individual FE
\(\beta_1\)
1.50
6.14***
1.57***
\(\beta_3\)
1.50
5.79***
1.55***
\(\beta_4\)
0.00
4.16***
0.02 n.s.
OLS has nowhere to put \(sc\) except into the slopes — Wooldridge’s \(\hat\beta_k=\beta_k+\delta_k\). The within-transform neutralises it.
PMGWR’s local fit looks great (\(R^2=0.99\)) but \(\hat\beta_1\) is anti-correlated with truth
True vs PMGWR slopes: \(\beta_1\) scatters away from the 45° line and is anti-correlated (\(\mathrm{Cor}=-0.46\)); \(\beta_2,\beta_3\) sit well above identity.
MGWFER’s one move: subtract each unit’s mean, and the confounder vanishes exactly