Metter. / Mixtapes / Methods Mixtape / Measurement Validity & Scale Construction

03 · Measurement Validity & Scale Construction

GLS / Standardized Mean Effect Index

The GLS index — also called the standardised mean effect or stacked regression index — combines treatment effects on multiple standardised outcomes into a single weighted average effect, accounting for within-respondent correlation across outcomes.


What it is

The GLS (generalised least squares) index, introduced in Kling, Liebman and Katz (2007) and sometimes called the standardised mean effect (SME), summarises a treatment’s effect across a family of related outcomes by averaging the standardised treatment effects. Unlike the Anderson ICW index, which constructs a single score variable per respondent, the GLS approach directly averages the per-outcome treatment effects — making it a summary of causal estimates rather than a summary of outcomes.

The two approaches are closely related but differ in emphasis. The Anderson index focuses on constructing an outcome variable and running one regression. The GLS approach runs a stacked regression in which all outcomes are stacked into a long dataset, a single treatment coefficient is estimated under the constraint that it is equal across outcomes, and standard errors account for within-respondent correlation across outcomes (since the same respondent contributes observations for each outcome).

When to use it

The GLS index is appropriate in the same settings as the Anderson index — when a programme evaluation has multiple related outcomes that are all expected to move in the same direction, and when a single summary effect is preferred over multiple individual tests. It is particularly useful when the individual outcomes have different scales that make a simple average of unstandardised effects uninterpretable.

The GLS approach is popular in the education evaluation literature where multiple test score subtests (reading, maths, social studies) are combined into a single learning effect, and in the women’s empowerment literature where multiple dimensions of agency are combined into a summary empowerment effect. Kling et al. (2007) use it in Moving to Opportunity; Duflo, Dupas and Kremer (2011) use a related approach in a Kenyan education evaluation.

The GLS index is less appropriate when outcomes move in different directions, when the goal is precise individual-outcome estimates, or when outcomes are not on the same conceptual dimension.

How it works

Step 1 — Standardise outcomes. Each outcome is standardised to mean 0 and standard deviation 1, using control group mean and standard deviation (as in the Anderson index).

Step 2 — Sign-align. Reverse the sign of outcomes coded in the negative direction so that higher values uniformly indicate better outcomes.

Step 3 — Stack the data. Create a long-format dataset in which each respondent contributes one row per outcome. Add indicator variables for each outcome (to allow outcome-specific intercepts) and interact the treatment indicator with an overall treatment effect.

Step 4 — Estimate the stacked regression. Run an OLS regression with the standardised outcome as the dependent variable, outcome fixed effects, and the treatment indicator. Cluster standard errors at the respondent level to account for within-respondent correlation across outcomes. The coefficient on treatment is the GLS/SME estimate — the average standardised treatment effect across all outcomes in the family.

The result is a single number interpretable as “the average treatment effect expressed in standard deviations, averaged across all outcomes in the family.” It is on the same scale as Cohen’s d and can be compared across families and across studies.

Key decisions

Weighting. The basic stacked regression gives equal weight to each outcome. GLS weighting — using the inverse of the variance-covariance matrix of the residuals — gives higher weight to more precisely estimated outcomes. Equal weighting is simpler and more transparent; GLS weighting is efficient but depends on estimated residual correlations that may be noisy in small samples. For most field evaluations, equal-weight stacking is the default.

Outcome fixed effects. Including outcome fixed effects (one indicator per outcome in the stacked regression) allows each outcome to have its own mean, removing the level differences across outcomes. Without outcome fixed effects, the regression would conflate variation in outcome levels with treatment effects. Outcome fixed effects are always included in the stacked regression.

Clustering. Standard errors must be clustered at the respondent level to account for the correlation of residuals within respondents across outcomes. If the original design has a higher-level cluster (village, school), cluster at that level as well. In Stata, this requires vce(cluster id_variable).

Relationship to Anderson index. When outcomes are all standardised and equal-weighted, the GLS index treatment coefficient is approximately equal to the treatment effect on an equal-weight sum of standardised outcomes, which is similar (but not identical) to the Anderson ICW index. The two approaches should give similar results when the inverse-covariance weights are close to equal. Reporting both is useful for robustness.

