数据挖掘在扶贫资金审计中的应用分析
2019-05-23韦祚哲
韦祚哲
[摘 要]目前,精准脱贫是我国政府3大攻坚战之一。扶贫资金具有数量大、面积广、影响深远的特点,一直以来,审计系统都高度重视对扶贫资金的审计监督,近年来更是紧扣脱贫攻坚任务,把扶贫资金的审计任务摆在重中之重的地位。基于此,本文详细介绍了笔者所在团队在一次交叉审计任务中,面对海量数据时如何通过大数据审计分析,快速精准发现审计疑点,锁定延伸审计对象,揭露重大问题,也是将数据挖掘技术应用于具体审计项目的一次探索。
[关键词]扶贫资金;贫困人口;数据挖掘
doi:10.3969/j.issn.1673 - 0194.2019.08.005
[中图分类号]F239.1;TP311.13 [文献标识码]A [文章编号]1673-0194(2019)08-00-03
1 案例背景
根据省审计厅的统一安排,某市审计局以市内交叉的方式对全市2014-2016年的扶贫资金进行专项审计,笔者作为审计组的一员有幸参与其中。按照精准扶贫政策的要求,扶贫资金对应贫困人口,有健全、规范的电子数据,有利于应用数据挖掘技术进行审计分析。
2 审计过程、方法
2.1 基本思路
对于精准扶贫来说,确保资金合理合规使用的基本原则是资金必须用在建档立卡的贫困人口身上,帮助其脱贫致富,但由于审计时间和人手有限,不可能进行全方位的审计复核。因此,为了提高延伸审计的精准性,审计人员应在审计过程中挖掘分析扶贫对象的建档立卡数据,找出基础业务质量比较差的乡镇,并将其作为延伸审计的重点,以期发现更多的问题。
2.2 取得的资料
笔者从扶贫系统中查看目标数据的行数,采取分年度导出的方法,得到2016年未脱贫人口明细表(59 880行,31.3 MB)、
2015年已脱贫人口明细表(11 012行,9.32 MB)和2014年已脱贫人口信息表(14 948行,12.6 MB),并将上述3张表导入数据库后合并生成一张表。观察数据可以发现,除了户主行,其他家庭成员行没有包含户主信息,通过下面的语句将户主信息加入家庭成员行,方便以后对照户主事项进行查询。
Select h.*
,(select 证件号码
from tb1 hh
where 序号=(select max(序号) from tb1 hhhwhere hhh.序号<=h.序号
and hhh.与户主关系='户主'))
into tb2
from tb1 h;
2.3 审计步骤与方法
2.3.1 扶贫对象建档立卡数据初步分析统计
从扶贫信息系统中导出某地建档立卡对象基本信息表,经过分析身份证号码和表内数据逻辑查找异常数据,并分乡镇
统计。
2.3.1.1身份证号码第18位校验码不符合规则情况
身份证号码的第18位校验码是根据前17位数字按照一定的算法得出的数码,笔者通过5个可读性良好的小步实现目标。
(1)表中增加余数列
altertable贫困人口表add余数varchar
(2)余数赋值
update贫困人口表
set 余数=(substring(证件号码,1,1)*7+substring(证件号码,2,1)*9+
substring(证件号码,3,1)*10+substring(证件号码,4,1)*5+
substring(证件号码,5,1)*8+substring(证件号码,6,1)*4+
substring(证件号码,7,1)*2+substring(证件号码,8,1)*1+
substring(证件号码,9,1)*6+substring(证件号码,10,1)*3+
substring(证件号码,11,1)*7+substring(证件号码,12,1)*9+
substring(证件号码,13,1)*10+substring(证件号码,14,1)*5+
substring(证件号码,15,1)*8+substring(证件号码,16,1)*4+
substring(证件号码,17,1)*2)%11
where len(证件号码) in (18,20)
(3)在表中增加校验码列
alter table dbo.贫困人口表 add 校验码 varchar
(4)校验码赋值
update 贫困人口表 set 校验码='1' where 余数='0'
update 贫困人口表 set 校验码='0' where 余數='1'
update 贫困人口表 set 校验码='X' where 余数='2'
update 贫困人口表 set 校验码='9' where 余数='3'
update 贫困人口表 set 校验码='8' where 余数='4'
update 贫困人口表 set 校验码='7' where 余数='5'
update 贫困人口表 set 校验码='6' where 余数='6'
update 贫困人口表 set 校验码='5' where 余数='7'
update 贫困人口表 set 校验码='4' where 余数='8'
update 贫困人口表 set 校验码='3' where 余数='9'
update 贫困人口表 set 校验码='2' where 余数='*'
(5)比较证件号码中的校验码和根据算法生成的校验码是否相符,并生成疑点表
Select乡镇,COUNT(*)校验码不符人数
into统计分析_证件号码第18位不符合编码规则
from dbo.贫困人口表
where LEN(证件号码) in(18,20)
and substring(证件号码,18,1)<>校验码
grou by 乡镇 order by 乡镇
2.3.1.2 贫困人员信息表中的“性别”与身份证号码第17位奇偶性不符
根据身份证编码规则,第17位为性别标识符,奇数为男性,偶数(含0)为女性,查询并生成疑点表。
select乡镇,COUNT(*) 性别有误人数
into 统计分析_证件号码性别标识与标明的性别不符
from dbo.大别山县贫困人员信息表
where ((substring(证件号码,17,1) in(1,3,5,7,9) and 性別 like '%女%')
or (substring(证件号码,17,1) in(0,2,4,6,8) and 性别 like '%男%'))
and 年度='2016'
group by 乡镇 order by 乡镇
2.3.1.3 贫困人员信息表中登记的“人均纯收入”超过3 100元的对象
Select乡镇,count(*) 人均纯收入超过标准人数
into 统计分析_人均纯收入超过标准
from 大别山县贫困人员信息表
where cast(人均纯收入 as float)>3101 and 年度=2016
group by 乡镇
order by 乡镇
2.3.2 分乡镇统计各种情况的异常人数求和及总差异率
2.3.2.1 根据贫困人员信息表生成分乡镇异常人数统计表
select 乡镇,COUNT(*) 贫困人数
into 大别山县建档立卡数据异常统计表
from dbo.大别山县贫困人员信息表
where 年度=2016
group by 乡镇
order by 乡镇
2.3.2.2 将异常人数数据添加到大别山县建档立卡数据异常统
计表
(1)校验码不符
alter table 大别山县建档立卡数据异常统计表 add 校验码不符人数 int
update 大别山县建档立卡数据异常统计表
set 校验码不符人数=b.校验码不符人数
from 大别山县建档立卡数据异常统计表 a join 统计分析_证件号码第位不符合编码规则 b on a.乡镇=b.乡镇
where a.乡镇=b.乡镇
(2)性别不符
alter table 大别山县建档立卡数据异常统计表 add 性别有误人数 int
update 大别山县建档立卡数据异常统计表
set 性别有误人数=b.性别有误人数
from 大别山县建档立卡数据异常统计表 a join dbo.统计分析_证件号码性别标识与标明的性别不符 b on a.乡镇=b.乡镇
where a.乡镇=b.乡镇
(3)人均纯收入超过标准
alter table 大别山县建档立卡数据异常统计表 add 人均纯收入超过标准人数 int
update 大别山县建档立卡数据异常统计表
set 人均纯收入超过标准人数=b.人均纯收入超过标准人数
from 大别山县建档立卡数据异常统计表 a join dbo.统计分析_人均纯收入超过标准 b on a.乡镇=b.乡镇
where a.乡镇=b.乡镇
(4)差异人数求和
a.null 数据赋值
update 大别山县建档立卡数据异常统计表 set 校验码不符人数=0 where 校验码不符人数 is null
update 大别山县建档立卡数据异常统计表 set 性别有误人数=0 where 性别有误人数 is null
update 大别山县建档立卡数据异常统计表 set 人均纯收入超过标准人数=0 where 人均纯收入超过标准人数 is null
b.差异人数求和
alter table 大别山县建档立卡数据异常统计表 add 异常总人数 int
update 大别山县建档立卡数据异常统计表
set 异常总人数=校验码不符人数+性别有误人数+人均纯收入超过标准人数
c.求差异率
alter table 大别山县建档立卡数据异常统计表 add 差异率 float
update 大别山县建档立卡数据异常统计表
set 差异率=left((cast(异常总人数 as float )/cast(贫困人数 as float)),6)
2.3.3 将数据复制到Excel中图形化并解读
图1是根据差异总人数和差异率绘制的双纵坐标柱形图,红色柱代表差异率,黄色柱代表差异总人数,两色柱的总高度代表该乡镇基础数据差异叠加影响。
2.4 延伸审计建议
根据图形化的结果,黄帝镇和皖水镇两个镇的数据差错绝对数和相对数叠加影响最大,因此,本次审计将这两个乡镇列为重点延伸审计对象。
3 延伸审计及部分成果
3.1 黄帝镇
(1)精准识别中存在贫困人口动态管理滞后和假冒贫困人口的情况。2016年底,在皇帝镇贫困人口数据中,10名未脱贫人员已经去世并火化,其中2名是大别山县财政供给人员。
(2)到户贴息中存在个人利用他人贷款凭证骗取到户贴息资金。Z1用A、B两人的贷款凭证和大别山县××合作社的贷款合同骗取21 643元財农[2013]2408号文件指标中的到户贴息资金。Z2用C等9人贷款凭证骗取25 363元财农[2013]2408号文件指标中的到户贴息资金。
(3)项目贴息中存在的问题。安徽××开发有限公司用安徽××银行的200万元贷款申报获取3万元财农[2013]2408号文件指标中的项目贴息资金,又重复申报4万元财农[2014]670号文件指标中的项目贴息资金,贷款合同编号为“20130098”。
3.2 皖水镇
(1)精准识别中存在贫困人口动态管理滞后和假冒贫困人口的情况。2016年底,在皖水镇贫困人口数据中,40名未脱贫人员已经去世并火化,其中,2名是大别山县财政供给人员,4名是现任村干部(占全县此类情况的一半)。
(2)到户贴息中存在个别公司套取到户贴息资金的情况。镇政府在2013年到户贴息资金中支付大别山县××农产品开发有限责任公司19 170元,款项从三资账户转至该公司法人个人账户。
(3)雨露计划中存在个别单位利用培训贫困人员的雨露计划资金培训原有工人。2013年,大别山扶办字[2013]18号文件雨露计划为大别山县××职业培训学校拨付劳动力转移扶贫培训资金4万元,用来培训100名车工。经审计培训台账、劳动力转移台账及培训实施方案等流程,发现培训时间为2013年10月11日-2013年11月16日,2013年11月16日就业,培训对象为××厂今年新录用车工专业员工100人。据审计延伸调查××厂,车工专业培训的100人都是该厂2012年前的在职职工。
4 体会和启示
通过本次审计,笔者认为利用数据库技术进行数据挖掘,对提高审计深度、提高延伸审计的精准性有一定的作用,值得在今后的审计工作中积极探索、尝试。
主要参考文献
[1]洪天一.基于数据挖掘的计算机审计方法研究与实现[D].成都:电子科技大学,2011.
[2]梁雪琴,刘红生,代秀梅,等.聚类离群点挖掘技术在内部审计信息化中的应用——一个来自商业银行信用卡审计的实例[J].中国内部审计,2015(8).
[3]刘莉丽.数据挖掘技术在社保联网审计中的应用研究[D].哈尔滨:哈尔滨工程大学,2009.
[4]张炳才,彭国林.基于欧式距离孤立点的数据挖掘方法在审计中的应用与研究[J].中国管理信息化,2008(13).
[5]蒋伟林.“云端”扶贫的贵州探索[J].决策,2016(11).