/* .do file for: Vikhrov and Loiseau-Aslanidi(2016). Stata tip: generation of string matrices using local macros. Mimeo */ clear all // Code for Table 1 on p.2 // foreach r in x y { forvalues c = 1(1)5 { local model_`r' `model_`r'' `r'`c' macro list _model_`r' } } // Code for Table 2 on p.3 // foreach r in x y { forvalues c = 1(1)3 { local lab_model_`r' `" `lab_model_`r'' `"lab of x`c'"' "' } local size_`r': list sizeof lab_model_`r' macro list _lab_model_`r' _size_`r' } // Code for Tble 3 on page 4 set obs 100 // <------ Simulate data for regression g y = rnormal() forvalues i = 1(1)3 { qui g x`i' = rnormal() } qui ds y, not // <--- Create a list of locals with models local initial_vector `r(varlist)' forvalues i = 1(1)`=2^3-1' { qui inbase 2 `i' local model = "`r(base)'" local size = length("`model'") forvalues j = 1(1)`size' { // <--- Match the binary to the variables local element = substr("`model'", `j', 1) if `element' == 1 { local model`i' `model`i'' `: word `=`size' - `j' + 1' of `initial_vector'' } } macro list _model`i' // <--- Show models and estimate reg y `model`i'' }