* This do-file creates some of the graphs used in Lecture 3 of Principles of Empirical Analysis * Matti Sarvimäki, January 2022 clear all set seed 12346 global home "/Users/sarvimm1/Dropbox (Aalto)/teaching/Principles_of_Empirical_Analysis/matti" global data "$home/data" global output "$home/graphs" * --- Piketty, Saez, Zucman data * --- from http://gabriel-zucman.eu/usdina/ * ------------------------------------------ * reading in the data import excel using "$data/PSZ2018MainData", sheet("DataFS40") cellrange(A4:Z131) firstrow clear * rename variables rename A percentile rename pretaxincome pre46 rename M pre62 rename N pre80 rename O pre14 rename posttax post46 rename posttaxincome post62 rename V post80 rename W post14 * scale income into 1,000s of dollars foreach var in pre46 pre62 pre80 pre14 post46 post62 post80 post14{ replace `var'=`var'/1000 } * calculate 90/10 ratios foreach yy in 46 80 14{ sum pre`yy' if percentile==90 local p90=r(mean) sum pre`yy' if percentile==10 local p10=r(mean) di "90/10 ratio in `yy' = " `p90'/`p10' } * draw CDFs local opt "xlab(0(20)180) xline(0(10)180, lw(thin) lc(gs8)) ylab(0(5)100, grid glw(thin)) ytitle("Percentile", size(small) place(1)) xtitle("Annual income (1,000's of 2014 dollars)", size(small) place(1)) yline(100, lc(black)) xsize(20) ysize(20) scale(.8)" twoway (scatter percentile pre46, `scatter_opt') (scatter percentile pre14, ms(none)) if percentile<=95, `opt' legend(col(4) lab(1 "1946") order(1) pos(5) ring(0) col(1)) graph export "$output/cdf_PSZ1.pdf", replace twoway (scatter percentile pre46, `scatter_opt') (scatter percentile pre80, `scatter_opt') (scatter percentile pre14, ms(none)) if percentile<=95, `opt' legend(col(4) lab(1 "1946") lab(2 "1980") order(1 2) pos(5) ring(0) col(1)) graph export "$output/cdf_PSZ2.pdf", replace twoway (scatter percentile pre46, `scatter_opt') (scatter percentile pre80, `scatter_opt') (scatter percentile pre14, `scatter_opt') if percentile<=95, `opt' legend(col(4) lab(1 "1946") lab(2 "1980") lab(3 "2014") pos(5) ring(0) col(1)) graph export "$output/cdf_PSZ3.pdf", replace local opt "xlab(0(2500)20000, grid glw(thin)) ylab(0(5)100, grid glw(thin)) ytitle("Percentile", size(small) place(1)) xtitle("Annual income (1,000's of 2014 dollars)", size(small) place(1)) yline(100, lc(black)) xsize(20) ysize(20) scale(.8)" local scatter_opt "c(l) ms(none) lwidth(thick)" twoway (scatter percentile pre46, `scatter_opt') (scatter percentile pre80, `scatter_opt') (scatter percentile pre14, `scatter_opt'), `opt' legend(col(4) lab(1 "1946") lab(2 "1980") lab(3 "2014") pos(5) ring(0) col(1)) graph export "$output/cdf_PSZ4.pdf", replace * calculate and draw growth rates gen gr_4680_lev=pre80-pre46 gen gr_4680=(pre80/pre46) gen gr_4680_sc=(gr_4680^(1/34)-1)*100 gen gr_8014_lev=pre14-pre80 gen gr_8014=(pre14/pre80) gen gr_8014_sc=(gr_8014^(1/34)-1)*100 bro per pre* gr* local scatter_opt "ms(none) c(l) lw(thick)" local opt "xtitle("Percentile", size(small) place(1)) xlab(10(5)95, grid glw(thin)) legend(lab(1 "1946-1980") lab(2 "1980-2014") pos(5) ring(0) col(1)) xsize(20) ysize(20) scale(.8)" twoway (scatter gr_4680_lev percentile,`scatter_opt') (scatter gr_8014_lev percentile, `scatter_opt') if percentile>=10 & percentile<=95, `opt' ytitle("Income growth (1,000s of 2014 dollars)", size(small) place(1)) ylab(0(10)80, grid glw(thin)) graph export "$output/gr_PSZ1.pdf", replace twoway (scatter gr_4680 percentile,`scatter_opt') (scatter gr_8014 percentile, `scatter_opt') if percentile>=10 & percentile<=95, `opt' ytitle("Relative income growth", size(small) place(1)) ylab(.8(.1)2.1, grid glw(thin)) graph export "$output/gr_PSZ2.pdf", replace twoway (scatter gr_4680_sc percentile,`scatter_opt') (scatter gr_8014_sc percentile, `scatter_opt') if percentile>=10 & percentile<=95, `opt' ytitle("Annualized growth rate (percent)", size(small) place(1)) ylab(-0.5(.25)2, grid glw(thin)) graph export "$output/gr_PSZ3.pdf", replace local opt "xtitle("Percentile", size(small) place(1)) xlab(95(.5)100, grid glw(thin)) legend(lab(1 "1946-1980") lab(2 "1980-2014") pos(11) ring(0) col(1)) xsize(20) ysize(20) scale(.8)" twoway (scatter gr_4680_sc percentile,`scatter_opt') (scatter gr_8014_sc percentile, `scatter_opt') if percentile>=10 & percentile>=95, `opt' ytitle("Annualized growth rate (percent)", size(small) place(1)) ylab(1(.5)5, grid glw(thin)) graph export "$output/gr_PSZ4.pdf", replace