计算机审计数据分析之巧引辅助数据,本文主要内容关键词为:数据论文,计算机论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
在计算机审计实务中,审计人员一般使用采集的被审计单位各类数据或外部单位数据来开展数据分析。而笔者在一些计算机审计数据分析中,通过引入自己构造的辅助数据,巧妙地解决了审计中面临的复杂问题,试举一例抛砖引玉。
案例背景:医保资金审计中审计人员怀疑有参保人员在多家医院虚假“挂床”,欲借助计算机审计开展线索分析。
数据情况:审计人员获取了某地医保经办机构的住院医保报销明细表,该表一条记录对应参保人员的一次住院报销情况,主要字段包括:参保人医保号、所在医院、入院日期、出院日期、报销金额等。
分析需求:审计人员认为正常住院治疗情况下,每个参保人员在同一天最多只会在一家医院治疗,因此如果某个参保人员的两条或多条报销记录有住院时间上的重叠(如1月1日至2月1日在A医院住院,1月15日至2月15日又在B医院住院),则必然存在虚假“挂床”的问题。
这时,审计人员提出了不同的实现方法:
方法一:使用报销明细表进行自关联,自关联一次可以找出在两家医院住院时间重叠的数据,自关联二次可以找出在三家医院住院时间重叠的数据,以此类推。实现如下:
此方法和逻辑都极为繁复,分析结果核实时极为不便。更重要的是,该地医保报销明细表几年间有上千万条数据,自关联的运算量极大,自关联一次时间复杂度O(n^2)(n为医保报销明细表条数),自关联两次时间复杂度O(n^3),缺乏实际运行的可行性。
因此审计人员决定,首先对医保报销明细表进行数据分解,即将一条报销记录拆分到每日住院明细,如某参保人员某月1日住院、10日出院的A医院报销记录,拆分为9条每日住院明细(分别为1至9日),字段包括:参保人医保号、所在医院、在院日等。然后再对每日住院明细表按照参保人医保号、在院日分组(group by),筛选同一人同一天在多家医院住院的重复记录,即在多家医院虚假“挂床”的记录。
这一思路以空间(每日住院明细表的存储空间)换时间的策略,大大减少计算量。实现的重点是将医保报销明细表拆分为每日住院明细表,拆分的核心是对日期的处理。
方法二:使用定义游标的方法拆分出每日住院明细表,再对每日住院明细表分组筛选出重复记录。实现如下:
此方法实现的时间复杂度为O(kn)(k为平均住院天数,一般不超过两位数),运行效率最高,也较好地满足了分析需求。但对于非专业人员来说,编写或理解前半步骤中带有游标的语句较为困难。那么,能否还有其他既能兼顾可行性,又简单易于理解的方法呢?
方法三:巧引辅助数据(人工生成的日期表),与医保报销明细表关联后拆分出每日住院明细表,再对每日住院明细表分组筛选出重复记录。
审计人员认识到,数据分析中还可以引入一些从常识、法规等而来的辅助数据,与获取的信息系统数据一起分析,类似几何中引入辅助线,往往起到事半功倍的效果。这时审计人员编制了一张日期表,该表仅有一个字段即日期(了解到该医保系统运行三年多,审计人员编制了这三年多时间段内的所有日期,共1000多天)。实现如下:
此方法实现的时间复杂度为O(mn)(m为天数,1000多天),运行效率仍然较高,能够兼顾可行性,同时逻辑上较为简单,易于理解。
通过巧引辅助数据,该方法具备了相当的逻辑美感,相信能够给计算机审计数据分析带来一些有益的启发。