xtile 下载_Stata: gen 命令中的 group() 函数的潜在风险

本文揭示了Stata中使用`gen`命令的`group()`函数进行数据分组时可能出现的不稳定性问题,特别是在变量有重复值时。通过示例解释了`group()`函数的工作原理,指出`sort`命令未加`stable`选项可能导致分组结果随机变化。解决方案包括避免使用`group()`函数处理重复值多的变量,以及考虑使用`xtile`或`quantiles`命令基于分位数进行分组。
摘要由CSDN通过智能技术生成

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) \\ 等分两组

tabstat x y, by(g) f(%3.1f)

sort g x y

list, sepby(g) noobs

第一轮执行的结果如下:

. tabstat x y, by(g) f(%3.1f)

Summary statistics: mean

by categories of: g

g | x y

---------+--------------------

1 | 1.5 5.5

2 | 2.5 10.5

---------+--------------------

Total |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值