今天给大家分享使用 Python 测算企业专利技术集中度(TS)、搜索广度(SB)、搜索深度(SD)及知识整合能力(KIC)的方法。该方法参考自王海花等(2026)《专精特新企业技术专业化与关键核心技术突破》。
附件中提供了该参考文献的 PDF 文件,感兴趣的小伙伴可以阅读原文。
指标来源与计算原理
这四个指标均基于发明专利计算(不含实用新型和外观设计),并采用 5 年滚动窗口[t−4,t] 构建企业知识库。也就是说,对于观测年份 t,回溯 t−4 至 t 年共 5 年的专利数据进行计算。
技术集中度(TS — Technological Specialization)
技术集中度衡量的是企业技术活动的专业化 vs 多元化程度。核心思想是:如果企业的发明专利高度集中在少数 IPC 技术领域,说明技术专业化程度高;如果分散在众多不同领域,说明技术多元化。
计算分为两步:
![]()
搜索广度(SB — Search Breadth)
搜索广度衡量企业对新知识探索的程度。核心思想是:如果企业当年引用的专利中大部分是”新发现”的知识(之前没有引用过的),说明企业正在广泛搜索新知识领域。
![]()
其中:
- total_citationsit:企业 i 在第 t 年引用的所有专利总数
- new_citationsit:企业 i 在 t 年引用的、不在近 5 年知识库中的专利数量
- 知识库定义:企业在 [t−4,t−1] 期间(不含当年)已经引用过的所有被引专利的集合
SB 值越大(越接近 1),说明企业正在广泛搜索新知识领域。
搜索深度(SD — Search Depth)
搜索深度衡量企业在已有知识领域中的深化程度。核心思想是:如果企业对同一批专利反复引用,说明企业在特定知识领域持续深耕。
![]()
其中,分子是近 5 年窗口 [t−4,t] 内所有被引专利的重复引用次数之总和。
SD 值越大,说明企业对特定知识的挖掘越深入。SB 和 SD 是一对互补指标:SB 衡量”横向拓展”(广度),SD 衡量”纵向深化”(深度)。
知识整合能力(KIC — Knowledge Integration Capability)
知识整合能力反映企业融合多学科知识、进行交叉创新的能力。度量方式为:5 年窗口内,企业涉及的不同 IPC 前 4 位技术类别的去重计数。
![]()
KIC 值越大,说明企业跨越了更多不同的技术领域进行创新,跨领域知识整合能力越强。
四个指标对照
| 指标 | 英文 | 公式核心 | 值越大意味着 | 数据基础 |
|---|---|---|---|---|
| 技术集中度 | TS | σ(Pro) / μ(Pro) | 技术越分散 | IPC 分类号 |
| 搜索广度 | SB | new_cit / total_cit | 探索越广泛 | 引证专利 |
| 搜索深度 | SD | Σrep / total_cit | 挖掘越深入 | 引证专利 |
| 知识整合能力 | KIC | count_distinct(IPC4) | 跨领域整合越强 | IPC 分类号 |
Python 环境配置
本课程使用 Python 的 pandas 和 numpy 包进行计算。为了方便不同操作系统的用户,推荐使用 R 语言的 reticulate 包来管理 Python 虚拟环境,macOS / Windows / Linux 操作完全一致。
在 R 控制台依次执行以下代码即可完成配置:
用默认的 Python 环境也完全 OK,这里仅仅是为了避免环境冲突。
# 1. 安装 reticulate 包(仅需一次) |
在 RMarkdown 中,可以在 setup 代码块中激活虚拟环境,后续的 Python 代码块将自动使用该环境:
library(reticulate) |
数据准备
本课程使用的演示数据为 2010~2012 年上市公司与专利数据匹配结果(3 年共约 30 万行),其中包含:
- 上市公司与专利数据匹配结果:包含专利的 IPC 分类号、引证专利等字段
- 专利引用与被引用信息:用于 SB 和 SD 的计算
这两个数据可以从下面获取:
1985~2024 年上市公司与专利数据匹配结果(版本3, 含申请、授权信息):https://rstata.duanshu.com/#/brief/course/04100321f88b411f90429be934934bff
1985~2024 的专利引用与被引用信息及次数统计:https://rstata.duanshu.com/#/brief/course/de4968acb01047b3801c200e9cf7ed41
首先读取数据:
import pandas as pd |
数据去重
专利数据中可能存在重复记录,需要在每家公司内部(企业层面)分别去重。这是因为存在多个公司共同申请同一专利的情况——例如公司 A 和公司 B 联合申请了一项专利,在匹配结果中会分别产生两条记录(同一专利号对应不同公司)。如果跨公司全局去重,会错误地删除其他公司共同申请的专利记录。
因此去重必须加入公司标识符(股票代码),分两轮执行:
- 第一轮:按 股票代码 + 年份 + 公开公告号_clean 去重
- 第二轮:按 股票代码 + 年份 + 申请号 去重
# Step 1: 清洗公开公告号(去掉末尾字母,如 CN101862134A → CN101862134) |
技术集中度(TS)的计算
对于每家企业的每个观测年 t,使用 [t−4,t] 窗口内的发明专利计算:
# 此处代码需下载讲义材料查看~ |
上述代码中,calc_ts() 函数首先获取该企业所有的观测年份,然后对每个年份 t,筛选 [t−4,t] 窗口内的发明专利,按 IPC 前 4 位分组统计专利数,计算各组占比后得到变异系数。np.std(pro, ddof=1) 使用 ddof=1 参数与 R 的 sd() 函数保持一致(样本标准差,分母为 n−1)。
group_apply() 是一个辅助函数,用于对每家企业分别计算后正确恢复分组键列(股票代码)。这是因为 pandas 的 groupby().apply() 在新版本中使用 include_groups=False 后,分组列不在返回的 DataFrame 中,需要手动恢复。
搜索广度(SB)的计算
搜索广度的计算需要用到引证专利字段(即企业专利引用了哪些在先专利)。该字段通常是以分号分隔的字符串,需要先展开为逐条记录:
# 展开引证专利字段(一行可能含多个被引专利,用 "; " 分隔) |
展开后,对每家企业构建 5 年滚动知识库,判断当年引用是否为”新知识”:
# 此处代码需下载讲义材料查看~ |
注意知识库的窗口范围是 [t−4,t−1](不含当年),这是为了确保”新知识”的判定有意义——只有当年引用的专利不在过去 5 年的引用库中时,才被认为是新的知识探索。
搜索深度(SD)的计算
搜索深度考察的是企业在 5 年窗口内对被引专利的重复引用程度:
# 此处代码需下载讲义材料查看~ |
SD 的分母与 SB 相同(当年总引用数),分子是近 5 年内所有被引专利的重复引用次数之总和。例如,某被引专利在 5 年内被该企业引用了 3 次,那么它对分子的贡献就是 3。
知识整合能力(KIC)的计算
KIC 的计算最为简洁,直接统计 5 年窗口内企业涉及的不重复 IPC 前 4 位类别数:
# 此处代码需下载讲义材料查看~ |
KIC 与 TS 的区别在于:TS 反映的是专利数量在各技术领域的分布均衡性(变异系数),而 KIC 反映的是企业跨越的绝对技术领域数量(去重计数)。
合并四个指标
将四个指标按企业-年度进行左连接合并:
# 以 TS 的企业-年度为基准(发明专利存在的企业年份) |
# 描述性统计 |
# 保存结果 |
输出的面板数据包含以下变量:股票代码、年份、TS、n_patents_ts(窗口内发明专利数)、SB、total_citations(当年总引用次数)、new_citations(新知识引用次数)、SD、KIC。
如果需要全部数据,使用全部年份的上市公司专利数据及专利引用信息数据即可计算。
关联数据推荐
1985~2024 年上市公司与专利数据匹配结果(版本3, 含申请、授权信息):https://rstata.duanshu.com/#/brief/course/04100321f88b411f90429be934934bff
1985~2024 的专利引用与被引用信息及次数统计:https://rstata.duanshu.com/#/brief/course/de4968acb01047b3801c200e9cf7ed41
点击这里跳转到 RStata 短书平台获取附件:名师讲堂|使用 Python 测算上市公司专利技术集中度、搜索广度、搜索深度及知识整合能力
评论