# Data Analytics Anomaly Detection

> 运用数据分析技术识别异常交易和潜在舞弊，涵盖本福特定律、趋势分析、重复检测和关联方筛查

- Skill: `guoliang1114-boop/data-analytics-anomaly-detection` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add guoliang1114-boop/data-analytics-anomaly-detection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/guoliang1114-boop/data-analytics-anomaly-detection/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: guoliang1114-boop (https://skillmd.com/u/guoliang1114-boop)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/guoliang1114-boop/data-analytics-anomaly-detection

---


# 数据分析与异常检测

## When To Use

- 审计中需要对大额交易数据集执行分析性程序时
- 需要识别潜在舞弊风险或异常交易时
- 客户数据量大，传统抽样方法可能遗漏异常时
- 需要评估财务数据的合理性和一致性时
- 关联方交易筛查和利益冲突识别时
- 持续审计或监控审计中需要自动化异常检测时

## Tools

- `bash` - 运行Python/R数据分析脚本
- `write` - 创建分析脚本和发现报告
- `read` - 读取交易数据文件（CSV、Excel）
- `grep` - 搜索数据文件中的特定模式

## Framework

### 1. 本福特定律 (Benford's Law)

参照 Nigrini, M.J. (2012) "Benford's Law: Applications for Forensic Accounting, Auditing, and Fraud Detection"

本特定律预测自然数据集中首位数字的频率分布:

| 首位数字 | 预期频率 | 预期比例 |
|---------|---------|---------|
| 1 | 30.1% | 0.301 |
| 2 | 17.6% | 0.176 |
| 3 | 12.5% | 0.125 |
| 4 | 9.7% | 0.097 |
| 5 | 7.9% | 0.079 |
| 6 | 6.7% | 0.067 |
| 7 | 5.8% | 0.058 |
| 8 | 5.1% | 0.051 |
| 9 | 4.6% | 0.046 |

**适用条件:**
- 数据集规模 ≥ 500条记录（理想 ≥ 1,000条）
- 数据跨越多个数量级（如1-10,000范围）
- 数据为自然生成而非人为设定（如价格表不适用）
- 不适用于受限数据（如工资在特定范围内）

**统计检验方法:**
- **Z值检验**: Z = (观测比例 - 预期比例) / 标准误差
  - |Z| > 1.96 表示在95%置信水平下显著偏离
  - |Z| > 2.58 表示在99%置信水平下显著偏离
- **Chi-Square检验**: χ² = Σ[(观测频次-预期频次)²/预期频次]
  - df=8, χ²临界值(0.05) = 15.51
- **MAD (Mean Absolute Deviation)**:
  - MAD ≤ 0.006: 接近一致性
  - 0.006 < MAD ≤ 0.012: 可接受
  - 0.012 < MAD ≤ 0.015: 边缘可接受
  - MAD > 0.015: 不可接受

### 2. 趋势分析 (Trend Analysis)

参照 ISA 520 Analytical Procedures 及 AICPA AU-C 520:

**水平分析 (Horizontal Analysis):**
- 同比分析 (YoY): (本期 - 上期) / 上期 × 100%
- 环比分析 (MoM/QoQ): 连续期间变动分析
- 异常阈值: 变动超过 ±10% 或 ±2个标准差需调查

**垂直分析 (Vertical Analysis):**
- 各科目占收入/总资产的百分比
- 与行业基准对比（参考公开行业数据）
- 结构异常阈值: 占比变动超过 ±3个百分点

**趋势断裂检测:**
- 移动平均偏离: 实际值偏离3期/6期移动平均超过2σ
- 线性回归残差: 残差超过 ±2σ的观测点
- 季节性调整后异常: 剔除季节性因素后的异常波动

**关键比率分析:**
- 毛利率波动: 与行业均值偏离超过 ±5个百分点
- 应收账款周转天数: 与行业均值偏离超过 ±15天
- 存货周转天数: 与行业均值偏离超过 ±20天
- 关联方往来余额占比异常增长

### 3. 重复检测 (Duplicate Detection)

**完全重复检测:**
- 金额+日期+供应商完全一致的发票
- 金额+日期+摘要完全一致的日记账分录
- 金额+银行账号完全一致的付款记录

**近似重复检测:**
- 金额相同(±0.01) + 日期相近(±3天) + 供应商不同
- 金额相同 + 供应商相同 + 发票号相似（编辑距离≤2）
- 反向分录: 同一科目金额相同方向相反，间隔≤30天

**阈值设置:**
- 完全匹配: 100%精确匹配
- 近似匹配: 金额容差±0.01，日期容差±3天
- 金额舍入: 金额为整百/整千的交易比例（正常应<10%）

### 4. 关联方筛查 (Related Party Screening)

参照 ISA 550 Related Parties 及 SEC Regulation S-K Item 404:

**地址匹配:**
- 员工地址与供应商地址匹配
- 供应商之间地址重叠
- PO Box或虚拟地址识别

**电话/邮箱匹配:**
- 供应商联系信息与员工信息匹配
- 多个供应商使用相同电话或邮箱

**名称相似度:**
- 供应商名称与已知关联方名称相似（编辑距离/Levenshtein距离）
- 缩写、别名、曾用名匹配
- 中英文名称交叉匹配

**交易模式筛查:**
- 无商业实质的大额交易（金额大、频率低）
- 交易金额恰好在审批限额以下
- 新成立供应商短期内大额交易
- 年末集中交易或跨期交易

### 5. 异常值检测 (Outlier Detection)

**统计方法:**
- **Z-Score方法**: |Z| > 3 的观测值为异常
- **IQR方法**: < Q1 - 1.5×IQR 或 > Q3 + 1.5×IQR
- **聚类分析**: K-means或DBSCAN识别不属于任何正常群组的交易
- **时间序列异常**: 孤立森林(Isolation Forest)或ARIMA残差分析

**业务规则:**
- 单笔交易金额超过该科目月均金额的3倍
- 非工作时间（周末/节假日）录入的交易
- 月末最后2天或年末最后1周的大额调整分录
- 同一用户短时间内大量创建或修改交易

## Workflow

### Step 1: 数据获取与准备
1. 从客户系统导出完整交易数据（GL、AP、AR、Bank）
2. 验证数据完整性（记录数核对、金额合计与TB比对）
3. 清洗数据（处理空值、标准化格式、统一币种）
4. 建立数据字典，记录字段含义和数据类型
5. 备份原始数据，确保可追溯

### Step 2: 选择分析方法
1. 根据审计目标选择适用的分析技术
2. 评估数据是否满足方法的前提条件
3. 确定异常阈值和判断标准
4. 记录方法选择的依据

### Step 3: 执行分析
1. 按选定方法执行数据分析
2. 记录分析过程和中间结果
3. 标记异常发现
4. 交叉验证不同方法的结果

### Step 4: 异常调查
1. 对标记的异常逐一评估
2. 排除已知合理原因（如正常业务波动）
3. 对无法解释的异常获取额外证据
4. 与客户讨论确认

### Step 5: 汇总发现
1. 按风险等级分类发现
2. 评估对审计意见的影响
3. 编制数据分析发现报告

## Output Format

### 数据分析发现报告模板

```
============================================================
数据分析发现报告 (Data Analytics Findings Report)
============================================================
客户名称: [客户名称]
报告期间: [YYYY年MM月DD日 至 YYYY年MM月DD日]
编制人: [姓名] | 编制日期: [YYYY-MM-DD]
复核人: [姓名] | 复核日期: [YYYY-MM-DD]
索引号: [索引号]
============================================================

一、分析概述
------------------------------------------------------------
分析目标: [本次数据分析的审计目标]
数据来源: [系统名称、导出日期、记录数、金额范围]
分析方法: [使用的方法列表]
分析期间: [数据覆盖的时间范围]

数据质量评估:
- 总记录数: [N]
- 有效记录数: [N] ([占比%])
- 缺失/异常记录: [N] ([占比%])
- 数据完整性验证: 与TB核对 [一致/差异¥X]

二、本福特定律分析
------------------------------------------------------------
分析对象: [例: 应付账款发票金额首位数字分布]
样本量: [N]条记录
金额范围: ¥[min] - ¥[max]

数字 | 观测频次 | 观测比例 | 预期比例 | 偏差    | Z值    | 标记
1    | [N]     | [%]     | 30.1%   | [±%]   | [Z]   | [*/**/-]
2    | [N]     | [%]     | 17.6%   | [±%]   | [Z]   |
3    | [N]     | [%]     | 12.5%   | [±%]   | [Z]   |
4    | [N]     | [%]     | 9.7%    | [±%]   | [Z]   |
5    | [N]     | [%]     | 7.9%    | [±%]   | [Z]   |
6    | [N]     | [%]     | 6.7%    | [±%]   | [Z]   |
7    | [N]     | [%]     | 5.8%    | [±%]   | [Z]   |
8    | [N]     | [%]     | 5.1%    | [±%]   | [Z]   |
9    | [N]     | [%]     | 4.6%    | [±%]   | [Z]   |

统计检验结果:
- Chi-Square: [值] (临界值15.51, df=8, α=0.05) → [通过/未通过]
- MAD: [值] → [一致性/可接受/边缘/不可接受]

注: * 表示95%置信水平显著偏离, ** 表示99%置信水平显著偏离

偏离分析:
[对显著偏离的首位数字，分析其可能原因，列出相关交易]

三、趋势分析
------------------------------------------------------------

3.1 关键科目变动分析

科目             | 上期金额    | 本期金额    | 变动额     | 变动率   | 阈值  | 标记
营业收入         | ¥[M]       | ¥[M]       | ¥[M]     | [%]    | ±10% | [-/!]
营业成本         | ¥[M]       | ¥[M]       | ¥[M]     | [%]    | ±10% |
管理费用         | ¥[M]       | ¥[M]       | ¥[M]     | [%]    | ±10% | [!]
应收账款         | ¥[M]       | ¥[M]       | ¥[M]     | [%]    | ±10% | [!]
应付账款         | ¥[M]       | ¥[M]       | ¥[M]     | [%]    | ±10% |

标记说明: [-] 无异常, [!] 超过阈值需调查

3.2 异常变动调查

异常科目: [名称]
变动描述: [变动率及方向]
客户解释: [管理层的解释]
审计验证: [获取的佐证证据]
结论: [解释是否合理，是否需要调整]

3.3 毛利率分析

期间      | 收入      | 成本      | 毛利     | 毛利率  | 行业均值 | 偏离
Q1 2024   | ¥[M]     | ¥[M]     | ¥[M]    | [%]    | [%]    | [±pp]
Q2 2024   | ¥[M]     | ¥[M]     | ¥[M]    | [%]    | [%]    | [±pp]
Q3 2024   | ¥[M]     | ¥[M]     | ¥[M]    | [%]    | [%]    | [±pp]
Q4 2024   | ¥[M]     | ¥[M]     | ¥[M]    | [%]    | [%]    | [±pp]
全年      | ¥[M]     | ¥[M]     | ¥[M]    | [%]    | [%]    | [±pp]

四、重复交易检测
------------------------------------------------------------

4.1 完全重复检测

检测范围: [例: AP发票, 记录数: N]
检测维度: 金额 + 日期 + 供应商名称

发现数: [N]组完全重复

序号 | 原始记录ID | 重复记录ID | 金额     | 日期       | 供应商    | 风险等级
1    | INV-00456  | INV-00789  | ¥15,000 | 2024-03-15 | A供应商   | 高
2    | INV-01234  | INV-01567  | ¥8,500  | 2024-06-20 | B供应商   | 高

4.2 近似重复检测

检测维度: 金额(±0.01) + 日期(±3天) + 供应商

发现数: [N]组近似重复

序号 | 记录A     | 记录B     | 金额差异 | 日期差异 | 供应商差异 | 风险等级
1    | [ID]      | [ID]      | ¥0.00   | 2天     | 同一      | 高

4.3 反向分录检测

检测范围: [例: GL调整分录]
检测维度: 同一科目金额相同方向相反，间隔≤30天

发现数: [N]组反向分录

序号 | 分录A     | 分录B     | 金额     | 方向  | 间隔天数 | 风险等级
1    | [ID]      | [ID]      | ¥50,000 | 借/贷 | 5天      | 中

五、关联方筛查
------------------------------------------------------------

5.1 地址匹配

匹配类型: 供应商地址 vs 员工地址
发现数: [N]条匹配

序号 | 供应商名称 | 供应商地址      | 员工姓名 | 员工地址      | 匹配度
1    | [名称]     | [地址]          | [姓名]  | [地址]        | [高/中/低]

5.2 电话/邮箱匹配

匹配类型: 供应商联系方式 vs 员工联系方式
发现数: [N]条匹配

序号 | 供应商名称 | 联系电话/邮箱    | 员工姓名 | 联系电话/邮箱
1    | [名称]     | [信息]          | [姓名]  | [信息]

5.3 名称相似度分析

分析对象: 供应商主数据 vs 已知关联方清单 + 员工姓名
相似度算法: Levenshtein Distance / Jaro-Winkler
阈值: 相似度 > 70%

发现数: [N]条相似

序号 | 供应商名称     | 关联方/员工    | 相似度  | 匹配类型
1    | [名称]         | [名称]        | [%]    | [缩写/音似/形似]

5.4 交易模式异常

筛查规则: [以下按适用规则列出]

发现: [按规则列出异常交易]

六、异常值检测
------------------------------------------------------------

6.1 金额异常值

方法: [Z-Score / IQR / 其他]
分析对象: [科目名称]

发现数: [N]笔异常大额交易

序号 | 交易ID     | 日期       | 金额      | 统计值    | 风险等级
1    | [ID]       | [日期]     | ¥[金额]   | Z=[值]   | [高/中]

6.2 时间异常

筛查规则: 非工作时间录入、月末大额调整等
发现数: [N]笔

序号 | 交易ID     | 日期       | 时间      | 金额      | 异常类型
1    | [ID]       | [日期]     | [时间]    | ¥[金额]   | [周末录入/月末调整]

6.3 审批限额规避

筛查规则: 交易金额恰好在审批限额以下（如限额¥50,000，金额¥49,XXX）
发现数: [N]笔

序号 | 交易ID     | 金额      | 审批限额   | 差额    | 频率(30天内)
1    | [ID]       | ¥49,800  | ¥50,000   | ¥200   | [N]次

七、发现汇总与风险评估
------------------------------------------------------------

编号 | 发现类别     | 发现描述               | 影响金额    | 风险等级 | 审计应对
F-01 | 本福特偏离   | [简述]                | ¥[金额]    | 高      | [应对措施]
F-02 | 重复交易     | [简述]                | ¥[金额]    | 高      | [应对措施]
F-03 | 关联方       | [简述]                | ¥[金额]    | 中      | [应对措施]
F-04 | 异常值       | [简述]                | ¥[金额]    | [等级]  | [应对措施]

风险等级定义:
- 高: 可能存在舞弊或重大错报，需要立即调查并获取充分证据
- 中: 需要额外关注，可能需要扩大测试范围
- 低: 已记录但风险可控，纳入持续监控

八、技术附录
------------------------------------------------------------
分析工具: [Python 3.x / R / IDEA / ACL / Excel]
脚本版本: [版本号]
执行环境: [环境描述]
数据处理日志: [关键数据清洗和转换步骤]

============================================================
```

## Diagnostic Questions

1. **数据可用性**: 客户系统能否导出完整的交易级数据？格式是什么（CSV/Excel/数据库）？
2. **数据量级**: 交易数据量有多大？是否满足本福特定律分析的最低要求（≥500条）？
3. **分析目标**: 本次数据分析的首要目标是什么（完整性/准确性/舞弊筛查）？
4. **历史基准**: 是否有历史期间的数据作为趋势对比基准？
5. **行业数据**: 是否有可参考的行业均值数据？
6. **关联方清单**: 客户是否提供了已知关联方清单和员工名册？
7. **审批矩阵**: 客户的审批权限矩阵是什么？（用于审批限额规避分析）
8. **系统限制**: 客户系统是否有数据导出限制或字段脱敏要求？

## Verification

- [ ] 数据完整性已验证（导出数据合计与TB一致）
- [ ] 分析方法的前提条件已满足（如本福特定律的数据量要求）
- [ ] 异常阈值设置有合理依据
- [ ] 所有统计检验的p值或临界值已记录
- [ ] 异常发现已排除已知合理原因
- [ ] 关联方筛查结果已与客户确认
- [ ] 发现分类和风险评估合理
- [ ] 分析脚本可复现（已保存脚本文件）

## Saving

```
audit/
├── [客户名称]/
│   ├── [报告期间]/
│   │   ├── data-analytics/
│   │   │   ├── raw-data/
│   │   │   │   ├── GL-export-YYYYMMDD.csv
│   │   │   │   ├── AP-export-YYYYMMDD.csv
│   │   │   │   └── AR-export-YYYYMMDD.csv
│   │   │   ├── scripts/
│   │   │   │   ├── benford-analysis.py
│   │   │   │   ├── duplicate-detection.py
│   │   │   │   └── related-party-screening.py
│   │   │   ├── output/
│   │   │   │   ├── benford-results.csv
│   │   │   │   ├── duplicates-found.csv
│   │   │   │   └── related-party-matches.csv
│   │   │   ├── DA-Findings-Report.md
│   │   │   └── DA-Technical-Appendix.md
```

## Capability Upgrade

### Mode Selection

- **Quick**: 对给定数据字段提出异常检测方法和风险点。
- **Standard**: 执行数据质量检查、异常检测、发现分级和调查建议。
- **Deep**: 形成可复现分析包，包含数据字典、清洗规则、脚本、结果表、抽样建议和管理层报告。

### Investigation Loop

异常不是结论。每个异常结果必须进入闭环：数据质量排除、业务解释收集、证据抽样、风险评级、管理层回应和后续程序。

### Quality Gates

- [ ] 数据范围、期间、字段口径和缺失值处理已说明。
- [ ] 异常规则有业务含义，不只是统计离群。
- [ ] 结果区分误报、待调查和高风险事项。
- [ ] 分析过程可复现，保留参数、脚本或规则。
- [ ] 输出能连接到审计程序、调查程序或整改行动。

### Deliverable Catalog

| Deliverable | When to use | Minimum content | Format |
|-------------|-------------|-----------------|--------|
| Data quality assessment | 分析前 | 数据范围、字段、缺失、重复、异常和口径问题 | Markdown / Excel |
| Analytics test plan | 设计数据测试 | 目标、规则、数据源、阈值、输出和复核方式 | Markdown |
| Anomaly results table | 输出异常 | 异常编号、规则、金额、对象、风险和状态 | Excel / CSV |
| Findings report | 管理层或审计汇报 | 方法、结果、重点异常、影响和建议 | Word / PPT |
| Technical appendix | 保留可复现过程 | 数据处理、参数、脚本、规则和限制条件 | Markdown |
| Investigation tracker | 后续核查 | 异常、owner、解释、证据、结论和整改状态 | Excel |

