
作者:连玉君 (知乎 | 简书 | 码云) 连享会 最新专题 直

1. 问题背景
我们经常使用 generate
(后文简称 gen
) 命令提供的 group()
函数对某个变量进行分组,产生分组变量 gg,继而基于 gg 变量进行后续的分组回归分析。
例如,在公司金融中,常用如下代码产生融资约束的分组指标:
*-用公司规模衡量融资约束,分成三组
. bysort code: egen av_size = mean(size)
. sort av_size
. gen gg = group(3)
. gen FC = (gg==1) //小规模公司定义为 FC 组
. replace FC=. if gg==2 //丢弃中间组
. reg y x if FC==0
. est store m_FC
. reg y x if FC==1
. est store m_NFC
. esttab m_FC m_NFC
恐怖的事情就要发生了!
后续做分组回归时,你会发现:执行相同的代码,但两次得到的结果居然不同!
原因何在??
连享会 最新专题 直播
一个小例子
我先虚构一份数据,让各位了解 group()
函数的工作原理,搞明白这件事情后,上面的问题就迎刃而解了。
这份数据很简单,只有 4 行观察值。我们对变量 x 排序后再执行 gen g = group(2)
命令,以便将样本分成两组。为了测试分组结果是否唯一稳定,我进一步使用 tatstat
命令计算了两组的均值。
clear
input x y
3 13
2 10
1 1
2 8
end
sort x 由小到大排序
gen g = group(2) 等分两组