Caveats & common mistakes

Constraint equality assumption. The stacked regression imposes the constraint that the treatment effect is equal across all outcomes in the family. This is an efficiency assumption, not a testable hypothesis (in the sense that the individual effects are estimated on the same data). Testing whether individual effects are statistically different from the pooled effect — by interacting treatment with outcome indicators — reveals whether the constraint is reasonable.

Interpretation as an average, not a latent construct. The GLS index does not estimate a treatment effect on a latent underlying construct. It is a simple average of standardised effects. If some outcomes are good proxies for the underlying construct and others are poor proxies, the average is distorted by the noise in the poor proxies. The Anderson index’s ICW weighting attempts to address this; the GLS equal-weight approach does not.

Pre-specification. As with the Anderson index, the value of the GLS index as a multiple-testing correction depends on the outcome family being pre-specified. Including outcomes based on their signs in the data and post-hoc constructing an index that is positive and significant is misleading.

Analysis Guide

# outcome_1 to outcome_5: related outcomes
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf

outcome_cols = [f"outcome_{i}" for i in range(1, 6)]

# 1. Standardise each outcome to control-group mean and SD — puts all outcomes on a common SD scale so that treatment effects can be meaningfully averaged across outcomes with different original units
control = df.loc[df["treatment"] == 0, outcome_cols]
df_std = (df[outcome_cols] - control.mean()) / control.std()

# 2. Sign-align — flip outcomes where higher = worse so that a positive treatment coefficient uniformly indicates a beneficial effect across all outcomes in the family
df_std["outcome_3"] = -df_std["outcome_3"]

# 3. Reshape to long format — stacking creates one row per respondent-outcome combination, the data structure required to estimate a single pooled treatment coefficient across outcomes in one regression
df_std = df_std.assign(id=df["id"], treatment=df["treatment"])
df_long = df_std.melt(id_vars=["id", "treatment"], value_vars=outcome_cols,
                    var_name="outcome_num", value_name="std_outcome")

# 4. Stacked regression with outcome fixed effects and cluster-robust SEs — outcome fixed effects absorb level differences across outcomes; clustering at the respondent level corrects for the within-respondent correlation introduced by stacking (same person contributes one row per outcome)
fit = smf.ols("std_outcome ~ treatment + C(outcome_num)", data=df_long).fit(
  cov_type="cluster", cov_kwds={"groups": df_long["id"]})
print(fit.summary())

# 5. The treatment coefficient is the GLS/SME estimate — the average standardised treatment effect across all outcomes in the family, in SD units, on a single degree of freedom

Reading the output

  • The coefficient on treatment is the GLS/SME estimate — the average standardised treatment effect across all outcomes in the family, expressed in standard deviation units. A value of 0.10 means the programme shifted the average standardised outcome by 0.10 SD.
  • Outcome fixed effects (C(outcome_num) / | outcome_num) absorb level differences across outcomes; without them the estimate would conflate outcome levels with treatment effects.
  • Clustering at the individual level (cov_type="cluster" / | id in felm) is required because the same respondent contributes one observation per outcome; failure to cluster produces incorrect standard errors.
  • To test whether the treatment effect is homogeneous across outcomes, add an interaction (treatment * C(outcome_num)) and inspect whether individual outcome coefficients differ substantially from the pooled estimate.

References

Duflo, E., Dupas, P., & Kremer, M. (2011). Peer effects, teacher incentives, and the impact of tracking: Evidence from a randomized evaluation in Kenya. American Economic Review, 101(5), 1739–1774. https://doi.org/10.1257/aer.101.5.1739

Kling, J. R., Liebman, J. B., & Katz, L. F. (2007). Experimental analysis of neighborhood effects. Econometrica, 75(1), 83–119. https://doi.org/10.1111/j.1468-0262.2007.00733.x

O’Brien, P. C. (1984). Procedures for comparing samples with multiple endpoints. Biometrics, 40(4), 1079–1087. https://doi.org/10.2307/2531158

Last updated: 5 June 2026