OpenSDP Analysis / Human Capital Analysis: Recruitment / Examine the Share of New Hires Across School Years
Examine trends in hiring over time.
tid
school_year
t_new_hire
t_novice
At the state level, yout may wish to exammine hiring trends by year for specific school types or geographic areas. At the district level, you can make a graph of this type in order to examine overall hiring by school or for specific groups of schools, instead of by year.
use "${analysis}\Teacher_Year_Analysis.dta", clear
isid tid school_year
Also generate veteran new hire indicator.
keep if school_year > 2010
keep if !missing(t_new_hire)
keep if !missing(t_novice)
keep if !missing(t_experience)
// Generate missing t_veteran_new_hire variable
gen t_veteran_new_hire = 0 if !missing(t_experience)
replace t_veteran_new_hire = 1 if t_new_hire == 1 & t_novice == 0 & !missing(t_experience)
assert !missing(t_experience, t_veteran_new_hire)
tab school_year t_novice, mi row
tab school_year t_veteran_new_hire, mi row
tab t_novice t_veteran_new_hire
summ tid
local teacher_years = string(r(N), "%9.0fc")
preserve
bys tid: keep if _n == 1
summ tid
local unique_teachers = string(r(N), "%9.0fc")
restore
foreach var in t_novice t_veteran_new_hire {
gen sig_`var' = .
xi: reg `var' i.school_year, robust
forvalues year = 2012/2015 {
replace sig_`var' = abs(_b[_Ischool_ye_`year'] / _se[_Ischool_ye_`year']) ///
if school_year == `year'
replace sig_`var' = 0 if sig_`var' <= 1.96 & school_year == `year'
replace sig_`var' = 1 if sig_`var' > 1.96 & school_year == `year'
}
replace sig_`var' = 0 if school_year == 2011
}
Do this to calculate percent of new hires by year.
collapse (mean) t_novice t_veteran_new_hire sig_*, by(school_year)
foreach var in t_novice t_veteran_new_hire {
replace `var' = 100 * `var'
}
foreach var of varlist t_novice t_veteran_new_hire {
tostring(sig_`var'), replace
replace sig_`var' = "*" if sig_`var' == "1"
replace sig_`var' = "" if sig_`var' == "0"
gen `var'_str = string(`var', "%9.0f")
egen `var'_label = concat(`var'_str sig_`var')
}
gen t_total = t_novice + t_veteran_new_hire
Use scatter plots with invisible symbols for the value labels.
#delimit ;
twoway (bar t_total school_year,
fcolor(forest_green) lcolor(forest_green) lwidth(0) barwidth(0.75))
(bar t_novice school_year,
fcolor(maroon) lcolor(maroon) lwidth(0) barwidth(0.75))
(scatter t_total school_year,
mcolor(none) mlabel(t_veteran_new_hire_label) mlabcolor(white) mlabpos(6)
mlabsize(small))
(scatter t_novice school_year,
mcolor(none) mlabel(t_novice_label) mlabcolor(white) mlabpos(6)
mlabsize(small)),
title("Share of Teachers Who Are New Hires", span)
subtitle("by School Year", span)
ytitle("Percent of Teachers")
ylabel(0(10)30, nogrid labsize(medsmall))
xtitle("")
xlabel(2011 "2010-11" 2012 "2011-12" 2013 "2012-13" 2014 "2013-14" 2015 "2014-15",
labsize(medsmall))
legend(order(1 "Experienced New Hires" 2 "Novice New Hires")
ring(0) position(11) symxsize(2) symysize(2) rows(2) size(medsmall)
region(lstyle(none) lcolor(none) color(none)))
graphregion(color(white) fcolor(white) lcolor(white))
plotregion(color(white) fcolor(white) lcolor(white) margin(2 0 2 0))
note(" " "*Significantly different from 2010-2011 value, at the 95 percent confidence level."
"Notes: Sample includes teachers in the 2009-10 through 2014-15 school years, with `teacher_years' teacher years and `unique_teachers' unique teachers."
"Novices were in their first year of teaching.", size(vsmall) span);
#delimit cr
graph export "${graphs}/New_Hires_by_School_Year.emf", replace
graph save "${graphs}/New_Hires_by_School_Year.gph", replace
Previous Analysis: Calculate the Share of Teachers Who Are New Hires
Next Analysis: Compare the Shares of New Hires Across School Poverty Quartiles