如何为回归循环编写本地宏



我正在Stata a中编程一个回归循环,以计算具有不同因变量以及一些常量和一些不同自变量的多个模型。这是一个示例:

regress y1code1 relcode1 melcode1
regress y2code1 relcode1 melcode1
regress y3code1 relcode1 melcode1
regress y1code2 relcode2 melcode2
regress y2code2 relcode2 melcode2
regress y3code2 relcode2 melcode2
regress y1code3 relcode3 melcode3
regress y2code3 relcode3 melcode3
regress y3code3 relcode3 melcode3
regress y1code4 relcode4 melcode4
regress y2code4 relcode4 melcode4
regress y3code4 relcode4 melcode4

对于其他 30 个未按顺序排序的代码**,重复该结构(在标签中,第一个从 1 到 24,另一个从 69 到 74(

对于上述三个因变量,仅回归单个代码,有什么建议吗?

我不会尝试为您提到的不规则名称编写代码。为了您的最大利益,您似乎应该rename一致的逻辑模式。

您的代码块

regress y1code1 relcode1 melcode1
regress y2code1 relcode1 melcode1
regress y3code1 relcode1 melcode1
regress y1code2 relcode2 melcode2
regress y2code2 relcode2 melcode2
regress y3code2 relcode2 melcode2
regress y1code3 relcode3 melcode3
regress y2code3 relcode3 melcode3
regress y3code3 relcode3 melcode3
regress y1code4 relcode4 melcode4
regress y2code4 relcode4 melcode4
regress y3code4 relcode4 melcode4

可以重写

forval j = 1/4 { 
local x relcode`j' melcode`j' 
forval k = 1/3 { 
regress y`k'code`j' `x' 
} 
}

作为代码的测试(没有我可以使用的数据示例(,我运行了这个:

forval j = 1/4 { 
local x relcode`j' melcode`j' 
forval k = 1/3 { 
display "regress y`k'code`j' `x'"  
} 
}

有了这个结果:

regress y1code1 relcode1 melcode1
regress y2code1 relcode1 melcode1
regress y3code1 relcode1 melcode1
regress y1code2 relcode2 melcode2
regress y2code2 relcode2 melcode2
regress y3code2 relcode2 melcode2
regress y1code3 relcode3 melcode3
regress y2code3 relcode3 melcode3
regress y3code3 relcode3 melcode3
regress y1code4 relcode4 melcode4
regress y2code4 relcode4 melcode4
regress y3code4 relcode4 melcode4

最新更新