卫生健康标准中关系型数据共现矩阵计算及SAS程序实现
2024-02-28刘拓侯学文李宁俞铖航黄烈雨
刘拓 侯学文 李宁 俞铖航 黄烈雨
卫生健康标准是我国标准体系的重要组成部分,其在保障人民生命健康方面发挥着重要的作用。从形式上来说,我国的卫生健康标准是一种半结构式文本。除了技术内容之外,标准中还包含丰富的关系型的数据,如起草人、起草单位和规范性引用文件等。对此类关系型数据的分析,可以从不同维度刻画标准之间的相互关系,为完善标准体系提供技术支撑;如采用社会网络分析法可以对标准中规范性引用文件关系型数据进行描述性分析,归纳处于互引关系网络中的中心位置的标准,为修订完善标准提供参考[1]。然而,既往涉及卫生健康标准的研究多集中在对其涉及技术内容的比较和分析,对标准中包含的关系型数据研究较少。参考其他领域的关系型数据分析思路,其在分析之前均需要构建分析对象的共现矩阵[2-6],但是专门探讨卫生健康标准中关系型数据中如何计算的文章极少。本研究借鉴其他领域的关系型数据分析过程中共现矩阵的计算思路,设计卫生健康标准类似共现矩阵的求解路径及其SAS 实现方法,以期为卫生健康标准的分析提供新的技术工具。
1 资料与方法
共现矩阵是一种描述不同指标共同出现的频率的二维表格,其行和列标题为不同指标,表中数据为该数据所在行列指标共同出现的频次。本文以计算一组标准的起草单位共现矩阵为例,标准中其他的关系型数据,如起草人、规范性引用文件也可以参考此方法计算共现矩阵。
1.1 计算思路
假设“标准-起草单位”二维表格有M 行和N 列,二维表格的第i 行j 列(1 ≤i ≤M,1 ≤j ≤N)数值为Xi,j,Xi,j取值为0 或1。二维表格中每一行代表一项标准,记为Si;每一列代表一个起草单位,记为Aj。如Xi,j=1,则表示第i 标准的起草单位名单中有第j 个起草单位;反之如Xi,j=0,则没有第 j 个起草单位。第j 个起草单位与第k个起草单位(1 ≤j ≤N,1 ≤k ≤N)的共现频次Cj,k=SUM(X1,j×X1,k+X2,j×X2,k…+Xi,j×Xi,k…+Xm,j×Xm,k)。以此类推,计算出所有的Cj,k,并整理为起草单位共现矩阵。共现矩阵示例见表1。
表1 共现矩阵示例表
1.2 统计分析
整理后的“标准-起草单位”矩阵导入SAS(版本号:9.4),按照计算思路自行设计宏程序计算起草单位之间的共现矩阵。
2 计算程序
2.1 数据导入
为了方便演示,本文采用自行构建的模拟数据进行演示。假设现有4 项标准分别为S1、S2、S3 和S4;共计涉及3 家起草单位,分别为A1、A2 和A3,两者构成一个M 行×N 列的“标准-起草单位”二维表,其中M =4,N =3。表中“0~ 1”数值表示某个起草单位是否在某项标准的起草单位名单中,如X1,1=1,即S1 标准的起草单位名单中有A1,X1,2=0,即S1 标准的起草单位名单中无A2,见表2。
表2 “标准-起草单位”导入数据示例表
将上述数据导入到SAS 中,并命名为test_1_0。程序如下。
2.2 计算共现矩阵的SAS 宏程序
定义计算起草单位共现矩阵的SAS 宏程序名称compute,其包含4 个参数,分别为i_start_num、i_end_num、j_start_num 和j_end_num,本文中分别取值为1、3、1 和3,具体宏程序及其注释如下。
具体的计算结果见图1。
图1 标准中起草单位共现矩阵SAS 计算结果示意图
可以进一步用PROC EXPORT 直接导出数据集,也可以在SAS 菜单栏中选择“文件”→“导出数据”,按照菜单提示选择需要导出的数据集。经整理后,最终的起草单位共现矩阵见表3。
表3 标准中起草单位共现矩阵示意表
2.3 宏程序调试
在测试SAS 宏程序的时候,可以增加部分选项用于程序的调试,如可以增加“option mlogic;”,SAS 会提供每一步宏程序运行的结果,方便发现宏程序哪些地方存在问题,以便于及时修改。在SAS 宏程序调试完成后,可以选择运行“option nomlogic;”语句关闭该项功能,以提升SAS 宏程序运行速度。此外,还可以运行“option nonotes;”语句,关闭SAS 宏程序在运行过程中输出日志,以进一步提升SAS 宏程序的运行速度。
3 讨论
3.1 SAS 宏程序计算共现矩阵具有灵活高效的优势
作为一种在卫生健康领域应用广泛的权威统计分析软件,SAS 宏程序灵活高,在处理批量化的数据整理和分析过程中优势明显,可以实现DATA 步和PROC 步的任意组合[7-8]。对于共现矩阵的计算来说,计算量随着指标数量增加而快速增加,如对于一组卫生健康标准有n 个起草单位,则起草单位共现矩阵具有n2个数据需要计算。对于较大规模数据的计算,SAS 宏程序具有一定的优势,如不依赖内存、运行效率高等;而R 语言在处理数据时是先把数据读取到内存,当数据大小接近或超过内存大小时,会导致计算机死机或程序闪退。
3.2 共现矩阵的理论基础和实践用途
共现矩阵基于一个简单假设,即如果两个对象经常同时出现,那么它们之间可能存在某种关联性[9]。如果将这种关联进行整理,就可以得到共现矩阵。其优点是不要求必须事先对这种关联性进行假设或理论建模,因此可以在没有明确研究问题的情况下进行探索性数据分析,进而发现新的规律和关系;但是另一方面,由于共现矩阵反映的只是2 组对象之间的关联性,如果没有事先的研究假设、逻辑推导以及共现矩阵分析之后的补充分析,得到的关系并不足支持因果判断,提示笔者需要根据具体问题和数据特点选用合适的分析方法,结合共现矩阵分析结果,获得综合全面的研究结论。共现矩阵常用的于社会网络分析(共同关系等)、自然语言处理(语义相似等)、生物信息学(相互作用等)等领域的研究中。
3.2 共现矩阵后续可用于社会网络分析
社会网络分析(social network analysis,SNA)是一种针对不同事物之间关联型数据的专用方法,其既可以用中心度、相对中心度和中间中心度等统计指标,描述分析不同事务之间的互动关系;也可以发现社会网络中联系相对频繁、密切、存在较多互动的个体之间构成的凝聚子群[10-12]。该方法广泛应用于信息情报、医疗卫生、产业发展和社会经济等领域的研究,而现行主流的SNA 软件,多以共现矩阵为输入数据开展各项分析[5,13-15]。既往研究中,已经有学者探索将SNA 方法引入标准相关的分析中,如冯婉怡等[16]基于SNA 视角分析87 项旅游标准及260 项引用标准的互动关系,发现旅游标准引用范围广泛,但尚未形成次级标准引用网络;刘拓等[1]探索269 项国家职业卫生标准及其涉及的361 项规范性引用文件之间的互动关系,提炼国家职业卫生标准体系中的中心度较高的标准。鲁洋等[17]对我国115 项职业病诊断标准及其146 项规范性引用文件进行分析,量化评估职业病诊断标准之间的关联程度;并归纳其关键节点标准,为职业病诊断标准的实施追踪提供技术线索。除了通过规范性引用文件构建的标准互引网络之外,SNA 法还可以利用标准起草单位共现矩阵分析标准起草单位之间互动关系,如刘思薇等[18]利用标准起草单位共现矩阵,对人工智能产业技术标准合作网络特征及演化规律和趋势进行探讨,归纳该网络中的核心主体、合作深度和多元化趋势。因此,建议共现矩阵后续可用于SNA,探索诸如起草单位、规范性引用文件等事物之间的互联互动关系,为完善标准体系及卫生健康标准化工作提供针对性的建议。
3.3 共现矩阵后续可用于归纳互动演进规律
除了SNA,共现矩阵还可以作为关联型数据在时间、地域或性质上分布和演进规律的数据基础,如张正峰等[10]分析京津冀地区碳排放空间关联,李永立等[19]利用SNA 对研究对象的多属性关联规则进行挖掘,贺钰等[20]分析主产区柑橘价格的空间关联。具体到卫生健康标准领域,其中的关系型数据共现矩阵从如下角度继续深入分析:从时间规律上,可以分析不同时间,不同标准或不同起草单位之间的互动关系,归纳其演进规律和未来发展趋势;从空间维度,可以分析来自不同地域起草单位之间的互动联系,探索与我国社会经济发展之间的关联性;从性质维度,可以分析不同性质的标准,如强制性标准和推荐性标准,国家标准、行业标准、地方标准和团体标准之间的互动联系,研究之间的信息传递与互动联系,为发现核心标准、完善标准体系提供参考。
综上所述,SAS 宏程序计算标准中关系型数据共现矩阵具有灵活高效的优势,可用于社会网络分析和互动演进规律总结。