Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelstepner/97e08cfc63858cca126288d6dd77f078 to your computer and use it in GitHub Desktop.
Save michaelstepner/97e08cfc63858cca126288d6dd77f078 to your computer and use it in GitHub Desktop.
Upward Mobility in the United States by Race x Gender
*! 23mar2018 Michael Stepner
* Code released to public domain under CC0 license: https://creativecommons.org/publicdomain/zero/1.0/
* Use it and adapt it as you like.
/*** Plot intergenerational mobility by Race x Gender for multiple races
***/
* Load quintile transition matrices from Chetty, Hendren, Jones, and Porter (2018). http://www.equality-of-opportunity.org/data/
use "http://www.equality-of-opportunity.org/data/race/table_2.dta", clear
* Generate mean kid individual income quintile | parent income quintile
forvalues parq=1/5 {
gen mean_kir_q_cond_par_q`parq' = kir_q1_cond_par_q`parq' * 1 + ///
kir_q2_cond_par_q`parq' * 2 + ///
kir_q3_cond_par_q`parq' * 3 + ///
kir_q4_cond_par_q`parq' * 4 + ///
kir_q5_cond_par_q`parq' * 5
}
keep kid_race gender mean_kir_q*
reshape long mean_kir_q_cond_par_q, i(kid_race gender) j(par_q)
rename mean_kir_q_cond_par_q mean_kir_q
* Plot graphs, sequentially adding racial/ethnic groups
twoway (scatter mean_kir_q par_q if kid_race=="White" & gender=="M", ms(s) mc(gold*1.25) lc(gold*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="White" & gender=="F", ms(o) mc(gold*0.75) lc(gold*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="M", ms(s) mc(ebblue*1.25) lc(ebblue*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="F", ms(o) mc(ebblue*0.75) lc(ebblue*0.75) c(l)) ///
, ///
xtitle("Family Income Quintile of Parent") ///
ytitle("Mean Individual Quintile of Child") ///
ylab(,angle(horiz)) ///
legend( ///
lab(1 "White Men") lab(2 "White Women") ///
lab(3 "Black Men") lab(4 "Black Women") ///
)
graph export "mobility_wb.png", replace
twoway (scatter mean_kir_q par_q if kid_race=="White" & gender=="M", ms(s) mc(gold*1.25) lc(gold*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="White" & gender=="F", ms(o) mc(gold*0.75) lc(gold*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="M", ms(s) mc(ebblue*1.25) lc(ebblue*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="F", ms(o) mc(ebblue*0.75) lc(ebblue*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="M", ms(s) mc(orange_red*1.25) lc(orange_red*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="F", ms(o) mc(orange_red*0.75) lc(orange_red*0.75) c(l)) ///
, ///
xtitle("Family Income Quintile of Parent") ///
ytitle("Mean Individual Quintile of Child") ///
ylab(,angle(horiz)) ///
legend( ///
lab(1 "White Men") lab(2 "White Women") ///
lab(3 "Black Men") lab(4 "Black Women") ///
lab(5 "Hispanic Men") lab(6 "Hispanic Women") ///
)
graph export "mobility_wbh.png", replace
twoway (scatter mean_kir_q par_q if kid_race=="White" & gender=="M", ms(s) mc(gold*1.25) lc(gold*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="White" & gender=="F", ms(o) mc(gold*0.75) lc(gold*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="M", ms(s) mc(ebblue*1.25) lc(ebblue*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="F", ms(o) mc(ebblue*0.75) lc(ebblue*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="M", ms(s) mc(orange_red*1.25) lc(orange_red*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="F", ms(o) mc(orange_red*0.75) lc(orange_red*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="M", ms(s) mc(purple*1.25) lc(purple*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="F", ms(o) mc(purple*0.75) lc(purple*0.75) c(l)) ///
, ///
xtitle("Family Income Quintile of Parent") ///
ytitle("Mean Individual Quintile of Child") ///
ylab(,angle(horiz)) ///
legend( ///
lab(1 "White Men") lab(2 "White Women") ///
lab(3 "Black Men") lab(4 "Black Women") ///
lab(5 "Hispanic Men") lab(6 "Hispanic Women") ///
lab(7 "Asian Men") lab(8 "Asian Women") ///
)
graph export "mobility_wbha.png", replace
twoway (scatter mean_kir_q par_q if kid_race=="White" & gender=="M", ms(s) mc(gold*1.25) lc(gold*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="White" & gender=="F", ms(o) mc(gold*0.75) lc(gold*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="M", ms(s) mc(ebblue*1.25) lc(ebblue*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="F", ms(o) mc(ebblue*0.75) lc(ebblue*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="M", ms(s) mc(orange_red*1.25) lc(orange_red*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="F", ms(o) mc(orange_red*0.75) lc(orange_red*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="M", ms(s) mc(purple*1.25) lc(purple*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="F", ms(o) mc(purple*0.75) lc(purple*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="AIAN" & gender=="M", ms(s) mc(midgreen*1.25) lc(midgreen*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="AIAN" & gender=="F", ms(o) mc(midgreen*0.75) lc(midgreen*0.75) c(l)) ///
, ///
xtitle("Family Income Quintile of Parent") ///
ytitle("Mean Individual Quintile of Child") ///
ylab(,angle(horiz)) ///
legend( ///
lab(1 "White Men") lab(2 "White Women") ///
lab(3 "Black Men") lab(4 "Black Women") ///
lab(5 "Hispanic Men") lab(6 "Hispanic Women") ///
lab(7 "Asian Men") lab(8 "Asian Women") ///
lab(9 "Am Ind/AK Native Men") lab(10 "Am Ind/AK Native Women") ///
)
graph export "mobility_wbhai.png", replace
twoway (scatter mean_kir_q par_q if kid_race=="White" & gender=="M", ms(s) mc(gold*1.25) lc(gold*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="White" & gender=="F", ms(o) mc(gold*0.75) lc(gold*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="M", ms(s) mc(ebblue*1.25) lc(ebblue*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Black" & gender=="F", ms(o) mc(ebblue*0.75) lc(ebblue*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="M", ms(s) mc(orange_red*1.25) lc(orange_red*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Hispanic" & gender=="F", ms(o) mc(orange_red*0.75) lc(orange_red*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="M", ms(s) mc(purple*1.25) lc(purple*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Asian" & gender=="F", ms(o) mc(purple*0.75) lc(purple*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="AIAN" & gender=="M", ms(s) mc(midgreen*1.25) lc(midgreen*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="AIAN" & gender=="F", ms(o) mc(midgreen*0.75) lc(midgreen*0.75) c(l)) ///
(scatter mean_kir_q par_q if kid_race=="Other" & gender=="M", ms(s) mc(teal*1.25) lc(teal*1.25) c(l) lpat(dash)) ///
(scatter mean_kir_q par_q if kid_race=="Other" & gender=="F", ms(o) mc(teal*0.75) lc(teal*0.75) c(l)) ///
, ///
xtitle("Family Income Quintile of Parent") ///
ytitle("Mean Individual Quintile of Child") ///
ylab(,angle(horiz)) ///
legend( ///
lab(1 "White Men") lab(2 "White Women") ///
lab(3 "Black Men") lab(4 "Black Women") ///
lab(5 "Hispanic Men") lab(6 "Hispanic Women") ///
lab(7 "Asian Men") lab(8 "Asian Women") ///
lab(9 "Am Ind/AK Native Men") lab(10 "Am Ind/AK Native Women") ///
lab(11 "Other Men") lab(12 "Other Women") ///
)
graph export "mobility_wbhaio.png", replace
@michaelstepner
Copy link
Author

Resulting figures attached here:

mobility_wb

mobility_wbh

mobility_wbha

mobility_wbhai

mobility_wbhaio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment