💰

研究・監査の不正検知・データ品質管理に。5つの法則で見守る統計分析ツール「lawkit」を、Claude CodeとRustで作りました

に公開

はじめに

kako-junです。

ビジネスや研究において、データ分析は不可欠です。(よう知らんけど)
しかし、従来の統計分析ツールでは、一度に一つの統計法則しか適用できず、データに潜む複雑なパターンや異常を見逃してしまうことってありませんか?

例えば、財務データがベンフォードの法則に従っているかを確認するだけでは、パレートの法則や正規分布からの逸脱を見落とし、全体像を把握できないかもしれません。

今回、こうした課題を解決するために、複数の統計法則を同時に適用し、データの隠れたパターンや異常を自動で検知する「多法則統計分析ツールキット lawkit」を開発し、OSSとして公開しました。

https://github.com/kako-jun/lawkit
https://docs.rs/lawkit-core

lawkit は、不正検知、データ品質評価、ビジネスインテリジェンスなど、幅広い分野でデータの信頼性を高め、より深い洞察を得るための強力なツールです。

例えば、従来のツールが一度に一つの法則しか分析できないのに対し、lawkit は複数の法則を同時に適用し、統合的な分析結果を提供します。

# 不正検知のためのベンフォード法則分析
$ lawkit benf test_data.txt
Benford Law Analysis Results

Dataset: test_data.txt
Numbers analyzed: 500
[CRITICAL] Dataset analysis

# 統計法則に従うテストデータ生成
$ lawkit generate pareto --samples 100 | head -5
5.48
1.03
1.04
1.42
1.61

# スマート統合による多法則分析
$ lawkit analyze test_data.txt
Statistical Laws Integration Analysis

Dataset: test_data.txt
Numbers Analyzed: 500
Laws Executed: 5 (benf, pareto, zipf, normal, poisson)

Integration Metrics:
  Overall Quality Score: 0.394
  Consistency Score: 0.821
  Conflicts Detected: 14
  Recommendation Confidence: 0.100

この記事では、lawkit の主な機能、使い方、そして開発の背景についてご紹介します。

なぜlawkitなのか?

lawkit は、従来の統計分析の限界を打ち破り、データからより深い洞察を引き出すために設計されました。

  • 多角的な視点: ベンフォード、パレート、ジップ、正規、ポアソンといった複数の統計法則を同時に適用し、データの全体像を把握します。
  • 矛盾の自動検出: 各法則の結果を統合的に分析し、矛盾点や異常を自動で検知します。
  • 高速性: Rustで構築されており、並列処理を活用することで大規模なデータセットも高速に処理します。
  • 自動化との連携: JSON、CSV、YAMLなど多様な構造化出力形式に対応しており、AIツールや自動化ワークフローにシームレスに組み込めます。

✨ 主な機能

  • 多法則分析: ベンフォード、パレート、ジップ、正規、ポアソン分布のスマート統合分析。
  • 国際対応: 英語、日本語、中国語、ヒンディー語、アラビア語の5言語に対応した数値解析。
  • 高度分析: 時系列分析、外れ値検出(LOF、Isolation Forest、DBSCAN)、そして統計パターンの長期的な変遷を追跡する「メタチェーン」機能。
  • 高性能: Rust製で、並列処理により大規模データセットを効率的に処理。
  • 多様な出力形式: CLIでの人間可読な出力に加え、JSON/CSV/YAML/TOML/XMLなど、機械可読な構造化形式にも対応。
  • ライブラリとして利用可能: lawkitのコア機能はlawkit-coreというクレートとして公開しています。これにより、あなたのRustアプリケーションに多法則統計分析機能を直接組み込めます。

インストール

lawkitはCLIツールとしてだけでなく、Rustライブラリ、PythonやNode.jsのパッケージとしても利用可能です。

Rust (CLIツール)

Rust環境があれば、cargoで簡単にインストールできます。

cargo install lawkit

Rust (ライブラリ lawkit-core)

Rustアプリケーションに機能を組み込む場合、Cargo.tomlに依存関係を追加します。

# Cargo.tomlに記載
[dependencies]
lawkit-core = "2.1" # バージョンは最新のものをご確認くださいね
use lawkit_core::laws::benford::analyze_benford;
use lawkit_core::common::input::parse_text_input;

// 例: ベンフォード法則分析をRustコードから実行
let numbers = parse_text_input("123 456 789")?;
let result = analyze_benford(&numbers, "data.txt", false)?;
println!("カイ二乗値: {}", result.chi_square);

