tjbal | R Documentation |

Implements mean balancing and kernel balancing algorithms with time-series cross-sectional data.

```
tjbal(formula=NULL, data, Y, D, X = NULL, X.avg.time = NULL,
index, index, trim.npre = 0, Y.match.time = NULL, Y.match.npre = NULL,
demean = TRUE, estimator = "meanfirst", sigma=NULL,
print.baltable = TRUE, vce = "jackknife", conf.lvl = 0.95,
nsims = NULL, parallel = TRUE, cores = 4, seed = 1234)
```

`formula` |
an object of class "formula": a symbolic description of
the model to be fitted. The first variable on the right-hand-side is a dichotomous treatment indicator (D); the rest of the right-hand-side variables are time-invariant controls (X). If X are time-varying,
they will be averaged within each unit based on values specified by |

`data` |
a data frame (must be a balanced panel). |

`Y` |
outcome. |

`D` |
treatment. |

`X` |
covariates. If a covariate is time-varying, it will be averaged based on |

`X.avg.time` |
a list of time periods over which covariates are being averaged. Ignored if the treatment starts at different times. |

`index` |
a two-element string vector specifying the unit (group) and time indicators. Must be of length 2. |

`trim.npre` |
a numeric value indicating the smallest number of pre-treatment periods for a treated unit to be preserved. The default is 0. |

`Y.match.time` |
a set of pre-treatment time periods in which the outcome variable is being balanced on. |

`Y.match.npre` |
a numeric value indicating the number of pre-treatment outcome periods to be balanced on. If |

`demean` |
a logical flag indicating whether a demeaning procedure will be performed to take out the average of pre-treatment outcomes for each unit. |

`estimator` |
a string specifying the balancing approach: "mean" for mean-balancing, "kernel" for kernel-balancing, and "meanfirst" (default) for kernel balancing with mean balancing constraints. "meanfirst" will prioritize balancing on covariate means over higher-order terms and interactions. |

`sigma` |
a numeric value specifying the bandwidth of the kernel transformation (will be multiplied by the number of covariates to be balanced on). The default is 2. Ignored if |

`print.baltable` |
a logical flag that controls whether to print out the balance table after the algorithm is run. Ignored if treatment timing is different. |

`vce` |
a string specifying the variance estimator. |

`conf.lvl` |
a positive number in the range of 0 and 1 specifying confidence levels for uncertainty estimates. The default value is 0.95. |

`nsims` |
an integer specifying the number of bootstrap or jackknife runs. Ignored if |

`parallel` |
a logical flag indicating whether parallel computing will be used in bootstrap/jackknife simulations. . |

`cores` |
an integer indicating the number of cores to be used in parallel computing. If not specified, the algorithm will use the maximum number of logical cores of your computer (warning: this could prevent you from multi-tasking on your computer). |

`seed` |
an integer that sets the seed in random number generation. Ignored if |

`tjbal`

provides a general reweighting approach to causal inference with time-series cross-sectional (TSCS) data. It includes two estimators, mean balancing and kernel balancing. The former reweights control units such that the averages of the pre-treatment outcomes and covariates are approximately equal between the treatment and (reweighted) control groups. The latter relaxes the linearity assumption and seeks approximate balance on a kernel-based feature expansion of the pre-treatment outcomes and covariates. The resulting approach inherits the ability of synthetic control and latent factor models to tolerate time-varying confounders, but (1) improves feasibility and stability with reduced user discretion; (2) accommodates both short and long pre-treatment time periods with many or few treated units; and (3) balances on the high-order “trajectory" of pre-treatment outcomes rather than their period-wise average. We illustrate this method with simulations and two empirical examples.

`data.wide` |
a matrix storing data in wide form – each row represents one unit. |

`id.tr` |
a vector of row numbers for the treatment units. |

`id.co` |
a vector of row numbers for the control units. |

`Y.tr` |
data of the treated unit outcome. |

`Y.co` |
data of the control unit outcome. |

`Y.var` |
a vector of outcome variable names. |

`matchvar.list` |
a list of covariates to be balanced on for each subgroup. |

`Ttot` |
the set of all time periods. |

`N` |
the total number of units. |

`Ntr` |
the number of treated units. |

`Nco` |
the number of control units. |

`T0` |
a vector that stores the unique values of the timing of the treatment. |

`T0.all` |
a vector that stores the timing of the treatment for each unit. |

`T0.tr` |
a vector that stores the timing of the treatment for each treated unit. |

`weights.co` |
weights of the control unit; added up to 1. |

`Y.bar` |
average values of treated outcomes, counterfactual outcomes, and control outcomes over time. |

`att` |
average treatment effect on the treated over time (it is realigned and based on the timing of the treatment if it is different for each unit). |

`att.avg` |
average treatment effect on the treated (averaged both across unit and over time). |

`est.att` |
inference for |

`est.att.avg` |
inference for |

`ntreated` |
a vector of numbers of treated units for all subgroups. |

`sameT0` |
TRUE if the timing of the treatment is the same. |

`Ttot` |
the set of all time periods. |

`Tpre` |
the set of pre-treatment periods; same timing. |

`Tpst` |
the set of post-treatment periods; same timing. |

`bal.type` |
the type of balancing scheme being used: "mbal" for mean balancing and "kbal" for kernel balancing; same timing. |

`ndims` |
the number of dimensions being balanced; same timing. |

`b` |
tunning parameter for kbal; same timing. |

`kbal.out` |
output from kbal; same timing. |

`success` |
a logical flag indicating whether convergence is achieve with balancing. |

`bias.ratio` |
the ratio of L1 measure of distance after balancing over L1 measure of distance before balancing. A smaller number indicates more improvement brought by balancing. |

`bal.table` |
balance table; same timing. |

`att.sims` |
jackknife/bootstrap results for |

`att.avg.sims` |
jackknife/bootstrap results for |

`att.sub.att` |
jackknife results for |

`att.sub.att.avg` |
jackknife results for |

`sub.weights.co` |
a matrix of weights for the control units for all subgroups; different timing. |

`sub.Ytr.avg` |
a matrix of average outcomes for the treated units for all subgroups; different timing. |

`sub.Yct.avg` |
a matrix of average Y(0)'s for the treated units for all subgroups; different timing. |

`sub.att` |
a matrix of ATT for all subgroups; different timing. |

`sub.ntr` |
a matrix of numbers of treated units over time for all subgroups; different timing. |

`sub.att.adj` |
a matrix of realigned ATT for all subgroups; different timing. |

`group.stats` |
statistics for all subgroups, including T0, the number of treated units, sigma, convenience, and bias ratio; different timing. |

`bal.table.list` |
a list of the balance table for all subgroups; different timing. |

Chad Hazlett <chazlett@ucla.edu>, UCLA

Yiqing Xu (Maintainer) <yiqingxu@stanford.edu>, Stanford

Hazlett, Chad and Yiqing Xu, 2020. “Trajectory Balancing: A General Reweighting Approach to Causal Inference with Time-Series Cross-Sectional Data.” Working Paper, UCLA and UCSD.

`plot.tjbal`

and `print.tjbal`

```
library(tjbal)
data(tjbal)
out <- tjbal(roa ~ treat + so_portion + rev2007, data = npc,
index = c("gvkey","fyear"), estimator = "mean")
print(out)
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.