博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
财务舞弊(本福特——KS验证)
阅读量:5088 次
发布时间:2019-06-13

本文共 2270 字,大约阅读时间需要 7 分钟。

本福特——KS验证

 

       Amiram1(2015)发表文章Financial statement errors: evidence from the distributional properties of financial statement numbers, 其在文章中成功的将本福特定律应用于美国上市公司的年报数据,发现1、在同一年中,重修订的数据比原始谎报数据更符合本福特定律;2、统计越偏离本福特定律,该上市公司的持续盈利能力越低。文章中利用Kolmogorov–Smirnov(KS) 统计与Mean Absolute Deviation (MAD)两种检验方式来度量实际分布概率与本福特定律的偏差程度, KS的计算公式为:

KS=Max(|AD1−ED1|,|(AD1+AD2)−(ED1+ED2)|,…,|(AD1+AD2+…+AD9)−(ED1+ED2+…+ED9)|)

其中AD是统计数据的真实分布,ED为该数字在本福特定律中的期望概率。可以利用KS来检验该分布适合本福特定律,在5%的水平下,检验值为 1.36/srqt§,其中P为总的统计样本个数。如果该样本的KS值小于该检验值,可以认为符合本福特定律。

 

 

一、代码

 

1 from WindPy import w 2 from datetime import * 3 import math 4 from scipy import stats 5  6 #本福特定律中1-9的分布概率 7 exp = [0.301, 0.1761, 0.1249, 0.0969, 0.0792, 0.0669, 0.058, 0.0512, 0.0458] 8  9 #启动wind10 w.start()11 12 #这里按wind取数规则,将代码和日期设为变量13 list=["600000.SH"]14 rptDate="unit=1;rptDate=20161231;rptType=1"15 16 def count_num(x):17     #取第一位数,并且按1-9返回出现次数的列表18     numC = [0] * 919     for i in x.Data:20         if not math.isnan(i[0]):21              #wind空数据显示为"nan"22             num=int(str(abs(i[0]))[0])23             if num ==1:24                 numC[0]+=125             elif num==2:26                 numC[1]+=127             elif num==3:28                 numC[2]+=129             elif num==4:30                 numC[3]+=131             elif num==5:32                 numC[4]+=133             elif num==6:34                 numC[5]+=135             elif num==7:36                 numC[6]+=137             elif num==8:38                 numC[7]+=139             elif num==9:40                 numC[8]+=141     return numC42 43 def ks(numC):44     #Kolmogorov–Smirnov(KS) 统计45     ks_value=046     numT = sum(numC)47     p=1.36/(numT**0.5)48     for j in range(0, 9):49         numC[j] = numC[j] / numT50     ks = [0] * 951     for i in range(0, 9):52         a = 053         b = 054         for j in range(0, i + 1):55             a = a + numC[j]56             b = b + exp[j]57         ks[i] = abs(a - b)58     Max=max(ks)59     if Max>p:60         #如果不符合ks,返回1,符合返回061        ks_value=162     return  ks_value

 

二、验证

1.舞弊公司

代码

公司名称

备注

300267.SZ

尔康

系统未报错

600074.SH

保千里

系统报错

300372.SZ

欣泰

系统报错

002323.SZ

雅百特

系统未报错

600654.SH

中安消

系统未报错

 

2.上证50公司

系统均未报错。

 

3.结论

符合本福特—KS验证,不一定没有问题。但不符合本福特—KS验证,应该存在问题。

转载于:https://www.cnblogs.com/L736/p/8523241.html

你可能感兴趣的文章
聚合与组合
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>