Python (pip)

Pythonスクリプトから利用する場合、pipでインストールできます。

pip install lawkit-python
# CLIバイナリのダウンロードコマンドを実行
lawkit-download-binary

Node.js (npm)

Node.js環境ではnpm経由で利用できます。

npm install lawkit-js

クイックスタート:基本的な使用方法

単一法則分析

個別の統計法則を適用してデータを分析できます。

# 個別統計法則分析の例
lawkit benf financial_data.csv      # 不正検知(ベンフォード法則)
lawkit pareto sales_report.json     # 80/20分析(パレート分析)
lawkit zipf word_frequencies.txt    # 頻度パターン(ジップ法則)
lawkit normal measurements.xlsx     # 品質管理(正規分布)
lawkit poisson server_logs.tsv      # 稀少事象(ポアソン分布)

3段階分析ワークフロー

lawkit は、より体系的なデータ分析のために「analyzevalidatediagnose」という3段階のワークフローを推奨しています。

  1. analyze (基本分析): 複数の法則を統合的に分析し、全体的な品質スコアや初期のインサイトを得ます。
  2. validate (検証): データの整合性をチェックし、品質の問題がないか検証します。
  3. diagnose (詳細診断): 矛盾点や異常の根本原因を深く掘り下げ、具体的な推奨事項を導き出します。
# 段階1:基本的な多法則分析
$ lawkit analyze test_data.txt

# 段階2:整合性チェック付きデータ検証
$ lawkit validate --laws benf,pareto,normal test_data.txt --consistency-check

# 段階3:詳細な矛盾分析と推奨事項
$ lawkit diagnose --laws all test_data.txt --report detailed

メタチェーン:長期パターン変遷の追跡

lawkit のユニークな機能の一つが、diffx と連携した「メタチェーン」です。これは、統計分析結果の長期的なパターン変遷を追跡する高度な機能です。

例えば、月ごとの売上データに対して lawkit で統計分析を行い、その結果を diffx で比較することで、統計パターンの変化(例:ベンフォード法則からの逸脱の蓄積)を時系列で可視化できます。これにより、不正の兆候やデータ品質の劣化を早期に発見することが可能になります。

開発の背景:diffxからの高速スピンオフ

lawkit は、私が以前開発した汎用的な構造化データ差分ツール「diffx」のコアライブラリであるdiffx-coreを基盤として開発されました。

diffxで培った堅牢なデータ処理・比較エンジンを再利用することで、lawkitは統計分析という専門領域に特化した機能開発に集中できました。
これにより、短期間で高性能かつ信頼性の高いツールをリリースすることが可能となりました。lawkitは、diffxの知見を活かした強力な兄弟プロジェクトなのです。

まとめ

lawkit は、従来の統計分析の限界を超え、データからより深く、より実践的な洞察を引き出すための強力なツールです。

  • 多角的な視点: 複数の統計法則を同時に適用し、データの全体像を把握。

  • 異常の早期発見: 矛盾検出と高度な外れ値検出で、不正や品質問題を早期に特定。

  • 長期的なトレンド追跡: diffx との連携によるメタチェーンで、統計パターンの変遷を可視化。

  • 高い柔軟性: CLIツールとしてだけでなく、Rust/Python/Node.jsのライブラリとしても利用可能。

これらの特徴により、lawkit はデータ駆動型の意思決定を強力にサポートし、ビジネスや研究の質を向上させると信じています。

今後の展望

lawkit は継続的に機能強化を行っていく予定です。より多くの統計法則のサポートや、GUIツールとの連携なども検討しています。

最後に

lawkit はオープンソースプロジェクトです。ぜひ一度お試しいただき、GitHubリポジトリでフィードバックやコントリビューションをいただけると嬉しいです。

この記事が、皆さんのデータ分析や品質管理のお役に立てば幸いです。

.
.
.

……ここまでGeminiに書いてもらいました。
なんか自信たっぷりな文体になって恥ずかしい……。(「強力」って何回言うねん)

あうあう、私は偉くないのです。
ホントは、ニーズがあるか分からずドキドキなんです。

ある日、テレビで「2355 夜ふかしワークショップ」を見てて
ベンフォードの法則という存在を初めて知り

興味が出て調べてたら、節分の大豆のように止まらなくなり
いつの間にか、このツールになってたんです。
この手が勝手に!(←上弦の肆のセリフ)

これを読んだ方も、ベンフォードの法則に、興味を持っていただけると嬉しいです。
(ついでに、このツールにも……)

Discussion