Stata高效操作:如何用一行代码实现500/500完美随机分组
简洁实现Stata完美平衡随机分组(500处理组/500控制组)
方案1:两行高效代码(可读性优先)
gen rand = runiform() gen treatment = rank(rand) <= 500
方案2:一行紧凑代码(极简优先)
gen treatment = cond(rank(runiform()) <= 500, 1, 0)
方案说明
- 两种方案均通过Stata内置的
rank()函数对随机数排序,直接取前500个样本标记为处理组(1),剩余样本为控制组(0),严格保证500/500的样本平衡,且rank()函数执行效率极高,比手动汇总中位数的方法更高效。 - 对比原方案:
- 原一行代码依赖随机数的均匀性,无法严格保证分组平衡,样本量较小时偏差更明显;
- 原三行代码的中位数判断法虽能实现平衡,但多了汇总步骤,代码冗余且效率略低。
内容的提问来源于stack exchange,提问作者dykaplan
相关产品推荐
相关产品推荐

