运行时依赖
安装命令
点击复制技能文档
audit-statistics 是统计学方法在审计实践中的应用指南。帮助审计人员在实际审计项目中选择合适的统计方法、执行分析、解读结果。
使用场景 当审计项目涉及以下需求时使用本技能: 审计抽样方案设计 数据异常检测与风险识别 实质性分析程序 总体金额推断 趋势分析与预测
一、抽样方法速查
- 随机抽样(Simple Random Sampling)
- 分层抽样(Stratified Sampling)
- 货币单元抽样 MUS(Monetary Unit Sampling)
- 属性抽样(Attribute Sampling)
- 变量抽样(Variable Sampling)
- 估计均值法(temporal mean estimation)
- 差异估计法(difference estimation)
- 比率估计法(ratio estimation)
- PPS抽样(Probability Proportional to Size)
二、数据分析技术 Benford 定律 数字首位分布规律(自然产生的数据) 首位数字 d出现概率:P(d) = log₁₀(1 + 1/d) 检测步骤:
- 提取数据首位数字
- 统计实际分布频率
- 与理论值比较(卡方检验/K-S检验)
- 偏差过大→可能存在数据造假或人为修饰
- 3σ原则:超出均值±3个标准差 → 离群点
- IQR四分位距:< Q1-1.5×IQR 或 > Q3+1.5×IQR → 离群点
- Z-score:|Z| > 2.5 或 3 → 离群点
- 箱线图可视化
- 收入增长率 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=[elen(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