*** Stata 14.0

version 14.0

use "MatchingGrantPublicUseYemen.dta", clear 



***** Table 1: Baseline Characteristics for Full Sample and for Follow-up Sample
gen female=Gender==2
gen Aden=Cityofbusiness==2

gen expandedlast3=Inthepast3yearsExpandedyo=="True"
gen hiredlast3=Inthepast3yearsIncreasedn=="True"
gen marketedlast3=Inthepast3yearsdidyoucon=="True"
gen expandedmarketlast3=Inthepast3yearsDidyouexp=="True"
gen improvedproductlinelast3=Inthepast3yearsimprovedyo=="True"
gen ISObase=DoyouhaveanyISOcertificatio==1
gen trainedworkers=Inthepast3yearsDidyoupro=="True"
gen expolast3=Inthepast3yearsparticipate=="True"
gen export2012=SalesExport2012>0 & SalesExport2012~=.
gen sales2012=SalesLocal2012+SalesExport2012

mat y = J(15,6,.)	
local k=1
foreach var of varlist female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 {

sum `var' if AssignTreat==1
mat y[`k',1] = r(mean)
sum `var' if AssignTreat==0
mat y[`k',2] = r(mean)
reg `var' AssignTreat Aden, r 
test AssignTreat==0
mat y[`k', 3]=r(p)

sum `var' if AssignTreat==1 & attrit==0
mat y[`k',4] = r(mean)
sum `var' if AssignTreat==0 & attrit==0
mat y[`k',5] = r(mean)
reg `var' AssignTreat Aden if attrit==0, r 
test AssignTreat==0
mat y[`k', 6]=r(p)


local k=`k'+1
}
count if AssignTreat==1
mat y[15,1]=r(N)
count if AssignTreat==0
mat y[15,2]=r(N)
count if AssignTreat==1 & attrit==0
mat y[15,4]=r(N)
count if AssignTreat==0 & attrit==0
mat y[15,5]=r(N)

mat rownames y = female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012     "Sample Size"
mat colnames y = "Treatment" "Control""P-value" "Treatment Followed" "Control Followed" "P-value"
mat2txt, matrix(y) saving("output\Table1Firm.xls") replace

* Joint test of orthogonality
dprobit AssignTreat female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012, r
dprobit AssignTreat female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 if attrit==0, r

gen totalemp=NumberofEmployeesMale+NumberofEmployeesFemale
sum totalemp, de

**** Table 2 *****
tab f_Co_IQ32


************* Table 3 ***************
**What determines take-up?
gen takeupgrant=f_BFQ29==1

mat y = J(15,3,.)	
local k=1
foreach var of varlist female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 {

sum `var' if takeupgrant==1 & AssignTreat==1 & attrit==0
mat y[`k',1] = r(mean)
sum `var' if takeupgrant==0 & AssignTreat==1 & attrit==0
mat y[`k',2] = r(mean)
reg `var' takeupgrant Aden if AssignTreat==1 & attrit==0 , r 
test takeupgrant==0
mat y[`k', 3]=r(p)
local k=`k'+1
}
count if takeupgrant==1 & AssignTreat==1 & attrit==0
mat y[15,1]=r(N)
count if takeupgrant==0 & AssignTreat==1 & attrit==0
mat y[15,2]=r(N)

mat rownames y = female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012     "Sample Size"
mat colnames y = "Take-up" "Don't Take-up""P-value" 
mat2txt, matrix(y) saving("output\Table2Takeup.xls") replace
dprobit takeupgrant female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 if attrit==0 & AssignTreat==1, r


label var f_P_IQ1 "Gender of Respondent"
label var f_P_IQ2 "Position in Company"
label var f_Co_IQ32 "Nature of Business"
label var f_Co_IQ4  "Business still in operation"

gen fulltimeworkers=f_Co_IQ7_A_1 if f_Co_IQ7_A_1>=0
label var fulltimeworkers "Full time permanent workers"
gen temporaryworkers=f_Co_IQ7_A_2 if f_Co_IQ7_A_2>=0
label var temporaryworkers "Temporary workers"

gen introducenewproduct=f_ICQ10==1
label var introducenewproduct "Introduced a new product"
gen introducenewprocess=f_ICQ15==1
label var introducenewprocess "Introduced a new process"
gen newmarketing=f_ICQ17_1==1
gen newaccounting=f_ICQ17_2==1
gen newtraining=f_ICQ17_3==1
gen newquality=f_ICQ17_4==1
gen newHR=f_ICQ17_5==1
gen attendtrade=f_ICQ17_6==1
gen newcapital=f_ICQ17_7==1
gen haswebsite=f_ICQ18==1
gen usedconsultant=f_ICQ20==1
gen newloan=f_BFQ24==1
gen export=f_EPQ33==1
gen salesgrew=f_EPQ36==3

gen numberinnovate=introducenewproduct+introducenewprocess+ newmarketing+ newaccounting+ newtraining+ newquality+ newHR+ attendtrade
gen anyinnovate=0
replace anyinnovate=1 if numberinnovate>0 & numberinnovate~=.

*** Table 4 ************
local i=1
eststo clear
foreach var of varlist introducenewproduct-attendtrade numberinnovate anyinnovate {
*** ITT only strata controls
reg `var' AssignTreat Aden if attrit==0, r 
sum `var' if AssignTreat==0 & attrit==0
estadd scalar mean=r(mean)
eststo table4a_`i'
*** ITT all controls
reg `var' AssignTreat female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 if attrit==0, r 
sum `var' if AssignTreat==0 & attrit==0
estadd scalar mean=r(mean)
eststo table4b_`i'
*** LATE
ivreg `var' (takeupgrant=AssignTreat) Aden if attrit==0, r
eststo table4c_`i'
local i=`i'+1
}
#delimit ;
esttab table4a_*  table4b_* table4c_* using output\table4firm.csv, replace depvar legend label nonumbers nogaps
	b(%9.3f) se star(* 0.10 ** 0.05 *** 0.01) drop(_cons)
	stats(N mean, fmt(%9.0g %9.3f ) labels("Sample Size" "Control Mean" )) 
	title("Table 4:Firm Impacts on Innovation") addnotes("""") ;
#delimit cr



* ITT impact only strata controls
local i=1
eststo clear
foreach var of varlist fulltimeworkers-salesgrew {
*** ITT
reg `var' AssignTreat Aden if attrit==0, r 
sum `var' if AssignTreat==0 & attrit==0
estadd scalar mean=r(mean)
eststo table2a_`i'
/*
*** LATE
xi: ivreg `var' (takeupinternship=round1Treat) i.Strata if experimentalsamplev3==1, r
eststo table2b_`i'
*/
local i=`i'+1
}
#delimit ;
esttab table2a_*   using output\table2firm.csv, replace depvar legend label nonumbers nogaps
	b(%9.3f) se star(* 0.10 ** 0.05 *** 0.01) drop(_cons)
	stats(N mean, fmt(%9.0g %9.3f ) labels("Sample Size" "Control Mean" )) 
	title("Table 2:Firm Impacts") addnotes("""") ;
#delimit cr

* ITT impact baseline controls
local i=1
eststo clear
foreach var of varlist fulltimeworkers-salesgrew {
*** ITT
reg `var' AssignTreat female Aden NumberofEmployeesMale NumberofEmployeesFemale expandedlast3 hiredlast3 marketedlast3 expandedmarketlast3 improvedproductlinelast3 ISObase trainedworkers expolast3 export2012 sales2012 if attrit==0, r 
sum `var' if AssignTreat==0 & attrit==0
estadd scalar mean=r(mean)
eststo table2b_`i'

local i=`i'+1
}
#delimit ;
esttab table2b_*   using output\table2bfirm.csv, replace depvar legend label nonumbers nogaps
	b(%9.3f) se star(* 0.10 ** 0.05 *** 0.01) drop(_cons)
	stats(N mean, fmt(%9.0g %9.3f ) labels("Sample Size" "Control Mean" )) 
	title("Table 2b:Firm Impacts") addnotes("""") ;
#delimit cr

* LATE impact 

local i=1
eststo clear
foreach var of varlist fulltimeworkers-salesgrew {
*** LATE
ivreg `var' (takeupgrant=AssignTreat) Aden if attrit==0, r
eststo table2c_`i'
local i=`i'+1
}
#delimit ;
esttab table2c_*   using output\table2cfirm.csv, replace depvar legend label nonumbers nogaps
	b(%9.3f) se star(* 0.10 ** 0.05 *** 0.01) drop(_cons)
	stats(N mean, fmt(%9.0g %9.3f ) labels("Sample Size" "Control Mean" )) 
	title("Table 2c:Firm Impacts") addnotes("""") ;
#delimit cr

sum takeupgrant if attrit==0 & AssignTreat==1


**** Appendix 2: Lee Lower Bounds on key outcomes
*** Need to trim 22 observations from treatment to give same response rate as control

set seed 124
gen random1=uniform() if AssignTreat==1 & attrit==0 & introducenewproduct==1
egen rank1=rank(random1)
gen introducenewproduct_lee=introducenewproduct
tab introducenewproduct_lee if AssignTreat==1 & attrit==0
replace introducenewproduct_lee=. if AssignTreat==1 & attrit==0 & rank1<=22

set seed 125
gen random2=uniform() if AssignTreat==1 & attrit==0 & newaccounting==1
egen rank2=rank(random2)
gen newaccounting_lee=newaccounting
tab newaccounting_lee if AssignTreat==1 & attrit==0
replace newaccounting_lee=. if AssignTreat==1 & attrit==0 & rank2<=22

set seed 126
gen random3=uniform() if AssignTreat==1 & attrit==0 & newtraining==1
egen rank3=rank(random3)
gen newtraining_lee=newtraining
tab newtraining_lee if AssignTreat==1 & attrit==0
replace newtraining_lee=. if AssignTreat==1 & attrit==0 & rank3<=22

set seed 140
gen random7=uniform() if AssignTreat==1 & attrit==0 & anyinnovate==1
egen rank7=rank(random7)
gen anyinnovate_lee=anyinnovate
tab anyinnovate_lee if AssignTreat==1 & attrit==0
replace anyinnovate_lee=. if AssignTreat==1 & attrit==0 & rank7<=22

set seed 127
gen random4=uniform() if AssignTreat==1 & attrit==0 & salesgrew==1
egen rank4=rank(random4)
gen salesgrew_lee=salesgrew
tab salesgrew_lee if AssignTreat==1 & attrit==0
replace salesgrew_lee=. if AssignTreat==1 & attrit==0 & rank4<=22

set seed 128
gen random5=uniform() if AssignTreat==1 & attrit==0 & newcapital==1
egen rank5=rank(random5)
gen newcapital_lee=newcapital
tab newcapital_lee if AssignTreat==1 & attrit==0
replace newcapital_lee=. if AssignTreat==1 & attrit==0 & rank5<=22


set seed 129
gen random6=uniform() if AssignTreat==1 & attrit==0 & usedconsultant==1
egen rank6=rank(random6)
gen usedconsultant_lee=usedconsultant
tab usedconsultant_lee if AssignTreat==1 & attrit==0
replace usedconsultant_lee=. if AssignTreat==1 & attrit==0 & rank6<=22


eststo clear
reg introducenewproduct_lee AssignTreat Aden if attrit==0, r 
eststo table5_1
reg newaccounting_lee AssignTreat Aden if attrit==0, r 
eststo table5_2
reg newtraining_lee AssignTreat Aden if attrit==0, r 
eststo table5_3
reg anyinnovate_lee AssignTreat Aden if attrit==0, r 
eststo table5_4
reg newcapital_lee AssignTreat Aden if attrit==0, r
eststo table5_5
reg usedconsultant_lee AssignTreat Aden if attrit==0, r
eststo table5_6
reg salesgrew_lee AssignTreat Aden if attrit==0, r 
eststo table5_7


#delimit ;
esttab table5_*   using output\app2firm.csv, replace depvar legend label nonumbers nogaps
	b(%9.3f) se star(* 0.10 ** 0.05 *** 0.01) drop(_cons)
	stats(N mean, fmt(%9.0g %9.3f ) labels("Sample Size" "Control Mean" )) 
	title("Appendix 2: Lee bounds") addnotes("""") ;
#delimit cr



