1

我是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并且使用它确实可以正常工作,但是使用的参考组不是我想要的。我已经用谷歌搜索了如何为类似的东西设置参考组i.var,但我没有找到任何有用的东西,可能是因为我使用了错误的搜索词。

提前感谢您的任何建议。

劣质煤

4

2 回答 2

1

您不需要将分类变量拆分为虚拟变量。您可以改用因子变量表示法 ( i.)。这记录在help fvvarlist. 使用因子变量,参考类别的更改很简单。

这是一个例子。站点变量具有三个类别。默认情况下, site = 1是分类变量的参考类别:

webuse sysdsn1,清除

foreach v 年龄男性 i.site {
mlogit insure `v'
}

您可以将ib参考类别设置为任何所需的级别。如果您希望site = 2作为参考,您可以执行以下操作:

foreach v 年龄男性 ib2.site {
mlogit insure `v'
}

于 2012-06-05T13:44:47.600 回答
0

foreach该命令的 Stata 文档表明它可以在没有全局宏的情况下工作,即

. 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""'
于 2012-06-05T13:33:24.000 回答