OpenSDP Analysis / Human Capital Analysis: Recruitment / Examine the Share of New Hires Across School Years

Preparation

Purpose

Examine trends in hiring over time.

Required analysis file variables

  • tid
  • school_year
  • t_new_hire
  • t_novice

Analysis-specific sample restrictions

  • Keep only years for which new hire information is available.

Ask yourself

  • How have hiring trends changed over time?
  • What factors might account for the trends that I see?

Potential further analyses

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.

Analysis

Step 1: Load the Teacher_Year_Analysis data file.

use "${analysis}\Teacher_Year_Analysis.dta", clear
isid tid school_year

Step 2: Restrict the analysis sample.

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)

Step 3: Review variables to be used in the analysis.

tab school_year t_novice, mi row
tab school_year t_veteran_new_hire, mi row
tab t_novice t_veteran_new_hire

Step 4: Calculate sample size.

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

Step 5: Calculate significance indicator variables by year.

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
}

Step 6: Collapse the teacher-level data file.

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'
}

Step 7: Concatenate values and significance asterisks to make value labels.

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')
}

Step 8: Get the total new hire percent for each year for graphing.

gen t_total = t_novice + t_veteran_new_hire

Step 9: Create a stacked bar graph using overlaid bars.

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

Step 10: Save the chart in Stata Graph and EMF formats.

    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