Stata 在编写新的估算命令时,如何从因子运算符获取因子值名称?

Stata 在编写新的估算命令时,如何从因子运算符获取因子值名称?,stata,Stata,Stata有一些内置操作符,以便于在估计命令的上下文中使用因子变量和交互。例如,假设有两个因子变量名为sex(男性/女性)和arm(治疗/控制),则执行以下命令: . regress outcome sex##arm 在输出中生成指标变量的估计值: ------------------------------------------------------------------------------ ln_wage | Coef. Std. Err. t

Stata有一些内置操作符,以便于在估计命令的上下文中使用因子变量和交互。例如,假设有两个因子变量名为
sex
(男性/女性)和
arm
(治疗/控制),则执行以下命令:

. regress outcome sex##arm
在输出中生成指标变量的估计值:

------------------------------------------------------------------------------
     ln_wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         sex | 
     female  | ...
             | 
         arm |  
    control  | ...
             |
     sex#arm |
femal#contr  | ...
             |
       _cons | ...
------------------------------------------------------------------------------
##
操作符还将用于三方交互,如
性###手臂#组
。此外,
ib
或同义
b
运算符提供了一种方法,用于指定每个因子变量的哪个基值将用作参考类别


如果我正在编写一个新的估算命令
MyReg
,是否有语法或解析工具允许调用
MyReg-outcome-sex##arm
来访问这些因子名称/因子值名称(出现在上表的左栏)不必为非平凡的Stata因子变量运算符集编写自己的解析器?

我不能完全确定我是否完全理解您的想法,但下面是一个示例:

/* (1) Define MyReg */
capture program drop MyReg

program define MyReg, eclass
    version 14.2
    syntax varlist(min=1 fv)

    /* do the regression */ 
    regress `varlist'

    /* pull out the column names from the coefficient matrix */ 
    local fvnames : colfullnames e(b)

    /* drop omitted categories from column names list */ 
    foreach var of local fvnames {
            _ms_parse_parts `var'
            if !`r(omit)' {
                local fvlist `fvlist' `var'
            }   
        }

    /* e-return the names */    
    ereturn local fvlist `fvlist'

end;

/* (2) An Example */
sysuse auto
MyReg price i.foreign##c.weight
display "Left Column Contents: " e(fvlist)

还有一个关于程序员有用的因子变量命令的常见问题解答。

我不完全确定我是否完全理解您的想法,但这里有一个例子可以帮助您走这条路:

/* (1) Define MyReg */
capture program drop MyReg

program define MyReg, eclass
    version 14.2
    syntax varlist(min=1 fv)

    /* do the regression */ 
    regress `varlist'

    /* pull out the column names from the coefficient matrix */ 
    local fvnames : colfullnames e(b)

    /* drop omitted categories from column names list */ 
    foreach var of local fvnames {
            _ms_parse_parts `var'
            if !`r(omit)' {
                local fvlist `fvlist' `var'
            }   
        }

    /* e-return the names */    
    ereturn local fvlist `fvlist'

end;

/* (2) An Example */
sysuse auto
MyReg price i.foreign##c.weight
display "Left Column Contents: " e(fvlist)

还有一个关于程序员有用的因子变量命令的常见问题解答。

+1谢谢!这几乎是完美的,因为我可以得到自己的方式休息。(剩下的部分只是查找与e(fvlist)中返回的数字前缀对应的因子值标签)。谢谢你的FAQ链接。你可能想看看estout是怎么做的,并复制它。+1谢谢!这几乎是完美的,因为我可以得到自己的方式休息。(剩下的部分只是查找与e(fvlist)中返回的数字前缀对应的因子值标签)。谢谢你的FAQ链接。你可能想看看estout做了什么,然后复制它。