我是Stata和宏的新手。
我试图循环几个变量以从mlogit
命令生成估计值,然后将它们保存在数据集中。那部分运作良好。
我遇到的问题是一个分类变量,我需要将其拆分为虚拟变量:
global mypath "/Volumes/NO NAME/Dissertation/Data/AIM 2"
use "$mypath/AIM 2 DATA"
global SES "sesq2 sesq3 sesq4 sesq5"
/*regression*/
foreach xvar in age_median female marital ethnicity literacy $SES poor_health physical_median mental_median facility_fee time_clinic {
mlogit trauma_main `xvar', b(5) vce(cluster ea_id) rrr
parmest, saving("$mypath/multi_`xvar'.dta", replace)
}
我认为通过将SES
设置为全局变量,循环会将其视为一组变量,但我错了。代码循环遍历$SES
中的每个变量,所以我最终将每个虚拟变量分别回归到trauma_main
,这不是我想要的。
有没有办法“告诉”Stata将虚拟变量视为一个块?另外,我知道我可以做i.SES
并且使用它确实可以正常工作,但是使用的引用组不是我想要的那个。我已经用Google搜索了如何为i.var
之类的内容设置参考组,但我没有提出任何有用的信息,可能是因为我使用了错误的搜索字词。
提前感谢您的任何建议。
玛吉
答案 0 :(得分:1)
您无需将分类变量拆分为虚拟变量。您可以使用因子变量表示法(i.
)代替。这在help fvvarlist
中有记录。使用因子变量,参考类别的变化很简单。
这是一个例子。 site 变量有三个类别。默认情况下, site = 1 是分类变量的参考类别:
webuse sysdsn1,clear
foreach v in age male i.site {
mlogit确保`v'
}
使用ib
,您可以将参考类别设置为任何所需级别。如果您希望 site = 2 作为参考,则可以执行以下操作:
foreach v in age male ib2.site {
mlogit确保`v'
}
答案 1 :(得分:0)
Stata's documentation for the foreach
command表示如果没有全局宏,它将起作用,即
. foreach xvar in age_median female marital ethnicity literacy "sesq2 sesq3 sesq4 sesq5" poor_health physical_median mental_median facility_fee time_clinic {
如果您想使用全局宏执行此操作,则需要使用复合双引号来定义包含引号的宏:
. global SES `""sesq2 sesq3 sesq4 sesq5""'