OpenSDP Analysis / Human Capital Analysis: Development / Observe Growth in Teacher Effects for Early Career Teachers
Observe how teachers’ effectiveness estimates change as they gain teaching experience.
sid
school_year
tid_math
cid_math
grade_level
t_is_teacher
t_experience
std_scaled_score_math
std_scaled_score_math_tm1
std_scaled_score_ela_tm1
Choose the subject (math or ela) and school level (elem or middle) for the analysis. Note: To change from math to ELA, switch the subjects in the next two lines. To make multiple charts at the same time, put loops for subject and level around the analysis and graphing code. To include all grade levels in the analysis, comment out the local level command below.
local subject math
local alt_subject ela
*local level middle
use "${analysis}\Student_Teacher_Year_Analysis.dta", clear
isid sid school_year
Keep years for which teacher effects value added estimates are available. Keep only records for which teachers have pooled teacher effects estimates (pooled estimates use information from all available years for each teacher). If school level restriction is chosen, keep only records from either elementary or middle schools.
keep if school_year >= 2008 & school_year <= 2011
keep if grade_level >= 5 & grade_level <= 8
keep if t_is_teacher == 1
keep if !missing(t_experience)
keep if !missing(cid_`subject')
keep if !missing(std_scaled_score_`subject', std_scaled_score_`subject'_tm1)
if "`level'" == "elem" {
keep if grade_level == 5
}
if "`level'" == "middle" {
keep if grade_level >= 6 & grade_level <= 8
}
tab school_year
unique tid_`subject'
unique tid_`subject' school_year
tab t_experience t_novice, mi
bysort tid_`subject' school_year: gen tag = (_n == 1)
tab t_experience if tag == 1, mi
drop tag
Create dummy variables for each year of teaching experience, putting all teachers with 10 or more years of experience in one group.
replace t_experience = 10 if t_experience >= 10
tab t_experience, gen(exp)
Create variable for grade-by-year fixed effects.
egen grade_by_year = group(grade_level school_year)
Create variables for previous year’s score squared and cubed.
gen std_scaled_score_`subject'_tm1_sq = std_scaled_score_`subject'_tm1^2
gen std_scaled_score_`subject'_tm1_cu = std_scaled_score_`subject'_tm1^3
Create indicator for whether student is missing prior achievement for alternate subject. Make a replacement variable that imputes score to zero if missing.
gen miss_std_scaled_score_`alt_subject'_tm1 = ///
missing(std_scaled_score_`alt_subject'_tm1)
gen _IMPstd_scaled_score_`alt_subject'_tm1 = std_scaled_score_`alt_subject'_tm1
replace _IMPstd_scaled_score_`alt_subject'_tm1 = 0 ///
if miss_std_scaled_score_`alt_subject'_tm1 == 1
Identify prior achievement variables to use as controls.
#delimit ;
local prior_achievement
"std_scaled_score_`subject'_tm1
std_scaled_score_`subject'_tm1_sq
std_scaled_score_`subject'_tm1_cu
_IMPstd_scaled_score_`alt_subject'_tm1
miss_std_scaled_score_`alt_subject'_tm1";
#delimit cr
Identify other student variables to use as controls.
#delimit;
local student_controls
"s_male
s_black
s_asian
s_latino
s_naam
s_mult
s_racemiss
s_reducedlunch
s_freelunch
s_lunch_miss
s_retained
s_retained_miss
s_gifted
s_gifted_miss
s_iep
s_iep_miss
s_ell
s_ell_miss
s_absence_high
s_absence_miss";
#delimit cr
Review all variables to be included in the teacher effectiveness model. Class and cohort (grade/ school/year) variables should include means of all student variables, and means, standard deviations, and percent missing for prior-year test scores for both main and alternate subject. Class and cohort size should also be included as controls.
codebook std_scaled_score_`subject' exp1-exp10
codebook `prior_achievement'
codebook `student_controls'
codebook _CL*`subject'*
codebook _CO*
codebook grade_by_year cid_`subject'
Estimate growth in teacher effectiveness relative to novice teachers, using within-teacher fixed effects. Class and cohort (grade/ school/year) variables should include means of all student variables, and means, standard deviations, and percent missing for prior-year test scores for both main and alternate subject. Class and cohort size should also be included as controls.
areg std_scaled_score_`subject' exp2-exp10 `prior_achievement' `student_controls' ///
_CL*`subject'* _CO* i.grade_by_year, absorb(tid_`subject') cluster(cid_`subject')
forval year = 2/10 {
gen coef_exp`year' = _b[exp`year']
gen se_exp`year' = _se[exp`year']
}
Set values to zero for novice comparison teachers.
gen coef_exp1 = 0 if exp1 == 1
gen se_exp1 = 0 if exp1 == 1
egen teacher_years = nvals(tid_`subject' school_year) if e(sample)
summ teacher_years
local teacher_years = string(r(mean), "%9.0fc")
egen unique_teachers = nvals(tid_`subject') if e(sample)
summ unique_teachers
local unique_teachers = string(r(mean), "%9.0fc")
collapse (max) coef_exp* se_exp*
gen results = 1
reshape long coef_exp se_exp, i(results) j(year_teaching)
rename coef_exp coef
rename se_exp se
Generate confidence intervals of the estimated returns to experience.
conf_hi = coef + (se * 1.96)
gen conf_low = coef - (se * 1.96)
replace coef = round(coef,.01)
Define subject and school level titles for graph.
if "`subject'" == "math" {
local subj_foot "math"
local subj_title "Math"
}
if "`subject'" == "ela" {
local subj_foot "English/Language Arts"
local subj_title "ELA"
}
local gradespan "5th through 8th"
if "`level'" == "middle" {
local subj_title "Middle School `subj_title'"
local gradespan "6th through 8th"
}
if "`level'" == "elem" {
local subj_title "Elementary School `subj_title'"
local gradespan "5th"
}
#delimit ;
twoway rarea conf_hi conf_low year_teaching if year_teaching <= 10,
sort
color(ltblue) ||
scatter coef year_teaching,
mlab(coef) mlabposition(12) mcolor(dknavy) mlabcolor(dknavy)
yline(0, lcolor(gs7) lpattern(dash))
yscale(range(-.05(.05).3))
ylabel(0(.1).4, labsize(medsmall) nogrid)
ytick(0(.1).4) ||,
graphregion(color(white) fcolor(white) lcolor(white))
plotregion(color(white) fcolor(white) lcolor(white))
title("Growth in `subj_title' Teacher Effects", span)
subtitle("Compared to First Year of Teaching", span)
ytitle("Difference in Teacher Effects", size(medsmall))
legend(order(2 1 3)
label(2 "Teacher Effect")
label(1 "95% Confidence Interval"))
legend(cols(2) symxsize(5) ring(1) region(lstyle(none) lcolor(none) color(none)))
xtitle("Year Teaching")
xtick(1(1)10)
xscale(range(1(1)10))
xlabel(1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6" 7 "7" 8 "8" 9 "9" 10 "10+")
note(" " "Notes: Sample includes `gradespan' grade `subj_foot' teachers
in the 2007-08 through 2011-12 school years, with `teacher_years' teacher years and"
"`unique_teachers' unique teachers. Teacher effects are average within-teacher
year-to-year changes, measured in student test score standard deviations.", size(vsmall)
span);
#delimit cr
graph export "${graphs}/Returns_to_Teaching_Experience_`subj_title'.emf", replace
graph save "${graphs}/Returns_to_Teaching_Experience_`subj_title'.gph", replace
Next Analysis: Examine Teacher Effects by Advanced Degree