Stata绘制分组散点图时如何按x聚合展示y的均值?
解决方案
完全不需要手动计算40次均值,Stata有内置方法可以直接实现你的需求,两种常用方案如下:
- 方案1:直接一步绘图,无需修改原始数据集
用twoway mean命令即可,命令内部会自动按x、z分组计算y的均值后生成散点图,示例代码如下:
twoway mean y x if z==0 || mean y x if z==1, legend(label(1 "z=0") label(2 "z=1")) ytitle("y均值")
如果你的x是连续变量,想要按自定义数量的分箱计算均值,增加bin(#)参数即可,比如要分20个箱就写成:
twoway mean y x if z==0, bin(20) || mean y x if z==1, bin(20) legend(label(1 "z=0") label(2 "z=1")) ytitle("y均值")
- 方案2:先批量聚合再绘图(适合需要后续复用均值数据的场景)
用collapse命令可以批量生成所有x-z分组的y均值,不需要手动逐个计算,代码如下:
* 建议先保存原始数据集,避免聚合后原数据被覆盖 save "原始数据备份.dta", replace * 按x、z分组计算y均值,执行后原数据集会被替换为聚合后的数据集 collapse (mean) y, by(x z) * 用聚合后的数据绘图 scatter y x if z==0 || scatter y x if z==1, legend(label(1 "z=0") label(2 "z=1")) ytitle("y均值")
注意:如果你的x取值存在空值,可在所有命令前加
if !missing(x,z,y)过滤缺失样本,避免聚合结果出现偏差。
内容的提问来源于stack exchange,提问作者Martan
相关产品推荐
相关产品推荐

