Stata生成实验受试者首期贡献二进制ID并全期保留的实现问题
Stata固定受试者首轮贡献标识的代码调整方案
你原有代码的问题是仅对period==1的观测值做了赋值,其余轮次对应行的firstroundcont会保持初始赋值的0,无法将首轮身份同步到同一受试者的所有轮次。
可用实现代码
你可以通过分组取受试者首轮值的方式实现需求,默认以sessionID+subject作为受试者唯一识别维度,避免不同实验场次的受试者ID重复:
bysort sessionID subject (period): gen firstroundcont = (contribution[1] > 0)
代码逻辑说明
bysort sessionID subject (period):先按实验场次、受试者ID分组,每组内按轮次升序排序,保证每个受试者的第一条观测就是首轮数据contribution[1]:调取每个受试者组内第一条观测(即首轮)的贡献值做判断- 生成的二进制标识会自动应用到该受试者的所有轮次观测中,全程保持固定不变
如果需要和你原有书写逻辑对齐,也可以拆分为两步写,执行效果完全一致:
gen firstroundcont = 0 bysort sessionID subject (period): replace firstroundcont = 1 if contribution[1] > 0
注意事项
如果你的受试者ID是全局唯一、不需要区分实验场次的话,删除bysort语句里的sessionID即可,仅保留bysort subject (period)做分组。
内容的提问来源于stack exchange,提问作者Simon Lunn Haubro
相关产品推荐
相关产品推荐

