上次课程主页:https://rstata.duanshu.com/#/course/bcb7f4d90a8445e48c18e4ed769ef071
继续上次课的内容,今天我们继续讲解第二部分:
专利的前向相似度与后向相似度:使用 Stata 计算专利关键数字技术突破创新指标(二):基于 Mata 程序的专利间前瞻、回溯相似度计算;
tempdata7.dta 是上次课的处理结果:
use tempdata7.dta, clear |
![]()
一个简单的例子
在开始计算之前,我们先考虑一个简单的例子。
data 数据包含 9 个变量,第一列是专利的编号,第二列是专利的申请年份,后面 7 列就是专利的 7 个属性维度,我们来计算每个专利的前瞻和回溯相似度:
mata: |
计算原理非常简单,就是分别提取申请时间早于和晚于该专利的,使用余弦相似度公式进行计算即可。
然后我们就可以循环计算简单示例中所有专利的了:
mata: |
处理结果如下:
import delimited using res1.csv, clear |
基于真实的专利数据
然后我们就可以把这个代码应用到真实的专利数据了,首先尝试 100 条专利的计算:
use tempdata7, clear |
*- 此处代码需下载讲义材料查看~ |
import delimited using res2.csv, clear |
这里仅仅演示了 100 条的计算结果,不过想要靠这段代码计算所有的是不太可能的(一个几十万 x 几十万维度的矩阵计算是非常耗时的)。所以下面我们得思考下如何提升计算效率。
观察 tempdata7.dta 的数据可以发现,其实大多数专利的 7 个指标都是相同的,互不相同的并不多:
![]()
use tempdata7, clear |
那么在计算余弦相似度的时候,我们实际上并不需要计算所有的,只需要计算互不相同的,然后再根据数量加权求和即可。下面我们再来改进下代码。
为了更好的分辨哪些是相等的,我们再生成一个 group 变量,group 值相等的就是完全一样的:
use tempdata7, clear |
可以看到这里的计算结果和前面的结果是一样的。由于时间关系,我们还是只选择前 100 个运行:
然后就可以循环所有的:
*- 此处代码需下载讲义材料查看~ |
import delimited using res2.csv, clear |
不过如果想要运行所有的还是比较耗时的,下次课我们再讲解如何改用并行的方法。
上面的所有计算都是针对之前和之后所有专利的,按照 Kelly et al.(2021)中的介绍,我们可以限制计算之前 5 年的,例如这里我们可以仅仅计算上个日历年的。这里需要注意,如果选择计算申请日前 365 天的,可以在 Mata 里面使用下面的代码:
... Other codes ... |
如果想要计算上个日历年的,就需要在 Stata 数据里面进行调整下了:
use tempdata7, clear |
这样我们就实现了基于指定窗口范围的计算。
下次课程中我们再讲解如何使用并行运算提升速度。
点击这里跳转到 RStata 短书平台获取附件:名师讲堂|专利的前向相似度与后向相似度:使用 Stata 计算专利关键数字技术突破创新指标(二)
评论