在Stata中标记参与回归的样本是数据分析中常见的需求,通常用于筛选、可视化或进一步分析。
一、使用系统变量 `_e(sample)` 标记参与回归的样本
Stata在执行回归分析后,会自动生成一个临时系统变量 `_e(sample)`,该变量会将参与回归的样本标记为 `1`,未参与的标记为 `0`。具体操作如下:
1. 执行回归分析
stata
示例:对因变量y和自变量x1、x2进行线性回归
regress y x1 x2
2. 生成样本标记变量
stata
生成新变量 `reg_sample`,标记参与回归的样本
gen reg_sample = _e(sample)
3. 验证标记结果
stata
查看标记变量的基本信息
sum reg_sample
可视化标记结果(可选)
hist reg_sample, title("回归样本标记分布") xtitle("reg_sample")
二、结合条件标记样本(进阶用法)
如果需要结合其他条件(如排除缺失值、异常值等)标记样本,可以在回归前或回归后添加筛选条件:
1. 回归前筛选样本并标记
stata
示例:排除x1缺失的样本后进行回归,并标记样本
regress y x1 x2 if !missing(x1)
gen reg_sample = _e(sample)
2. 回归后基于多个条件调整标记
stata
示例:先标记回归样本,再排除y值异常的样本
gen reg_sample = _e(sample)
replace reg_sample = 0 if y > 100 // 假设y>100为异常值
三、处理加权回归或复杂模型的样本标记
对于加权回归(如 `regress y x1 [pweight=w]`)或复杂模型(如logit、probit等),`_e(sample)` 的标记逻辑一致:
stata
加权回归样本标记
regress y x1 x2 [pweight=weight]
gen weighted_sample = _e(sample)
逻辑回归样本标记
logit y x1 x2
gen logit_sample = _e(sample)
四、批量标记多个回归的样本(循环用法)
如果需要对多个模型的样本进行标记,可以使用循环语句:
stata
示例:对不同模型的样本分别标记
local models "ols logit probit"
foreach m of local models {
if "`m'" == "ols" {
regress y x1 x2
}
else if "`m'" == "logit" {
logit y x1 x2
}
else if "`m'" == "probit" {
probit y x1 x2
}
gen sample_`m' = _e(sample)
}
五、注意事项
1.`_e(sample)` 的时效性
`_e(sample)` 仅在回归命令执行后有效,若执行其他命令(如 `summarize`),系统会清除该临时变量。建议及时生成标记变量并保存。
2.缺失值与样本排除
Stata默认会排除包含缺失值的样本(除非使用 `robust` 等选项),`_e(sample)` 会自动反映这一排除逻辑。
3.与其他标记变量的结合
若已有其他标记变量(如 `treatment=1` 表示处理组),可通过逻辑运算组合标记:
stata
gen treated_reg_sample = reg_sample & treatment // 同时满足回归样本和处理组
六、应用场景示例
1.可视化回归样本分布
stata
scatter y x1 if reg_sample==1, title("参与回归的样本")
2.计算回归样本的描述性统计
stata
sum y x1 x2 if reg_sample==1, detail
3.保存标记样本到新数据集
stata
keep if reg_sample==1
save "regression_sample.dta", replace