【问题标题】:Mlogit macro with dummy variables带有虚拟变量的 Mlogit 宏
【发布时间】:2012-06-05 13:04:46
【问题描述】:

我是 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 之类的东西设置参考组,但我没有找到任何有用的东西,可能是因为我使用了错误的搜索词。

提前感谢您的任何建议。

玛姬

【问题讨论】:

    标签: regression stata stata-macros


    【解决方案1】:

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

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

    webuse sysdsn1,清除

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

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

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

    【讨论】:

      【解决方案2】:

      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""'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 1970-01-01
        • 2018-11-16
        • 2019-07-22
        • 1970-01-01
        相关资源
        最近更新 更多