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