group by order by顺序_Stata: gen 命令中的 group() 函数的潜在风险

v2-cb6ea9bb6490bb00a9db7c7bb8d27cbc_1440w.jpg?source=172ae18b
作者:连玉君 (知乎 | 简书 | 码云) 连享会最新专题

v2-92c3af9e4e9b5fecfe0846f2dcf1e032_b.jpg

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)   等分两组
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值