2015-09-09 36 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]宏**的其他部分中找到。 –