给定时间内企业的Herfindahl指数

2024-04-29 05:02:17 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据帧:

    patnum  permno  class   year    
0   1706123 10006   251 1921
1   1579247 10006   72  1922    
2   1579225 10006   137 1922    
3   1605442 10006   164 1922    
4   1699538 10006   198 1922    
5   1579325 10006   72  1923    
6   1579234 10006   74  1923    
7   1579268 10006   105 1923    
8   1665388 10006   105 1923    
9   1748147 10006   105 1923    
patnum: patent unique number
permno: firm identifier
class: patent class
year: patent application year

我想计算一年内每家公司的赫芬达尔指数。你知道吗

例如,公司10006申请了4个不同专利类别的4项专利。因此,企业10006的赫芬达尔指数应为0.25 ((1/4)^2 + (1/4)^2 + (1/4)^2 + (1/4)^2)。1923年的企业赫芬达尔指数应该是0.44 ((1/5)^2 + (1/5)^2 + (3/5)^2)。指数越高,公司在专利类别上的多样化程度就越低。你知道吗

还有两件事需要改变: 专利额:在新的框架下,专利额需要按每家公司每年计算。你知道吗

我的预期数据帧:

    patent count   permno   HHI         year    
0   1              10006    1           1921
1   4              10006    0.25        1922    
2   5              10006    0.44        1923    

注意:我在Jupyter笔记本中使用Python。你知道吗

提前谢谢。感谢您的帮助。你知道吗


Tags: 数据number公司指数类别year专利企业
1条回答
网友
1楼 · 发布于 2024-04-29 05:02:17

使用numpy.uniquenumpy.square

import numpy as np

def hhi(series):
    _, cnt = np.unique(series, return_counts=True)
    return np.square(cnt/cnt.sum()).sum()    

new_df = df.groupby('year').agg({'patnum': 'count', 'class': hhi})
print(new_df)

输出:

      class  patnum
year               
1921   1.00       1
1922   0.25       4
1923   0.44       5

相关问题 更多 >