*! version 2.0.1 27jul2013

Title

vam -- Computes teacher value-added (VA) measures

Syntax

vam
depvar, teacher(varname) year(varname) class(varname)
[options]

options

Main
teacher(varname) teacher identifier

year(varname) year identifier

class(varname) class identifier

Model
by(varlist) perform VA estimation separately for each by-group

controls(varlist) residualize depvar on a control vector

absorb(varname) residualize depvar on absorbed fixed effects

tfx_resid(varname) absorb fixed effects during depvar residualization, but include those fixed effects in the residual

Output
output(filename) specifies file to save VA estimates (.dta), variance estimates (.csv), and log (.smcl)

data(vam##data_suboptions:data_suboptions) specifies the dataset loaded at termination; default is to restore initial dataset

Advanced
quasiexperiment generate leave-2-year-out and leave-5-year-out VA estimates

driftlimit(#) estimate only # autocovariances; set all further autocovariances equal to the last estimate

Description

vam uses student-level outcomes (typically test scores) to compute teacher value-added (VA) measures.
The estimation procedure accounts for drift in teacher VA over time.

vam must be run on a dataset of student-level scores, with one row per student-year(-byvars),
and identifiers for teacher, classroom and year.

For each teacher, vam estimates the best linear prediction of value-added in each observed year,
based on the scores of students taught by that teacher in other years (prior and future). Each teacher's VA
is not assumed to be fixed over time; drift is accounted for by permitting the coefficients on score data to
vary non-parametrically according to the distance between each observed score and the forecast year.

The computed VA estimates are stored in a variable named tv.

Options

Main

teacher(varname) specifies the variable that contains teacher identifiers.

year(varname) specifies the variable that contains year identifiers. In theory, a different
unit of time could be used (e.g. semesters), so long as the variable remains an integer.

class(varname) specifies the variable that contains class identifiers. A classroom is defined as a
teacher-year(-byvars)-class cell. Observations with the same class identifier but different teachers, years
or by-variables are considered to be different classrooms.

Model

by(varlist) causes the VA estimation to be performed separately for each by-group. For
example, one may wish to compute VA separately by(subject). All steps of the VA estimation are performed separately for each
by-group; the output is equivalent to running vam separately on each group and then appending the results
together.

controls(varlist) residualizes the depvar on a set of controls (e.g. lagged scores)
before it is used to estimate teacher VA. The VA estimates will therefore represent the effect of
teachers' on the component of the depvar that is orthogonal to the controls.

absorb(varlist) residualizes the depvar on fixed effects for an absorbed categorical
variable. This option cannot be combined with tfx_resid().

tfx_resid(varlist) residualizes the depvar on fixed effects for an absorbed
categorical variable, then adds the estimated fixed effects back to the residuals. This option
was designed with teacher fixed effects in mind. By including teacher fixed effects in this way,
the coefficients on the other controls are estimated purely from within-teacher variation. This
option cannot be combined with absorb().

Output

output(filename) saves three files: a dataset of VA estimates (filename.dta), a table
of variance/covariance estimates (filename_variance.csv), and a log (filename_log.smcl).

data(vam##data_suboptions:data_suboptions) specifies a dataset to be loaded at termination:

data_suboptions dataset loaded at termination

preserve initial dataset (default setting)

tv VA estimates

variance variance/covariance estimates

merge tv initial dataset, with VA estimates merged on

merge score_r initial dataset, with score residuals merged on

merge tv score_r initial dataset, with both VA estimates & score residuals merged on

Advanced

quasiexperiment generates three additional leave-out VA measures, which are used for
quasi-experimental tests in the paper cited below. The default tv variable contains standard
leave-year-out (jackknife) VA estimates.
This option adds:

tv_2yr_l, which leaves out the forecast year and the prior year

tv_2yr_f, which leaves out the forecast year and the following year

tv_ss, which leaves out the forecast year, two prior years, and two following years

driftlimit(#) instructs the program to estimate the autocovariance between year-mean scores only up to # years
apart; the autocovariance for observations that are further apart is set equal to the estimate for observations that are #
years apart. driftlimit() is useful if the autocovariance vector converges to a steady state, but sample attrition
causes the autocovariance for distant years to be estimated imprecisely. Additionally, driftlimit() is necessary for
out-of-sample predictions where one attempts to predict VA in years that are further apart than any scores observed in the data.

Author

Michael Stepner

stepner@mit.edu

Acknowledgements

This program was written and tested under the guidance of John Friedman and Raj Chetty.
It implements the VA estimation methods described in Appendix A of their paper, cited below.

Additionally, frequent reference was made to an earlier VA estimation program, written by Jessica Laird and Heather Sarsons.

References

Chetty, Raj, John N. Friedman, and Jonah E. Rockoff. 2013.
Measuring the Impacts of Teacher I: Evaluating Bias in Teacher Value-Added Estimates. Harvard University Working Paper.