2015-09-09 42 views
0

这可能只是一个简短的语法问题。我有:Stata:编辑全局元素(其中包含变量列表)

clear all 
macro drop _all 
global variables var1 var2 

,我想这

我在其他地方产生
global means m_var1 m_var2 

。我们的目标是通过手不同规格使用在Mundlak回归两个全局(如reg depvar $variables $means并没有计算/包括意味着我的想法是沿着线的东西:

global means "m_`variables'" 

但简单地忽略。variables全球再次,比较遗憾的是R-想......

编辑:我的策略:我试图写它运行模型(Mundlak /张伯伦随机效应Logit模型的程序,请参见Wooldridges面板书第二版p 487)关于几个不同的变量列表并返回回归结果的图表,这应该这样做,我只需要改变t他全局/本地人在开始时指定这些变量。因此,我需要创建代码来创建全局变量的时间平均值,并在logit规范中使用这些变量和原始全局变量。

+0

你的代码最后一行似乎混淆了当地人和全球人之间的差异。 –

回答

2

我不相信你的总体策略是好的,但我没有关于你面临的问题的信息,所以我不会评论更多。

我会指出,使用local s是一个更好的主意,如果你能抽出global秒,你可以使用一个循环重新定义宏的内容:

clear all 
set more off 

local variables var1 var2 

// original 
local means "m_`variables'" 

// loop 
local means2 
foreach v of local variables { 
    local means2 `means2' m_`v' 
} 

display "`means'" 
display "`means2'" 
+0

非常感谢。关于我的策略:我也有这样的感觉,即我从解决方法到解决方法混乱。也许我的编辑有帮助?你能否详细说明或提供一个资料,说明为什么当地人更好?如果我包含'macro drop _all',我可以一次使用一个代码块,并且使用全局变量没有更多的缺点,对吗? –

+0

'本地'一旦程序结束运行就消失了,所以你不会无意中监视你的名字空间。使用'global's可能会产生问题 ,这些问题比使用局部“local”产生的问题更难以检测和解决。 Stata的建议是:“全局宏很少被使用,当它们被使用时,它通常用于程序之间的通信。你应该使用一个局部宏就足够的全局宏。”来源: ** [U] 18.3.10高级全局宏操作**。更多信息可以是 在** [U] 18.3宏**和** [P]宏**的其他部分中找到。 –