D7. HHI-赫芬达尔指数

整理: 胡世亮 (河海大学商学院)
邮箱:

在经济学领域,赫芬达尔指数具有非常广泛的应用。比如,在产业经济学领域,我们经常利用赫芬达尔指数来计算行业的集中度,或者在某一个行业内部竞争的程度;在微观经济学领域,我们也经常利用赫芬达尔指数来计算收入的不均等性。

1. 赫芬达尔指数 (HHI)简介

赫芬达尔指数(Herfindahl-Hirschman Index, HHI)是衡量市场集中度的一种常用指标,通常用于评估市场竞争程度。它反映了市场中各个参与者的市场份额分布情况,值越高意味着市场集中度越高,竞争越少,反之则说明市场竞争越激烈。

计算方法

赫芬达尔指数的计算公式如下:

\[\text{HHI} = \sum_{i=1}^N s_i^2 = (s_1^2 + s_2^2 + \dots + s_N^2)\]

其中: - \(N\) 表示市场中的参与者数量; - \(s_i\) 是第 \(i\) 个参与者的市场份额,通常以百分比表示(如 10% 为 0.10)。

当我们拥有每家公司的销售额数据 \(x_i\) 时,首先计算市场总规模 \(X = x_1 + x_2 + \dots + x_N\),进而计算每个企业的市场占有率 \(s_i = \dfrac{x_i}{X}\),然后将其带入 HHI 计算公式即可。

指数含义

  1. 市场集中度: 赫芬达尔指数的值介于 0 到 10,000 之间。如果市场中只有一个公司主导且占据 100% 的市场份额,那么赫芬达尔指数的值为 10,000,表示市场完全垄断。若市场中参与者众多且市场份额较为均匀,则赫芬达尔指数接近于 0,表示完全竞争。

  2. 竞争程度:

    • 当 HHI 值接近 10,000 时,市场呈现高度集中,竞争较弱;
    • 当 HHI 值低于 1,500 时,市场通常被认为是高度竞争的;
    • 当 HHI 值在 1,500 到 2,500 之间时,市场属于中等集中度。

示例

假设一个市场中有 4 家公司,它们的市场份额分别为 50%、30%、15% 和 5%。赫芬达尔指数的计算过程如下:

\[\text{HHI} = (0.50^2 + 0.30^2 + 0.15^2 + 0.05^2) = 0.365\]

为了得到 HHI 的标准值(0 到 10,000),通常将结果乘以 10,000:

\[\text{HHI} = 0.365 \times 10,000 = 3,650\]

这表明该市场有中等的市场集中度。

2. Stata 实操:手动计算 HHI

首先,我们可以采用 egen 命令提供的 pc 函数和 total 函数手动计算赫芬达尔指数 HHI。

首先,针对全样本,计算 “行业-年度” 层面的 HHI 指数。

这里,我们采用 1968 年美国年轻女性 (14-26岁)纵向调查数据集 nlswork.dta 进行演示。

webuse "nlswork.dta", clear
gen sale = ln_wage
    
sort   ind_code year
browse ind_code year sale
    
bysort ind_code year: egen pc_sale = pc(sale)
bysort ind_code year: egen hhi = total(pc_sale^2)

大家可以思考一下如下两个问题 (可以问问 ChatGPT 或 DeepSeek):

  • 如何计算 HHI5 , 即行业内销售额排名前五企业的 HHI ?
  • 如果部分行业中的公司数量非常少 (比如只有 2-3 家,甚至只有一家) 如何解决?

下面要介绍的 hhi5 命令可以很好地应对这两个问题。

3. 使用 hhi5 命令计算 HHI

更为便捷的方法是,我们直接采用连玉君老师编写的命令 hhi5 计算赫芬达尔指数 HHI。

由于 hhi5 命令是外部命令,需要采用ssc install 命令下载安装。

ssc install hhi5, replace

接下来,我们可以键入 help hhi5 查看一下 hhi5 命令的帮助。

help hhi5

hhi5 的基本语法

hhi5 varlist [if] [in], by(groupvar) 
     [ prefix(str) top(#) mimobs(#) 
       percentage outfile(str) 
       replace noexpand 
     ]

其中,by(groupvar)hhi5 命令的必选项。下表为 hhi5 命令的选项解释。

选项 含义
by(groupvar) 设定分组变量,必选项
prefix(str) 设定新生成变量的前缀,默认为 hhi_
top(#) 设定采用每个分组内最高的 # 个值参与计算
mimobs(#) 设定参与计算的每个分组的最少观测值数量
percentage 设定采用百分数的形式
outfile(str) 设定将计算结果数据输出为 csv 格式的数据
replace 设定替换原变量
noexpand 设定严格采用 top(#) 选项或 mimobs(#) 选项限定后的子样本参与计算,默认是拓展为全样本

然后,我们还是采用数据集 nlswork.dta 举例演示。

use "nlswork.dta", clear
gen sale = ln_wage

(1) 采用行业-年度分组,并设定 percentage 选项

hhi5 sale, by(ind_code year) percentage //产生新变量: hhi_sale
br ind_code sale hhi_sale

(2) 采用每个分组中 sale 排名前 5 的观测值,并设定 prefix 选项

hhi5 sale, by(ind_code year) top(5) prefix(hhi5)
br ind_code year sale hhi*

(3) 在 (2) 的基础上,进一步设定每个分组中的观察值个数大于 2

hhi5 sale, by(ind_code year) top(5) prefix(hhi5_2) minobs(2) 
br ind_code year sale hhi*
*-Note: 注意第 242 行的变化

(4) 在 (2) 的基础上,进一步设定不扩充至 top5 以外的观察值

hhi5 sale, by(ind_code year) top(5) prefix(HHI) noexpand
br ind_code year hhi* HHI*

评述:

  • hhi5 可以一次性计算多个变量的 HHI 指数
  • 附加的 percentage 选项得到的 HHI 指数将放大 10000 倍

4. 扩展阅读