Audit Statistics

提供审计抽样设计与数据异常检测、实质性分析及趋势预测的统计方法应用指导。

Audits

Pass

Install

openclaw skills install audit-statistics

audit-statistics

统计学方法在审计实践中的应用指南。帮助审计人员在实际审计项目中选择合适的统计方法、执行分析、解读结果。


使用场景

当审计项目涉及以下需求时使用本技能:

  • 审计抽样方案设计
  • 数据异常检测与风险识别
  • 实质性分析程序
  • 总体金额推断
  • 趋势分析与预测

一、抽样方法速查

1. 随机抽样(Simple Random Sampling)

每个样本被选中的概率相等
适用:样本量较小、总体较为同质
优点:最基础的抽样方法,结果可直接推断总体
缺点:样本量要求较大才能保证精度

2. 分层抽样(Stratified Sampling)

将总体按某一特征分层(金额区间/业务类型/风险等级)
每层独立抽样,层内可随机或PPS
适用:总体内部差异大,如按账龄或金额分层
优点:提高样本代表性,减少方差
缺点:需要明确的分层变量

3. 货币单元抽样 MUS(Monetary Unit Sampling)

以"元"为抽样单元,金额越大被抽中概率越高
适用:应收账款、应付账款、存货等账面价值较大科目
优点:自然聚焦高风险大额项目
缺点:零余额项目不会被抽中;不适合低价值总体

4. 属性抽样(Attribute Sampling)

测试内部控制是否存在/有效(符合=1,不符合=0)
适用:内控测试样本量确定
公式:n = (Z² × p × (1-p)) / E²
Z = 置信系数(95%→1.96),p = 预期偏差率,E = 可容忍偏差率

5. 变量抽样(Variable Sampling)

推断总体金额错报范围
常用方法:
- 估计均值法(temporal mean estimation)
- 差异估计法(difference estimation)
- 比率估计法(ratio estimation)
适用:存货、固定资产等需要推断真实价值的科目

6. PPS抽样(Probability Proportional to Size)

按项目金额占总体金额的比例确定抽样权重
与MUS类似,但记录抽样而非货币单元
适用:大额项目优先的实质性测试

二、数据分析技术

Benford 定律

数字首位分布规律(自然产生的数据)
首位数字 d出现概率:P(d) = log₁₀(1 + 1/d)

检测步骤:
1. 提取数据首位数字
2. 统计实际分布频率
3. 与理论值比较(卡方检验/K-S检验)
4. 偏差过大→可能存在数据造假或人为修饰

适合检验:销售金额、费用报销、采购订单、发票号

离群值检测

1. 3σ原则:超出均值±3个标准差 → 离群点
2. IQR四分位距:< Q1-1.5×IQR 或 > Q3+1.5×IQR → 离群点
3. Z-score:|Z| > 2.5 或 3 → 离群点
4. 箱线图可视化

适用:大额异常交易、疑似截值(round-number)数据

相关性 & 回归

目的:发现科目间不合理的逻辑关系
举例:
- 收入增长率 vs 应收账款增长率(正常应相近)
- 水电费 vs 生产量(应有正相关)
- 运费 vs 销售额(应有正相关)

审计应用:构建期望值模型,解释不了的差异→进一步追查

三、分析性复核步骤

Step 1: 确定分析目标
  → 识别可能存在错报的领域

Step 2: 建立预期值
  → 行业基准 / 上期数据 / 预算数据 / 运营逻辑

Step 3: 计算实际值与预期值的差异
  → 差异金额 = |实际 - 预期|
  → 差异率 = 差异 / 预期

Step 4: 统计显著性判断
  → 差异率 > 可容忍差异率 → 需追查
  → F检验/t检验判断差异是否显著

Step 5: 记录分析结论
  → 差异可解释(正常经营原因)→ 风险低
  → 差异无法解释 → 扩大测试范围

四、实质性测试中的统计应用

截止测试(Cut-off Testing)

检查结账日前后N天的交易
统计方法:按日期分布检验是否有"人为调整"迹象
(如:12月31日集中确认收入、12月31日后大量退货)

期后事项检查

统计检查结账日后2个月内的大额调整凭证
异常值检测:如果存在某类调整集中发生 → 关注管理层估计变更

五、Python 实现示例

import pandas as pd
import numpy as np
from scipy import stats

# Benford定律检验
def benford_test(data, col):
    observed = data[col].dropna().astype(str).str[0].astype(int)
    observed = observed[observed.between(1, 9)]
    observed_counts = observed.value_counts().sort_index()
    expected = [np.log10(1 + 1/d) for d in range(1, 10)]
    chi2, p = stats.chisquare(observed_counts.values, f_exp=[e*len(observed) for e in expected])
    return chi2, p

# 离群值检测(IQR)
def detect_outliers_iqr(series, k=1.5):
    q1, q3 = series.quantile([0.25, 0.75])
    iqr = q3 - q1
    lower = q1 - k * iqr
    upper = q3 + k * iqr
    return series[(series < lower) | (series > upper)]

# 分层抽样
def stratified_sample(df, stratify_col, sample_size, weight_col=None):
    strata = df.groupby(stratify_col)
    if weight_col:
        # PPS within each stratum
        sampled = strata.apply(lambda x: x.sample(n=min(len(x), max(1, int(sample_size * x[weight_col].sum() / df[weight_col].sum()))), random_state=42))
    else:
        sampled = strata.apply(lambda x: x.sample(frac=sample_size/len(df), random_state=42))
    return sampled.reset_index(drop=True)

六、抽样方案设计checklist

□ 明确审计目标(内控测试 OR 实质性测试)
□ 定义总体范围(科目/期间/业务线)
□ 确定抽样单元
□ 选择抽样方法(MUS / 分层 / 属性等)
□ 计算样本量
□ 随机选号(随机数表或Excel RAND)
□ 执行抽样
□ 评价样本结果(偏差率 / 错报金额)
□ 推断总体结论
□ 记录抽样程序,留存文件

相关标准

  • ISA 530:Audit Sampling(审计抽样)
  • ISA 520:Analytical Procedures(分析性复核)
  • PCAOB AS2315:Audit Sampling