Skip to contents

Athey et al. treat causal panel estimation as a matrix completion problem: the untreated potential outcomes form one matrix L, of which the control cells are observed and the treated cells are missing. Estimating the treatment effect is then filling in the holes. Their estimator regularises with the nuclear norm, the convex relaxation of rank: min_L (1/|O|) sum_{(i,t) in O} (Y_it - L_it)^2 + lam ||L||_* with O the set of untreated cells.

Usage

Mscmcl(y, D, lam, max_iter = 500, tol = 1e-10)

Arguments

y

Observed outcome panel, units by periods.

D

Treatment indicator, 1 where the cell is treated.

lam

Nuclear-norm penalty, in the units of a singular value.

max_iter

Iteration cap.

tol

Frobenius convergence tolerance on successive iterates.

Value

List with estimate (ATT), att, L, tau, n_treated, n_observed, rank, nuclear, iterations, converged, N, T.

Details

The solution is reached by the soft-impute iteration: fill the missing cells with the current estimate, take the SVD of the completed matrix, and soft-threshold its singular values, \(L <- U diag(max(s - lam, 0)) V'\), until the Frobenius change falls below tol. Singular value THRESHOLDING, not truncation, is what makes this the exact proximal step of the nuclear norm; truncating to a fixed rank would solve a different, non-convex problem.

lam = 0 is a DEGENERATE limit, not the unregularised ideal. With no shrinkage the SVD step reconstructs its input exactly, so the iteration reaches L = P_O(Y) – observed cells reproduced, missing cells left at their zero start – after two passes and stops. The reported ATT is then simply the raw mean of Y over the treated cells, with no counterfactual imputed at all. It is retained as a sharp check that the projection step does what it claims, but it must not be read as an estimate. Any real use wants lam on the order of the panel's singular values.

The iteration is fully deterministic – zero start, fixed schedule, fixed tolerance – so both language arms land on the same numbers. The SVD's sign convention cannot separate them either: \(U diag(s) V'\) is invariant to flipping the sign of a matched column pair.

References

Athey, Bayati, Doudchenko, Imbens and Khosravi (2021), JASA 116(536), 1716-1730, doi:10.1080/01621459.2021.1891924 , verified against Crossref (NBER working paper w25132). The article was not in the local corpus; the objective and the soft-impute step above are its standard published form, stated in full.

Examples

set.seed(6)
L <- outer(rnorm(10), rnorm(8))                # rank-one untreated outcomes
D <- matrix(0, 10, 8); D[1:3, 6:8] <- 1
y <- L + 2 * D + matrix(rnorm(80, sd = 0.1), 10, 8)
Mscmcl(y, D, lam = 0.5)$att    # close to 2
#> [1] 2.012228