Skip to contents

Implements the covariate-feedback estimation step of Botosaru and Liu (2026): under the homogeneous-feedback assumption that $$f_t(X_{it} | I_i^{t-1}, \lambda_i) = f_t(X_{it} | I_i^{t-1})$$ (the covariate adjustment rule is the same across units conditional on observable history), the feedback process can be estimated separately from the structural outcome model. The likelihood factors into a structural piece (for Y | X, history) and a feedback piece (for X | history); this function fits the latter.

Usage

fit_feedback(Y, Y0, X, X0)

Arguments

Y

N x T outcome matrix (post-baseline).

Y0

Length-N baseline outcome.

X

N x T x 1 covariate array. (Multi-covariate feedback is a future extension; pass a single covariate for now.)

X0

Length-N baseline covariate value, used as the lag at t = 1.

Value

A list of class "tvhte_feedback" with:

coef

Named numeric: intercept, gamma_Y, gamma_X.

sigma_eta

Residual SD of the feedback equation.

fit

The underlying lm object.

Details

Phase 5 scope: a single covariate (K = 1), linear AR(1) feedback with one lag of Y and one lag of X: $$X_{it} = \gamma_0 + \gamma_Y Y_{i,t-1} + \gamma_X X_{i,t-1} + \eta_{it}.$$ Fit by pooled OLS across unit-time observations with t >= 2.

References

Botosaru, Irene and Laura Liu (2026). "Event Studies with Feedback." AEA Papers and Proceedings 116: 70-74.

Examples

# Simulate from a model with covariate feedback, then estimate it back.
sim <- simulate_tvhte(N = 300, T = 6, t0 = 3, J = 2,
                      beta = 0.4,
                      feedback_gamma = c(0.2, 0.3, 0.5, 0.4),
                      seed = 51)
fb <- fit_feedback(sim$Y, sim$Y0, sim$X, sim$X0)
print(fb)
#> Homogeneous covariate-feedback process (Botosaru-Liu 2026)
#>   X_it = 0.2049 + 0.3001 * Y_{i,t-1} + 0.4807 * X_{i,t-1} + eta_it
#>   sigma_eta = 0.3965
fb$coef
#> intercept   gamma_Y   gamma_X 
#> 0.2048683 0.3000519 0.4807463