在 Stata 中进行多期DID分析时,平行趋势检验是关键步骤之一。如果您在平行趋势检验中 **drop 掉前一期(例如 `time=-1`)** 的处理效应,但仍希望在图中对该点进行标注,可以通过以下方法实现。具体操作包括标记被删除的点,并将其在图中用特定的符号或文字进行可视化。
以下是完整的实现步骤:
---
### **1. 数据准备**
假设您已经基于多期DID估计出了时间点对应的处理效应及置信区间,并存储在一个数据集中。例如,数据可能如下:
| `time` | `coef` | `ci_low` | `ci_high` |
|--------|--------|----------|-----------|
| -3 | 0.1 | -0.05 | 0.25 |
| -2 | 0.05 | -0.1 | 0.15 |
| -1 | . | . | . | *(被 drop 的点)*
| 0 | 0.2 | 0.1 | 0.3 |
| 1 | 0.3 | 0.2 | 0.4 |
| 2 | 0.4 | 0.3 | 0.5 |
其中:
- `time` 是时间点。
- `coef` 是处理效应系数。
- `ci_low` 和 `ci_high` 分别是置信区间的下界和上界。
- `time=-1` 是前一期时间点,已在分析中被 drop 掉。
---
### **2. 绘制基础平行趋势图**
使用 `twoway` 绘制有效时间点的处理效应和置信区间。
#### 绘制处理效应和置信区间:
```stata
twoway (rcap ci_low ci_high time) /// 置信区间
(scatter coef time, msymbol(O)) /// 处理效应点
```
---
### **3. 标注被 drop 的点**
在图中标注被 drop 的点,可以通过以下方法:
#### **
(1) 创建一个标记 drop 点的新变量**
为被 drop 的时间点(例如 `time=-1`)创建一个数据点,用于标注:
```stata
gen dropped_point = 0 if time == -1
```
- `dropped_point` 为新变量,其值为 0(或其他默认值),被 drop 的点会显示在 x 轴(`time=-1`)上。
若需要为被 drop 的点添加特殊的文字标注:
```stata
gen dropped_label = "Dropped" if time == -1
```
#### **
(2) 在图中添加点和标注**
将被 drop 的点添加到原图中,并用文字说明标记:
```stata
twoway (rcap ci_low ci_high time) /// 置信区间
(scatter coef time, msymbol(O)) /// 处理效应点
(scatter dropped_point time, msymbol(D) mcolor(red)) /// 标记 drop 的点
(scatteri 0 -1, mlabel(dropped_label) mlabsize(small) mlabcolor(red)) /// 添加文字标注
```
- `scatter dropped_point time`:用红色的符号(例如 `D`)标记被 drop 的点。
- `scatteri`:手动添加文字标记。
---
### **4. 完整实现代码**
以下是完整的 Stata 示例代码:
```stata
* 示例数据
clear
input time coef ci_low ci_high
-3 0.1 -0.05 0.25
-2 0.05 -0.1 0.15
-1 . . . // 前一期被 drop
0 0.2 0.1 0.3
1 0.3 0.2 0.4
2 0.4 0.3 0.5
end
* 创建被 drop 点的标记变量
gen dropped_point = 0 if time == -1
gen dropped_label = "Dropped" if time == -1
* 绘制图表
twoway (rcap ci_low ci_high time) /// 置信区间
(scatter coef time, msymbol(O)) /// 有效处理效应点
(scatter dropped_point time, msymbol(D) mcolor(red)) /// 红色标记被 drop 的点
(scatteri 0 -1, mlabel(dropped_label) mlabsize(small) mlabcolor(red)) /// 添加文字说明
```
运行上述代码后,您将获得一张图表,其中:
- 有效时间点的处理效应用圆圈表示。
- 被 drop 的时间点(如 `time=-1`)用红色符号 `D` 标记。
- 图中显示文字说明 "Dropped"。
---
### **5. 高级改进**
如果需要进一步优化图表设计,可以尝试以下方法:
#### **
(1) 添加网格线和参考线**
添加辅助线(如 x 轴的基准线)以便于解释:
```stata
twoway (rcap ci_low ci_high time) ///
(scatter coef time, msymbol(O)) ///
(scatter dropped_point time, msymbol(D) mcolor(red)) ///
(scatteri 0 -1, mlabel(dropped_label) mlabsize(small) mlabcolor(red)) ///
, yline(0, lstyle(dash)) /// 添加水平基准线
xlabel(-3
(1)
2) ylabel(-0.2(0.1)0.5)
```
#### **
(2) 调整点的颜色和大小**
通过 `msymbol()` 和 `mcolor()` 自定义点的样式:
- `msymbol(O)`:定义圆圈样式。
- `mcolor(blue)`:定义点的颜色。
例如:
```stata
scatter coef time, msymbol(O) mcolor(blue)
```
#### **
(3) 自动调整文字位置**
如果需要自动调整标注文字的相对位置,可以使用 `mlabposition()`。
```stata
scatteri 0 -1, mlabel(dropped_label) mlabposition
(12)
```
---
### **6. 输出效果**
最终图表:
- 有效时间点显示处理效应及其置信区间。
- 被 drop 点(如 `time=-1`)用红点标记,并附有文字说明 "Dropped"。
- 图表清晰标识了每个时间点的处理效应和特殊处理的时间点。
---


雷达卡


京公网安备 11010802022788号







