邱晨煒 羅苑瑋
【摘? 要】論文利用Python構建本福特審計模型分析樣本單位數據,檢驗本福特定律識別審計風險的能力。通過分析樣本單位財務報表數據中首位數字與本福特定律之間的關聯程度,以驗證本福特定律在審計過程中識別目標單位財務舞弊行為的可行性。
【關鍵詞】大數據審計;本福特定律;Python
【中圖分類號】F832.5;F275;F239.4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文獻標志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文章編號】1673-1069(2022)08-0152-04
1 引言
信息技術的不斷迭代及數字賦能時代的到來為現代化審計工作帶來了巨大的機遇和挑戰。機遇是若能適應數財融合背景下審計實踐的迭代并且從中探索出一條能高效識別舞弊風險的道路,將加速審計理論和審計實踐的融合,促進審計質量的提升。而挑戰是隨著上市公司的季報、中報、年報和說明,從原先的幾十頁到現在的上百頁,各種數據信息呈幾何式陡增。在紛繁復雜的大數據面前,如何高效地識別出被審計單位所提供的資料中的問題,這是擺在所以審計人眼下一個急需被處理的課題。
2 本福特定律的含義及檢驗方法
2.1 本福特定律的含義
本福特定律命名來源于20世紀的英國科學家本福特,他通過分析了20 229組自然形成的數字后得出:在一組自然形成的數字中,以1為首位出現的概率大于以2為首位出現的概率,以此類推,以9為首位出現的概率最低。并且本福特進一步測算出了其出現的概率,如表1、圖1所示。
其中,D=1,2,3……9;P=probability。
2.2 本福特定律的檢驗方法
本文主要通過構建模型檢測數據首位數字的分布頻率是否符合本福特定律,最后采用卡方擬合優度進行檢驗。
2.2.1 提出假設
本文針對卡方檢驗,提出以下兩個假設。
原假設M1:樣本數據首位數(1~9)的頻率分布遵循本福特定律。
備擇假設M2:樣本數據首位數(1~9)的頻率分布不遵循本福特定律。
2.2.2 卡方擬合優度檢驗
卡方統計量為:
其中,Ai是樣本數據中首位出現數字的實際分布頻率,即實際觀測值;Ti是本福特定律下首位出現數字的理論分布頻率,即理論推斷值。若卡方統計量的檢驗結果小于臨界值時,接受原假設M1,說明統計數據首位數字的頻率分布符合本福特定律。若大于臨界值時,接受備擇假設M2,說明統計數據首位數字的頻率分布不符合本福特定律。
3 本福特定律驗證的案例引入及模型構建
上市公司常見的財務舞弊手段包括收入造假、費用造假、高估資產、偽造交易的真實性等,在進行數據造假的過程中便使得數據首位數的分布概率與本福特定律產生偏離。因此,本文主要選取了10家樣本公司近15年的財務數據進行本福特定律檢驗。目的是觀測各財務數據與本福特定律是否顯著偏離,比較偏離程度并討論其深層次的含義。
3.1 樣本選擇與數據來源
如表2所示,分別選取因財務造假而被公開處罰或在網上留下財務舞弊記錄的5家上市公司(記為“負向公司”)和5家未被處罰過的公司(記為“正向公司”)作為本文的研究樣本。將10家公司所公布的經審計后的資產負債表、利潤表數據中部分不具備隨機產生和雜亂無章特點的數據刪除后,作為本案例分析基礎。最終得到共計1 167列案例研究樣本。
3.2 模型構建
3.2.1 數據預處理
數據清洗即去除信息中的重復信息和錯誤信息,這些數據會影響后續的分析,數據清洗的過程對數據分析十分有必要。
樣本公司數據取自其公布的資產負債表和利潤表2008年3月至2022年6月的季報、中報和年報,在剔除了人為因素影響的會計信息和空缺信息后中國平安的有效數據共計4 400個、招商銀行的有效數據共計3 125個、五糧液的有效數據共計3 070個、隆基股份的有效數據共計3 124個、萬科A的有效數據共計3 450個、*SR國藥的有效數據共計2 506個、金亞科技的有效數據共計2 319個、圣萊達的有效數據共計2 399個、欣泰電氣的有效數據共計1 729個、太化股份的有效數據共計2 707個。
3.2.2 數據采集
數據分析的起始性操作是對數據進行采集。沒有數據,就無法分析。本文主要運用Python語言爬取預先處理好的目標企業財務數據的方式實現數據采集。
本文算法主要通過調用Os和Re模塊改變當前工作目錄到存放數據所在的文件夾路徑并返回指定文件夾包含的數據文件,在抓取了檔案的位置后,通過Pandas和Numpy模塊對本文所需要的詳細數據進行運算和解析,最終數據會保存在指定的文件中以備后續運用Stats模塊進行卡方檢驗。關鍵代碼如下:
import os,re
import pandas as pd
from scipy import stats
import numpy as np
np.seterr(divide='ignore', invalid='ignore')
pd.set_option('max_rows', None)
3.2.3 數據清洗
數據清洗即去除信息中的重復信息和錯誤信息,這些數據會影響后續的分析,數據清洗的過程對數據分析十分有必要。由于企業可能存在虧損情況,則利潤表中的數據會以負數形式呈現,而因負值數據和正值數據的開頭數字不好同比,本文將負值數據取絕對值后再進行后續操作。主要包括以下步驟:去除原數據中數字間的逗號;將原數據中的負數轉為正數。除此之外,還需要剔除過小值。關鍵代碼如下:
def Get_First_num(input):
output = 0
try:
if input != 'nan' and len(input) > 0:
input = float(input.replace(',', ''))
input = abs(input)
if input > 20 or input <-20:
output = int(str(input)[0])
else:
pass
3.2.4 統計首位字母出現次數
在對數據進行清理后,定義計數規則,對原數據中出現的0~9的次數進行統計,統計出各目標公司中各數字出現的概率。關鍵代碼如下:
def Count_num(num_count, input):
output = Get_First_num(input)
if output == 1:
num_count[0] += 1
elif output == 2:
num_count[1] += 1
elif output == 3:
num_count[2] += 1
elif output == 4:
num_count[3] += 1
elif output == 5:
num_count[4] += 1
elif output == 6:
num_count[5] += 1
elif output == 7:
num_count[6] += 1
elif output == 8:
num_count[7] += 1
elif output == 9:
num_count[8] += 1
3.2.5 計算數字分布
計算依照本福特定律,財務報表中各個首字母的期望次數并進行卡方檢驗。關鍵代碼如下:
def Get_expected(sum_sheet):
expected_benford =[]
for i in sum_sheet:
benford = [0.301, 0.1761, 0.1249, 0.0969, 0.0792, 0.0669 ,0.058, 0.0512, 0.0458? ]
list1 =[round( x *i ,2)? for x in benford]
expected_benford.append(list1)
return expected_benford
3.2.6 讀入代碼進行技術并輸出結果
讀入代碼進行計算后,將最終的計算得出的結果存在dataframe并輸出結果。關鍵代碼如下:
for root, dirs, files in os.walk(path):
for file in files:
profitsheet_num = compute_num(path, file)
actual_num = profitsheet_num
for i in range(0, len(profitsheet_num)):
sum_sheet.append(sum(profitsheet_num[i]))
expected_benford = Get_expected(sum_sheet)
finally_answer = Chi_test(len(profitsheet_num), actual_num, expected_benford, P)
sum_sheet.clear()
actual_num.clear()
expected_benford.clear()
print(file)
company.append(re.findall('(.*?)\.', file)[0])
cannot_reject.append(finally_answer.count(0))
can_reject.append(finally_answer.count(1))
dict = {"B_cannot_reject": cannot_reject,
"can_reject": can_reject,
"A_company": company,
}
df_final = pd.DataFrame(dict)
df_final.to_excel('{}\{}.xlsx'.format(path1,pan))
4 檢驗結果及分析
檢驗結果如表3和表4所示,我們可以清晰地看出“負向公司”的偏離比明顯高于“正向公司”,這在一定程度上說明了本福特定律對未發現財務造假公司和已存在造假行為公司有所區分,尤其是在已存在舞弊行為公司身上出現大幅度偏離本福特定律分布的現象。同時,這也意味著通過本福特定律在審計過程中對審計對象進行初步篩選是可靠的。
通過運用此定律,審計人員對目標企業進行審計時,可以先將所分析的數據劃分為“一般關注”“重點關注”和“異?!?類,在對比目標數據值與理論推測值符合程度的好壞后,確定哪張報表、哪項數據對審計分析影響不大,哪張報表、哪項數據存在異常需要被重點關注,以此來提升審計監督的效率和有的放矢地控制審計監督的成本。
5 政策建議
為提升審計人員的審計效率,本文提出以下的建議。
5.1 在開展審計工作前,審計人員可預先進行抽樣檢驗
通過運用本福特模型,審計人員在開展審計工作前,可以測度該企業的財務數據是否與本福特定律的偏離程度相一致,若是偏離程度過大,則細查是哪張報表、哪個科目存在數據失真失實的問題,再以此為突破口,然后究根溯源,提升審計取樣的針對性。
5.2 企業完善會計內部控制制度
在聘請外部機構進駐企業進行審計前,企業的內審部門應該預先進行自檢、自查、自監,對企業自身財務報表的準確性和真實性負責。通過完善企業內部控制制度,對企業的下屬控股的子公司進行統一管理和統一審查,不給財務造假的人有可乘之機。除此之外,企業還應提升自身的電子信息化程度,將高新技術與內部審計人員結合,通過外部購買或內部開發的方式,建立一套適合自身企業的電子信息化的財務檢查系統,運用計算機技術來甄別財務數據、防控審計風險,在發現疑似人為修改和偽造的虛假信息時發出報警信息,為內審部門的科學審計提供技術保障。
5.3 政府強化對企業財務的監督,加大處罰力度
企業進行財務舞弊的原因:一是在于舞弊成本過低,在巨大收益面前,企業高管往往會忽視財務造假所帶來的處罰風險;二是在于企業高管存在僥幸心理,認為只要造假技術水平足夠高,那么財務舞弊很難被發現,因此雖然政府加大了對各行各業的監管力度,但企業仍會頂風作案。
為此,各級政府除了需要完善現有企業財務監督和管理的制度外,還需加大對造假企業的懲罰力度,這種懲罰需要經濟罰款、行政制裁和媒體曝光等多領域、全方位、立體化并行,實現處罰上的一體化,以此來扶正各行各業的經營風氣。
【參考文獻】
【1】王虓,張銳.本福特定律在審計抽樣中的應用研究[J].天然氣技術,2009(04):66-67.
【2】羅玉波.本福特定律在財務審計中的應用研究[J].會計之友,2010(09):76-78.
【3】劉云霞,吳曦明,曾五一.關于綜合運用Benford法則和面板模型檢測統計數據質量的研究[J].統計研究,2012,29(11):74-78.
【4】羅玉波.大數據環境下本福特定律的審計應用研究[J].中國內部審計,2018(01):24-30.
【5】緱小平,楊金忠.本福特定律在部門決算數據質量評估中的應用研究[J].公共財政研究,2019(02):26-42.
【6】 彭仕宸.上市公司財務造假動因及手段研究[J].技術與市場,2021(04):138-141.
【7】吳冬惠.基于本福特定律的財政大數據審計驗證方法[J].審計與理財,2021(07):10-11.
【8】丁文浩,朱齊亮.基于Python的招聘數據爬取與分析[J].網絡安全技術與應用,2022(01):43-45.
【作者簡介】邱晨煒(1994-),男,廣西南寧人,壯族,碩士研究生在讀,從事會計信息系統和大數據分析研究。