名师讲堂|使用 Stata 测算上市公司专利碎片化指数:专利所有权分散与专利丛林

今天给大家分享使用 Stata 测算上市公司专利碎片化指数的方法。专利碎片化指数用于衡量专利引用知识的分散程度,碎片化越高,越容易导致专利丛林问题。专利所有权的分散意味着用于保护复杂产品不同组件的专利由不同的主体所持有。要制造该产品,就必须从所有不同的专利持有者那里获得这些专利的使用许可。因此,专利所有权的分散可能会阻碍相关专利技术的使用,不同专利所有者之间就整合分散的权利进行谈判也会产生高昂的成本。

附件中的「Strategic Patenting, Patent Portfolio Races, and Patent Thickets」文中提到了两个指标:

看起来这个数据使用全部工商企业的专利数据计算更合适,不过目前还没有这个数据,所以这里我们仅仅根据上市公司专利互引信息计算。

上市公司专利互引信息的处理可以学习之前的课程:

名师讲堂|使用 Stata 处理上市公司专利互引矩阵及测算上市公司供应链协同创新程度(一): https://rstata.duanshu.com/#/brief/course/e58dd2c837c443469d65cf37c26d8b39

Ziedonis(2004)

Ziedonis(2004) 的方法是分别计算两个变量:

  1. NBCITESi:企业 i 引用其他企业专利的总次数;
  2. NBCITESij:企业 i 引用企业 j 专利的总次数。

不过在计算这两个变量之前,我们需要做一些预处理:

  1. 删除自引的专利;
  2. 删除撤销的专利;
  3. 删除最终未被授权的专利。

由于我们的专利数据里面包含重复专利,也就是申请和公告同时存在的。这些重复的也要删除。

由于前述课程里面处理得到的「上市公司之间专利互引信息.dta」数据里面没有包含授权信息,所以我们还需要补充一份专利的授权信息:

use "1985~2024年上市公司与专利数据匹配结果.dta", clear
*> (数据处理:微信公众号 RStata)
drop if mi(授权公告日)
*> (635,417 observations deleted)
keep newipzlid
duplicates drop newipzlid, force
*> Duplicates in terms of newipzlid
*> (102,190 observations deleted)
save 授权专利列表, replace
*> file 授权专利列表.dta saved
list in 1/5
*> +----------+
*> | newipz~d |
*> |----------|
*> 1. | 19850031 |
*> 2. | 19850705 |
*> 3. | 19850975 |
*> 4. | 19852578 |
*> 5. | 19853984 |
*> +----------+

「1985~2024年上市公司与专利数据匹配结果.dta」数据来源于这个数据分享:

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

由于数据非常大,就没有放到附件中。

然后按照上面所说的,进行一些删除:

use 上市公司之间专利互引信息.dta, clear
*> (数据处理:微信公众号 RStata)
*- NBCITESi: 表示在给定年份中,授予企业i的专利对其他专利的引用次数
*- 删除自引和撤销的
drop if 股票代码_被引专利 == 股票代码_原专利
*> (1,420,920 observations deleted)
drop if ustrregexm(公开公告号_被引专利, "C$")
*> (4,980 observations deleted)
drop if ustrregexm(公开公告号_原专利, "C$")
*> (1,582 observations deleted)
*- 仅保留被授权的
ren newipzlid_原专利 newipzlid
joinby newipzlid using 授权专利列表
ren newipzlid newipzlid_原专利
ren newipzlid_被引专利 newipzlid
joinby newipzlid using 授权专利列表
ren newipzlid newipzlid_被引专利
*- 去除重复专利
replace 公开公告号_原专利 = subinstr(公开公告号_原专利, "A", "", .)
*> (381,570 real changes made)
replace 公开公告号_原专利 = subinstr(公开公告号_原专利, "B", "", .)
*> (328,655 real changes made)
replace 公开公告号_原专利 = subinstr(公开公告号_原专利, "U", "", .)
*> (9,662 real changes made)
replace 公开公告号_原专利 = subinstr(公开公告号_原专利, "S", "", .)
*> (0 real changes made)
replace 公开公告号_被引专利 = subinstr(公开公告号_被引专利, "A", "", .)
*> (346,091 real changes made)
replace 公开公告号_被引专利 = subinstr(公开公告号_被引专利, "B", "", .)
*> (261,102 real changes made)
replace 公开公告号_被引专利 = subinstr(公开公告号_被引专利, "U", "", .)
*> (92,594 real changes made)
replace 公开公告号_被引专利 = subinstr(公开公告号_被引专利, "S", "", .)
*> (37 real changes made)
duplicates drop 股票代码_原专利 公开公告号_原专利 股票代码_被引专利 公开公告号_被引专利, force
*> Duplicates in terms of 股票代码_原专利 公开公告号_原专利 股票代码_被引专利 公开公告号_被引专利
*> (481,480 observations deleted)

