名师讲堂|使用 Stata 测算上市公司专利技术集中度、搜索广度、搜索深度及知识整合能力

今天给大家分享使用 Stata 测算企业专利技术集中度(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 分类号

数据准备

本课程使用的演示数据为 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

首先读取数据,并进行变量重命名:

clear all
set more off
set maxvar 10000

use "2010~2012年上市公司与专利数据匹配结果.dta", clear

*- 重命名7个关键列(中文 → 英文)
rename 股票代码 stk_cd
rename 申请号 app_no
rename 专利类型 pat_type
rename IPC ipc_raw
rename 年份 year
rename 公开公告号 pub_no
rename 引证专利 cit_pat

*- 只保留需要的列
keep stk_cd app_no pat_type ipc_raw year pub_no cit_pat

数据清洗与去重

专利数据中可能存在重复记录,需要在每家公司内部(企业层面)分别去重。这是因为存在多个公司共同申请同一专利的情况——例如公司 A 和公司 B 联合申请了一项专利,在匹配结果中会分别产生两条记录(同一专利号对应不同公司)。如果跨公司全局去重,会错误地删除其他公司共同申请的专利记录。

因此去重必须加入公司标识符(stk_cd),分两轮执行:

  1. 第一轮:按 stk_cd + year + pub_no_clean 去重
  2. 第二轮:按 stk_cd + year + app_no 去重
*- Step1: 公开公告号去掉末尾字母(如 CN101862134A → CN101862134)
replace pub_no = ustrregexs(1) if ustrregexm(pub_no, "(.*)[A-Za-z]$")

*- Step2: 股票代码+年份+公开公告号 去重(企业层面)
duplicates drop stk_cd year pub_no, force

*- Step3: 股票代码+年份+申请号 去重(企业层面)
duplicates drop stk_cd year app_no, force

*- Step4: 筛选发明专利(TS/SB/SD/KIC 均只用发明专利)
keep if ustrregexm(pat_type, "发明")

*- 展开 IPC 字段(分号分隔的多个 IPC 分类号)并提取前4位
*- IPC 字段为分号分隔的多个 IPC 分类号,一个专利可能属于多个 IPC 分类
replace ipc_raw = ustrregexra(ipc_raw, "\s*;\s*", ";")
replace ipc_raw = ustrtrim(ipc_raw)

*- 清洗:去掉IPC子分类部分(如 G06F 3/00 → G06F)
replace ipc_raw = ustrregexra(ipc_raw, "/.*", "")

split ipc_raw, parse(";") gen(ip_)
reshape long ip_, i(stk_cd year app_no) j(ipidx)
drop if missing(ip_) | ip_ == "" | ip_ == "NA"
drop ipc_raw ipidx
rename ip_ ipc
gen ipc4 = ustrleft(ipc, 4)
drop ipc

*- 确保年份为整数
destring year, replace force

compress
save "inv_deduped.dta", replace

技术集中度(TS)的计算

对于每家企业的每个观测年 t,使用 [t−4,t] 窗口内的发明专利计算变异系数。Stata 中没有现成的滚动窗口函数,需要通过 joinby 将每条专利记录与企业所有观测年配对,再筛选窗口内的数据:

use "inv_deduped.dta", clear
keep stk_cd year ipc4

*- R 的 count(ipc4) 把 NA 也当作一个类别计数,Stata 中空字符串等价
replace ipc4 = "__NA__" if ipc4 == "" | ipc4 == "NA"

rename year patent_year
gen one = 1

*- 构建企业-观测年列表
preserve
keep stk_cd patent_year
duplicates drop
rename patent_year obs_year
keep stk_cd obs_year
gen one = 1
tempfile obs_years
save `obs_years'
restore

*- 此处代码需下载讲义材料查看~

上述代码中,joinby 的作用是将每条专利记录与企业所有观测年交叉配对,然后通过 keep if patent_year >= obs_year - 4 筛选出 5 年窗口内的专利。collapse (count) 按观测年和 IPC4 统计各小类专利数,再计算占比和变异系数。注意 Stata 的 egen sd 对只有一个类别的企业会返回缺失值而非 0,需要额外修正。

搜索广度(SB)的计算

搜索广度的计算需要用到引证专利字段(即企业专利引用了哪些在先专利)。该字段通常是以分号分隔的字符串,需要先展开为逐条记录:

use "inv_deduped.dta", clear

*- 只保留有引证专利的记录
keep if cit_pat != "NA" & cit_pat != "" & !missing(cit_pat)
keep stk_cd year app_no cit_pat

*- 展开引证专利:split by ";"
replace cit_pat = ustrregexra(cit_pat, "\s*;\s*", ";")
replace cit_pat = ustrtrim(cit_pat)

split cit_pat, parse(";") gen(cp_)

reshape long cp_, i(stk_cd year app_no) j(cidx)
drop if missing(cp_) | cp_ == "" | cp_ == "NA"
drop cidx
rename cp_ cited_patent
replace cited_patent = ustrtrim(cited_patent)
drop if cited_patent == "" | cited_patent == "NA"

compress
save "cite_long.dta", replace

展开后,对每家企业构建 5 年滚动知识库,判断当年引用是否为”新知识”:

use "cite_long.dta", clear

*- 此处代码需下载讲义材料查看~

sort stk_cd year
save "sb_panel.dta", replace

注意知识库的窗口范围是 [t−4,t−1](不含当年),这是为了确保”新知识”的判定有意义——只有当年引用的专利不在过去 5 年的引用库中时,才被认为是新的知识探索。rangestat 命令的 interval(year -4 -1) 正是实现了这一窗口设定。

搜索深度(SD)的计算

搜索深度考察的是企业在 5 年窗口内对被引专利的重复引用程度。SD 的分母与 SB 相同(当年总引用数),分子是近 5 年内所有被引专利的重复引用次数之总和:

use "cite_long.dta", clear

*- 此处代码需下载讲义材料查看~

SD 的计算逻辑是:用 rangestat 计算 5 年窗口 [t−4,t] 内该企业的总引用次数(分子),除以当年的引用次数(分母)。例如,某企业在 5 年内引用了同一批专利多次,那么窗口内总引用数会远大于当年引用数,SD 值较大,说明企业对特定知识的挖掘越深入。

知识整合能力(KIC)的计算

KIC 的计算最为简洁,直接统计 5 年窗口内企业涉及的不重复 IPC 前 4 位类别数。与 TS 的区别在于:TS 反映的是专利数量在各技术领域的分布均衡性(变异系数),而 KIC 反映的是企业跨越的绝对技术领域数量(去重计数)。

use "inv_deduped.dta", clear
keep stk_cd year ipc4

preserve
keep stk_cd year
duplicates drop
rename year obs_year
gen one = 1
tempfile kic_obs_years
save `kic_obs_years'
restore

*- 此处代码需下载讲义材料查看~

合并面板数据

将四个指标按企业-年度进行合并:

use "ts_panel.dta", clear

*- 合并 SB
merge 1:1 stk_cd year using "sb_panel.dta", nogen keep(master match)

*- 合并 SD
merge 1:1 stk_cd year using "sd_panel.dta", nogen keep(master match)

*- 合并 KIC
merge 1:1 stk_cd year using "kic_panel.dta", nogen keep(master match)

*- KIC 缺失值替换为0
replace kic = 0 if missing(kic)

sort stk_cd year

*- 变量标签
label data "数据处理:微信公众号 RStata"
label var stk_cd "股票代码"
label var year "年份"
label var ts "技术集中度(变异系数)"
label var n_patents "5年窗口发明专利数"
label var sb "搜索广度"
label var total_cit "当年总引用次数"
label var new_cit "新知识引用次数"
label var sd "搜索深度"
label var kic "知识整合能力(IPC类别数)"

save "firm_indicators_panel_stata.dta", replace

输出的面板数据包含以下变量:

变量 含义
stk_cd 股票代码
year 年份
ts 技术集中度(变异系数,越大越分散)
n_patents 5年窗口内的发明专利数
sb 搜索广度(0~1,越大探索新知识越多)
total_cit 当年总引用次数
new_cit 新知识引用次数
sd 搜索深度(越大利用已有知识越深)
kic 知识整合能力(涉及的 IPC4 类别数)

如果需要全部数据,使用全部年份的上市公司专利数据及专利引用信息数据即可计算。

关联数据推荐

1985~2024 年上市公司与专利数据匹配结果(版本3, 含申请、授权信息):https://rstata.duanshu.com/#/brief/course/04100321f88b411f90429be934934bff

1985~2024 的专利引用与被引用信息及次数统计:https://rstata.duanshu.com/#/brief/course/de4968acb01047b3801c200e9cf7ed41

点击这里跳转到 RStata 短书平台获取附件:名师讲堂|使用 Stata 测算上市公司专利技术集中度、搜索广度、搜索深度及知识整合能力

评论