******************************************************************************** ****Fairness is not always intuitive******************************************** *******Carolyn, Eleni and Nicky************************************************* *******Date: Jan,2021 ********************************************************************************/ clear capture log close log using withorder.log, replace ******************************************************************************** use FinalFairnessdata.dta, clear //gendern=1 is female //racen=1 is black /* create a "panel" so we have all decisions separately with an individual id for clustering */ gen ID = _n gen transfer1= wfepre /* Time taken for decision (using submit data time) */ gen time1= wfesubmit gen income1= wfeincome gen order1=orderwfe gen transfer2= bfopre gen time2= bfosubmit gen income2= bfoincome gen order2=orderbfo gen transfer3= bmopre gen time3= bmosubmit gen income3= bmoincome gen order3=orderbmo gen transfer4= bfepre gen time4= bfesubmit gen income4= bfeincome gen order4=orderbfe gen transfer5= wmepre gen time5= wmesubmit gen income5= wmeincome gen order5=orderwme // we exclude these people because of few observation and we are interested to see the diff between the 2 big groups// drop if race=="Asian (Indian)" *4 observations egen tottrasfer=rowtotal(transfer1 transfer2 transfer3 transfer4 transfer5) *only one person give all zero keep gender race ownincome ID transfer1 time1 income1 order1 transfer2 time2 income2 order2 transfer3 time3 income3 order3 transfer4 time4 income4 order4 transfer5 time5 income5 order5 *****making each decision as observation reshape long transfer@ time@ income@ order@, i(ID) j(Receiver) drop if transfer==. sum time, detail return list sum time, detail histogram time, bin(20) graphregion(color(white)) graph export hist1.eps, replace *** 6 seconds are not realistic: no thought in decision drop if time<6 ***we have one outlier // drop if time > 175 histogram time, bin(20) graphregion(color(white)) graph export hist2.eps, replace sum transfer, detail ***first quartile sec cut-off for impulsive decisions sum time, d return list gen timemedian = r(p25) gen impulsiveM=0 replace impulsiveM=1 if time=28 la define fair 1" fair" 0 "selfish" la value fair fair ttest time, by(fair) ****figure 1(a) kdensity time, nograph generate(x fx) kdensity time if fair==0 , nograph generate(fx0) at(x) kdensity time if fair==1, nograph generate(fx1) at(x) la var fx0 "Time for selfish dictator" la var fx1 "Time for fair dictator" line fx0 fx1 x, sort graphregion(color(white)) ytitle(Density) saving(Density, replace) graph export Density.eps, replace ranksum time, by(fair) porder esize twosample time, by(fair) cohensd hedgesg glassdelta *ssc install cdfplot ****figure 1(b) , cumulative graph using 25th sort time cumul time if fair == 0, gen(cfair0) cumul time if fair == 1, gen(cfair1) cdfplot time, by(fair) saving(cdfplot, replace) graphregion(color(white)) graph export cdfplot.eps, replace ***another option for figure 1 graph box time , over(fair) ***Two-sample Kolmogorov-Smirnov test *Is there any difference in distribution of time between selfish and fair ? ksmirnov time, by(fair) exact ***Control for zero transfer so that we're considering non-zero in the regs*** gen zerotransfer=0 replace zerotransfer=1 if transfer==0 **** preparing the data gen race_receiver=1 if Receiver==2|Receiver==3|Receiver==4|Receiver==6 replace race_receiver= 0 if race_receiver==. label define race 1"Black" 0"White" label val race_receiver race gen sex_receiver=1 if Receiver==3|Receiver==5|Receiver==6 replace sex_receiver=0 if sex_receiver==. label define sex 1"Male" 0"Female" label val sex_receiver sex encode gender, gen(gender2) gen sex_dic=1 if gender2==2 replace sex_dic=0 if sex_dic==. label value sex_dic sex *numlabel, add tab1 sex_dic gender drop gender2 encode race, gen(race2) gen race_dic=1 if race2==1 replace race_dic=0 if race_dic==. label value race_dic race *numlabel, add tab1 race_dic race drop race2 *** Generating the interaction of gender of dictators and receivers gen sexinter=. replace sexinter=1 if sex_dic==0 & sex_receiver==0 // female-female // replace sexinter=2 if sex_dic==1 & sex_receiver==1 // male -male // replace sexinter=3 if sex_dic==1 & sex_receiver==0 // male - female // replace sexinter=4 if sex_dic==0 & sex_receiver==1 // female - male // ***generating the dummies tabulate sexinter, gen(sexinterd) rename sexinterd1 FF la var FF "Female dictator Female receiver" rename sexinterd2 MM la var MM "Male dictator male receiver " rename sexinterd3 MF la var MF "Male dictator Female receiver " rename sexinterd4 FM la var FM "Male dictator Female receiver " *** Gen interaction of race of dictators and receivers gen raceinter=. replace raceinter=1 if race_dic ==1 & race_receiver==1 replace raceinter=2 if race_dic ==0 & race_receiver==0 replace raceinter=3 if race_dic ==1 & race_receiver==0 replace raceinter=4 if race_dic ==0 & race_receiver==1 tab raceinter ***generating the dummies tabulate raceinter, gen(raceinterd) rename raceinterd1 BB la var BB "black dictator black reciver" rename raceinterd2 WW la var WW "white dictator white reciver" rename raceinterd3 BW la var BW " black dictator white reciver" rename raceinterd4 WB la var WB " white dictator black reciver" ***********Table 2, time and transfer by gender and race interactions ttest time if sex_dic==0, by(sex_receiver) unequal ttest time if sex_dic==0, by(race_receiver) unequal ttest time if sex_dic==1, by(race_receiver) unequal ttest time if sex_dic==1, by(sex_receiver) unequal ttest time if race_dic==1, by(race_receiver) unequal ttest time if race_dic==1, by(sex_receiver) unequal ttest time if race_dic==0, by(sex_receiver) unequal ttest time if race_dic==0, by(race_receiver) unequal ttest transfer if sex_dic==0, by(sex_receiver) unequal ttest transfer if sex_dic==0, by(race_receiver) unequal ttest transfer if sex_dic==1, by(sex_receiver) unequal ttest transfer if sex_dic==1 , by(race_receiver) unequal ttest transfer if race_dic==1, by(race_receiver) unequal ttest transfer if race_dic==1, by(sex_receiver) unequal ttest transfer if race_dic==0, by(sex_receiver) unequal ttest transfer if race_dic==0, by(race_receiver) unequal *** Gender and race Match dummies label define Receiver 1 "wfe" 2 "bfo" 3 "bmo" 4 "bfe" 5 "wme" 6 "bme" 7 "wfo" gen Blackreceiver=0 replace Blackreceiver=1 if Receiver==2|Receiver==3|Receiver==4|Receiver==6 gen Malereceiver=0 replace Malereceiver=1 if Receiver==3|Receiver==5|Receiver==6 ***Dummies for race and gender match*** gen samegender=0 replace samegender=1 if (Malereceiver==1&gender=="Male")|(Malereceiver==0&gender=="Female") gen samerace=0 replace samerace=1 if (Blackreceiver==0&race=="White")|(Blackreceiver==1&race=="Black") gen sameRG=0 replace sameRG=1 if (samegender==1&samerace==1) gen dic_incomen=. replace dic_incomen=0 if ownincome=="Below average"|ownincome=="Average" replace dic_incomen=1 if ownincome=="Above average" label define income 1" Above Average" 0"below or average" label val dic_incomen income gen rec_incomen=. replace rec_incomen=1 if income=="Above average" replace rec_incomen=0 if income=="Below average" | income=="Average" label define income2 1"Above average" 0 "below or average" label val rec_incomen income2 **generate dummies *tab rec_incomen, gen(rec_incomen) tab rec_incomen Blackreceiver, row *** graph option catplot race_receiver rec_incomen, graphregion(color(white)) /// percent(rec_incomen) /// var1opts(label(labsize(small))) /// var2opts(label(labsize(small)) relabel(`r(relabel)')) /// ytitle("Percent of Respondents by perceived income", size(small)) /// title("" /// , span size(medium)) /// blabel(bar, format(%4.1f)) /// intensity(25) recast(bar) saving(rec_income, replace) ******Table 3 ****************************************************************************************** ****Fairness is not always intuitive****************************************************************** eststo clear eststo: reg transfer race_dic, vce(cluster ID) eststo: reg transfer race_dic dic_incomen, vce(cluster ID) eststo : reg transfer race_dic dic_incomen time, vce(cluster ID) eststo : reg transfer dic_incomen race_dic##c.time, vce(cluster ID) esttab using all.doc, b(a3) se ar2 starlevels( * 0.10 ** 0.05 *** 0.010) replace eststo clear twoway (scatter transfer time, msym(oh) jitter(3)) /// (lfit transfer time if ~race_dic)(lfit transfer time if race_dic), /// legend(order(2 "white " 3 "Black")) *** ***Looking at the graph, the two regression (for white and black) lines are not parallel and that the line for whites falls above the line for blacks. The coefficient for black is also -7.82 which tells blacks transfer less compared to white counter parts. However, all the cofe are insignificant. The coefficient for time is 0.1528 which is the slope of the regression line for the white dictators (i.e., black=0). The value for the black by time interaction is 0.011 which is the difference in slope between the black and white dictators, i.e., the slope for the black dictator would be about 0.1528 + 0.011 = 0.1638. *** Margin command should give us the same result margins race_dic , dydx(time) ***The difference between black and white dictator significantly different for different values of time. The more deliberate decision by black the more they tend to transfer. margins, at(race_dic=(0 1) time=(25(2)90)) vsquish **when we look at the black-white difference for various values of time (time vary between 25 and 90 in increments of 5) using the margins command, blacks transfer less for each 5 sec intervals. the first 14 values are for white dictators while the next 14 are for blacks. *** Here we can see the difference for each 5 sec interval margins, dydx(race_dic) at(time=(25(2)90)) vsquish **** Black dictators give less but the difference are not significant. I adjust the above command to 15 seconds, results are still the same. given we use 13.369 as a cut off for impulsive and deliberate decisions, this cut off seems fair:) ******graph the margins marginsplot, yline(0) *** transfer differences between white and black is insignificant for all values of time. This might imply that: While black compared with white transfer less at each level of time, they are not less altruistic??? ***option with confidence interval marginsplot, recast(line) recastci(rarea) yline(0) ***************table 4 ****************************************************** label define raceinter 1"BB" 2 "WW" 3"WB" 4"BW", replace label val raceinter raceinter tabulate raceinter, gen(raceinter) eststo clear eststo : reg transfer i.raceinter, vce(cluster ID) eststo : reg transfer dic_incomen i.raceinter, vce(cluster ID) eststo : reg transfer dic_incomen i.raceinter i.sex_dic, vce(cluster ID) eststo : reg transfer dic_incomen i.raceinter time, vce(cluster ID) eststo : reg transfer dic_incomen raceinter##c.time, vce(cluster ID) /* test of overall significant of the interaction */ testparm raceinter#c.time contrast raceinter#c.time *** The testparm and/or contrast commands show that the overall interaction is statistically significant. margins raceinter, dydx(time) *** what does this tell us??? quietly margins raceinter, at(time=(25(5)90)) marginsplot, recast(line) noci addplot(scatter transfer time, jitter(3) msym(oh)) *** cking the time where the differences in slope between groups are statistically significant margins, dydx(raceinter) at(time=(25(5)90)) vsquish ** whites transfer less to blacks in decision they make in less than 70 sec compared to transfer to BB ***just the graphING of the above table marginsplot, recast(line) recastci(rarea) yline(0) ******************table 5 **************************************************************** eststo clear eststo : reg transfer dic_incomen rec_incomen i.raceinter, vce(cluster ID) eststo : reg transfer dic_incomen rec_incomen i.raceinter time, vce(cluster ID) eststo : reg transfer dic_incomen rec_incomen raceinter##c.time, vce(cluster ID) esttab using raceorenderbias_income.doc, b(a3) se ar2 starlevels(* 0.10 ** 0.05 *** 0.010) replace margins, dydx(raceinter) at(time=(25(5)90)) vsquish *** the bias against blacks from white dictator disappears after 30 sec ******************************************************************************** **** histograms ******************************************************************************** label define raceinter 1 "Black-black" 2 "White-white" 3 "Balck-white" 4 "White-black" lab val raceinter raceinter label define sexinter 1 "Female-female" 2 "Male-male" 3 "Male-female" 4 "Female-male" lab val sexinter sexinter histogram transfer , by( sexinter , cols(4)) graphregion(color(white)) frequency graph export histgen.eps , replace histogram transfer , by( raceinter , cols(4)) graphregion(color(white)) frequency graph export histrace.eps, replace log close exit