代码拉取完成,页面将自动刷新
/* - id=2: 处理效应为2
- id=3: 处理效应为4
- id=4: 处理效应为3
- id=5: 处理效应为5
- id=6: 处理效应为1
- 这展示了处理效应的异质性,更符合现实情况
*/
clear // 清除内存中的所有数据
local units = 3 // 定义局部宏变量units为3,表示3个单位/个体
local start = 1 // 定义局部宏变量start为1,表示时间序列的起始点
local end = 10 // 定义局部宏变量end为10,表示时间序列的结束点
local time = `end' - `start' + 1 // 计算时间跨度,从start到end共有多少个时间点
local obsv = `units' * `time' // 计算总观测数,即单位数乘以时间点数
set obs `obsv' // 设置数据集的观测数量
egen id = seq(), b(`time') // 生成面板ID变量,每个ID重复time次
egen t = seq(), f(`start') t(`end') // 生成时间变量,从start到end
lab var id "Panel variable" // 为id变量添加标签,表示这是面板变量
lab var t "Time variable" // 为t变量添加标签,表示这是时间变量
sort id t // 按id和t排序数据
xtset id t // 声明数据为面板数据,id为面板变量,t为时间变量
gen D = 0 // 生成处理变量D,初始值全部设为0
replace D = 1 if id>=2 & t>=5 // 当id>=2且t>=5时,将D设为1,表示这些观测接受了处理
lab var D "Treated" // 为D变量添加标签,表示这是处理变量
cap drop Y // 如果Y变量已存在则删除它
gen Y = 0 // 生成结果变量Y,初始值全部设为0
replace Y = cond(D==1, 2, 0) if id==2 // 对id=2的单位,如果D=1则Y=2,否则Y=0
replace Y = cond(D==1, 4, 0) if id==3 // 对id=3的单位,如果D=1则Y=4,否则Y=0
lab var Y "Outcome variable" // 为Y变量添加标签,表示这是结果变量
twoway ///
(connected Y t if id==1) ///
(connected Y t if id==2) ///
(connected Y t if id==3) ///
, ///
xline(4.5) ///
xlabel(1(1)10) ///
legend(order(1 "id=1" 2 "id=2" 3 "id=3"))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。