计算企业间的引用次数:

gen year = substr(newipzlid_原专利, 1, 4)
order year
destring year, replace
*> year: all characters numeric; replaced as int
contract year 股票代码_原专利 股票代码_被引专利
list in 1/10
*> +----------------------------------+
*> | year ~引专利 ~原专利 _freq |
*> |----------------------------------|
*> 1. | 1996 000709 600808 1 |
*> 2. | 1997 600740 600569 1 |
*> 3. | 1998 000709 600019 1 |
*> 4. | 1998 600005 600019 1 |
*> 5. | 1999 002312 002587 1 |
*> |----------------------------------|
*> 6. | 1999 600005 600019 1 |
*> 7. | 2000 000521 000921 1 |
*> 8. | 2000 200521 000921 1 |
*> 9. | 2000 000866 600028 1 |
*> 10. | 2001 000651 000527 1 |
*> +----------------------------------+

这里计算出来的结果就是 NBCITESij:

ren _freq NBCITESij

分公司求和就可以得到 NBCITESi:

bysort year 股票代码_原专利: egen NBCITESi = sum(NBCITESij)
save tempdata1, replace
*> file tempdata1.dta saved

Ziedonis (2004) 的方法类似赫芬达尔指数的计算:

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

Noel and Schankerman (2013)

Noel and Schankerman (2013) 则是仅保留前四大专利持有企业所占的份额,并且没有平方:

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

合并两个结果

最后合并两个结果:

use data1, clear
*> (数据处理:微信公众号 RStata)
merge 1:1 年份 股票代码 using data2
*> Result Number of obs
*> -----------------------------------------
*> Not matched 0
*> Matched 19,270 (_merge==3)
*> -----------------------------------------
label var Frag "Ziedonis (2004)"
label var Fragcite "Noel and Schankerman (2013)"
drop _m
list in 1/10
*> +-----------------------------------+
*> | 年份 股票代码 Frag Fragcite |
*> |-----------------------------------|
*> 1. | 1996 600808 0 0 |
*> 2. | 1997 600569 0 0 |
*> 3. | 1998 600019 .5 0 |
*> 4. | 1999 002587 0 0 |
*> 5. | 1999 600019 0 0 |
*> |-----------------------------------|
*> 6. | 2000 000921 .5 0 |
*> 7. | 2000 600028 0 0 |
*> 8. | 2001 000527 0 0 |
*> 9. | 2001 000651 0 0 |
*> 10. | 2001 600320 0 0 |
*> +-----------------------------------+
superscatter Frag Fragcite, line45 leg(ring(0) pos(5) order(1 "45度线" 2 "散点图")) ///
ti("两种碎片化测度的关系") ///
subti("数据计算 & 处理:微信公众号 RStata")

gr export "两种碎片化测度的关系.png", width(4800)

相关性还是挺强的:

点击这里跳转到 RStata 短书平台获取附件:名师讲堂|使用 Stata 测算上市公司专利碎片化指数:专利所有权分散与专利丛林

评论