Hello!
I have received a code snippet that runs regressions and exports the results into tables in a Word document using the putdocx command. Since I did not write this code and was given not much background information, and because I am not very familiar with the putdocx command, I am finding it challenging to fully understand it and then generate LaTeX .tex files using the esttab command. Could you please advise on how I should modify the itt_3regs program to generate the .tex files?
Thank you in advance for any help you can provide
I have received a code snippet that runs regressions and exports the results into tables in a Word document using the putdocx command. Since I did not write this code and was given not much background information, and because I am not very familiar with the putdocx command, I am finding it challenging to fully understand it and then generate LaTeX .tex files using the esttab command. Could you please advise on how I should modify the itt_3regs program to generate the .tex files?
Code:
***** Definitions
* Outcomes
global outcomes_det_emp empquality sh_aminwage sh_wrcon sh_sosec sh_wrcon_emp empretention empturnover_outgoing
global outcomes_det_hr hr_all hr_hours_documented hr_organigram_public hr_rec_formal hr_pay_1 hr_pay_2 hr_perfeval training_py
global outcomes_det_bp bp_all bp_advert bp_record bp_stock bp_planning
global outcomes_det_acc acc formalaccounting accounting_docs acc_nonmanual sh_finstat_3years sh_finstat_submitted
* Controls
global control i.broad_sector i.ag_ano educ_diri_tert
* Heterogeneity
global het revcat empcat firmagecat sectorcat abidjan_rec tert_diri_rec not_viable knowledge_baseline // 3 categories for firm sample. Baseline dep. var. categories are defined in sub-file.
* Samples
// Samples: sample2 (wave 2), sample3 (wave 3), sample4 (waves 2+3 pooled sample, balanced)
* SEs & strata
global se_cs ", a(strata) r"
global se_2 ", a(strata) r"
global se_3 ", a(strata) r"
global se_4 "i.wave, a(strata) vce(cl id)"
/* Put word docs together */
cd "$writing/Tables"
putdocx append balancing_firm.docx ///
results_firm_empqual_det.docx ///
results_firm_empqual_det_iv.docx ///
firm_robustness.docx ///
, saving("${writing}/tables.docx", replace) pagebreak
cap program drop itt_3regs
program define itt_3regs
eststo clear
// Row and column titles
local ${tbl}_ctitle "Assignment"
*** Run regressions
collect clear
collect create c${tbl}, replace
// Run regressions in loop
local c=1
foreach o of global outcomes {
local d=`c'+1
collect _r_b _r_se , tag(model[`c']): areg `o' assignment `o'_2021 $control i.wave mis_`o' i.ag_ano , vce(cl id) a(strata) // misreport_am_`o'
*collect _r_b _r_se , tag(model[`c']): areg `o' assignment assignment##(c.`o'_2021) $control i.wave assignment##(mis_`o') i.ag_ano , vce(cl id) a(strata) // misreport_am_`o'
di "Outcomes: $outcomes"
*eststo ${tbl}_`c'
eststo `o'
// save p-values in matrix
matrix define ${tbl}_p`c' = (r(table)[4,1])
matlist ${tbl}_p`c'
matrix rownames ${tbl}_p`c'=`o'
// save control group means in macro to include in table
sum `o' if assignment==0 // $sample &
local ${tbl}_cm`c'=round(r(mean),.001)
local ++c
}
local c=`c'-1
*** Assemble results in collect table
di "${varstodisplay_${tbl}}"
collect layout (colname[assignment]#result result[r2 N] ) (model)
collect style header result, level(hide) // no separate row for names of independent vars
collect style header result[r2], level(label) // Label row for R2
collect style header result[N], level(label) // Label row for N
collect style cell, nformat(%5.3f) // Define number format in table
collect style cell result[N], nformat(%5.0f) // Different number format for N
collect style cell border_block, border(right, pattern(nil))
collect style cell result[_r_se], sformat("(%s)") // put SEs in brackets
collect style cell cell_type[item column-header], halign(center)
collect style showbase off
collect style row stack, nobinder
collect notes "${notes_${tbl}}"
collect levelsof cell_type
collect stars _r_p 0.01 "***" 0.05 "** " 0.1 "* ", attach(_r_b) shownote
collect preview
*** Results section in word doc:
*putdocx pagebreak
putdocx paragraph, style(Heading3)
putdocx text ("Table $z")
global z=$z +1
putdocx paragraph, style(Heading4)
putdocx text ("${ttl_${tbl}}")
/*putdocx paragraph
putdocx text ("Table: ${tbl}") */
// Defining table
collect style putdocx, name(c${tbl}) layout(autofitcontents)
putdocx collect, name(c${tbl}) tablename(${tbl})
putdocx table ${tbl}(1,.), addrows(3, before) valign(center)
global end_body=6
global bottom=8
global addrows=3
forv b=1/$addrows {
global bottom`b'=${bottom}+`b'
}
// Add controls
putdocx table ${tbl}($bottom,.), addrows($addrows)
putdocx table ${tbl}(${bottom1},1)=("Control mean"), halign(left)
putdocx table ${tbl}(${bottom2},1)=("Strata controls"), halign(left)
putdocx table ${tbl}(${bottom3},1)=("Lagged dep. var"), halign(left)
local e=`c'/3
local d=2
forv i=1/`e' {
di "Iteration `i': d=`d', e=`e'"
// Column titles
putdocx table ${tbl}(1,`d')=("${${tbl}_ctitle_`i'}"), halign(center) colspan(3)
di "${tbl}_${ctitle_`i'b}"
putdocx table ${tbl}(2,`d')=("${${tbl}_ctitle_`i'b}"), halign(center) colspan(3)
local ++d
}
local d=2
forv i=1/`c' {
// Months since treatment
putdocx table ${tbl}(3,`d')=("${${tbl}_months`i'}"), halign(center)
// Control means
local ${tbl}_cm`i' : display %3.2f (`${tbl}_cm`i'')
putdocx table ${tbl}($bottom1,`d')=("`${tbl}_cm`i''"), halign(center)
// Strata controls
putdocx table ${tbl}($bottom2,`d')=("Yes"), halign(center)
// Lagged dep. var
putdocx table ${tbl}($bottom3,`d')=("Yes"), halign(center)
local ++d
}
// Specify font for whole table
putdocx table ${tbl}(.,.), font("Times New Roman", 10)
// Horizontal lines
putdocx table ${tbl}(.,.), border(top, nil) border(left, nil) border(right, nil) border(bottom, nil)
putdocx table ${tbl}(1,.), border(top, double)
forv i=2/`d' {
putdocx table ${tbl}(2,`i'), border(bottom, single)
putdocx table ${tbl}(3,`i'), border(bottom, single)
}
putdocx table ${tbl}(4,.), border(bottom, single) // fully drawn bottom border after header
putdocx table ${tbl}(${end_body},.), border(bottom, single)
putdocx table ${tbl}(${bottom},.), border(bottom, single)
putdocx table ${tbl}(${bottom3},.), border(bottom, single)
// Vertical lines to mark different dependent variables
forv i=1/6 {
forv j=1/2 {
putdocx table ${tbl}(`j',`i'), border(right, dashed)
}
}
forv i=1(3)16 {
forv j=3/$bottom3 {
putdocx table ${tbl}(`j',`i'), border(right, dashed)
}
}
end
**# Bookmark #1: Contracts and social security
*** Load dataset
cd "$dofiles"
use 2_firm_regressions.dta, clear
**# Bookmark #Start writing document
putdocx clear
putdocx begin, pagesize(A4) font("Times New Roman") landscape margin(all, 1.5cm)
putdocx paragraph, style(Heading2)
putdocx text ("Firm-level results - detailed")
*** Define
global tbl det_empqual
global ttl_${tbl} "Employment quality"
global outcomes empquality_2 empquality_3 empquality_4 sh_aminwage_2 sh_aminwage_3 sh_aminwage_4 sh_wrcon_2 sh_wrcon_3 sh_wrcon_4 sh_sosec_2 sh_sosec_3 sh_sosec_4 sh_wrcon_emp_2 sh_wrcon_emp_3 sh_wrcon_emp_4 empretention_2 empretention_3 empretention_4 empturnover_outgoing_2 empturnover_outgoing_3 empturnover_outgoing_4 //
global notes_${tbl} "${notes} 6M/18M: 6 months/18 months post-treatment. P: pooled sample of two follow-up surveys."
global ${tbl}_ctitle_1 "Employment Quality"
global ${tbl}_ctitle_2 "> min. wage "
global ${tbl}_ctitle_3 "written contract"
global ${tbl}_ctitle_4 "social security"
global ${tbl}_ctitle_5 "Wrcon - emp"
global ${tbl}_ctitle_1b "(Index 0-1)"
global ${tbl}_ctitle_2b "(share)"
global ${tbl}_ctitle_3b "(share)"
global ${tbl}_ctitle_4b "(share)"
global ${tbl}_ctitle_5b "(share)"
global ${tbl}_months "Sample"
global ${tbl}_months1 "6M"
global ${tbl}_months2 "18M"
global ${tbl}_months3 "P"
global ${tbl}_months4 "6M"
global ${tbl}_months5 "18M"
global ${tbl}_months6 "P"
global ${tbl}_months7 "6M"
global ${tbl}_months8 "18M"
global ${tbl}_months9 "P"
global ${tbl}_months10 "6M"
global ${tbl}_months11 "18M"
global ${tbl}_months12 "P"
global ${tbl}_months13 "6M"
global ${tbl}_months14 "18M"
global ${tbl}_months15 "P"
*** Run
*putdocx pagebreak
itt_3regs
**# Bookmark #99: save word doc
cd "$writing/Tables"
putdocx save "results_firm_empqual_det.docx", replace
** Effects awarness
mlogit q1461 assignment $control i.wave i.ag_ano i.strata if wave == 2, base(1)
margins, dydx(assignment)
label define knowledge 1 "No knowledge" 2 "Moderate knowledge" 3 "High knowledge"
label values q1461 knowledge
marginsplot, ///
plotopts(lcolor(red) mcolor(red)) ///
ciopts(recast(rcap) lcolor(red)) ///
graphregion(color(white)) ///
bgcolor(white) ///
xlabel(1 "No knowledge" 2 "Moderate knowledge" 3 "High knowledge")

Comment