---
generated_at: 2026-02-17 12:00:00
metrics:
  claims_total: 28
  claims_with_evidence: 26
  claims_without_evidence: 2
confidence_derived: 0.93
---

# 根拠レポート: 51-stats（統計関数）

## サマリー

本レポートは機能設計書「51-stats（統計関数）」の記載内容について、ソースコードに基づく根拠を示す。全28件の主張のうち26件がソースコードで確認可能であり、信頼度は0.93と評価される。

## Evidence一覧

| Evidence ID | ファイル | 行番号 | 内容 |
|------------|---------|--------|------|
| E-001 | lib/pure/stats.nim | 10-14 | 「基本的な統計分析のためのフレームワーク」の説明 |
| E-002 | lib/pure/stats.nim | 15-18 | RunningStat計算項目（n, min, max, sum, mean, variance等）の説明 |
| E-003 | lib/pure/stats.nim | 29-33 | RunningRegress計算項目（n, slope, intercept, correlation）の説明 |
| E-004 | lib/pure/stats.nim | 65-70 | RunningStat型の定義（n, min, max, sum, mom1-4） |
| E-005 | lib/pure/stats.nim | 71-75 | RunningRegress型の定義（n, x_stats, y_stats, s_xy） |
| E-006 | lib/pure/stats.nim | 79-88 | clearプロシージャの実装 |
| E-007 | lib/pure/stats.nim | 90-110 | push(float)プロシージャ - Knuthアルゴリズムによる統計モーメント更新 |
| E-008 | lib/pure/stats.nim | 99 | 「Knuth TAOCP vol 2, 3rd edition, page 232」参照コメント |
| E-009 | lib/pure/stats.nim | 112-117 | push(int)プロシージャ - toFloat変換 |
| E-010 | lib/pure/stats.nim | 119-125 | push(openArray)プロシージャ |
| E-011 | lib/pure/stats.nim | 127-129 | mean()プロシージャ - mom1を返却 |
| E-012 | lib/pure/stats.nim | 131-133 | variance()プロシージャ - mom2/n |
| E-013 | lib/pure/stats.nim | 135-138 | varianceS()プロシージャ - n > 1で0.0を返す条件分岐 |
| E-014 | lib/pure/stats.nim | 140-142 | standardDeviation()プロシージャ - sqrt(variance) |
| E-015 | lib/pure/stats.nim | 148-150 | skewness()プロシージャ |
| E-016 | lib/pure/stats.nim | 157-159 | kurtosis()プロシージャ |
| E-017 | lib/pure/stats.nim | 166-194 | `+`演算子の実装 - RunningStatの結合 |
| E-018 | lib/pure/stats.nim | 218-222 | openArray用mean関数 |
| E-019 | lib/pure/stats.nim | 274-279 | RunningRegress.clear()プロシージャ |
| E-020 | lib/pure/stats.nim | 281-287 | RunningRegress.push(x, y: float) |
| E-021 | lib/pure/stats.nim | 296-300 | RunningRegress.push(x, y: openArray)とassert |
| E-022 | lib/pure/stats.nim | 302-305 | slope()プロシージャ |
| E-023 | lib/pure/stats.nim | 307-309 | intercept()プロシージャ |
| E-024 | lib/pure/stats.nim | 311-315 | correlation()プロシージャ |
| E-025 | lib/pure/stats.nim | 56 | mathモジュールからのインポート |
| E-026 | lib/pure/stats.nim | 61-63 | debugger: off, checks: offのpragma |

## Claims対応表

| Claim ID | 主張内容 | Evidence ID | 検証結果 |
|----------|---------|-------------|---------|
| C-001 | statsモジュールは統計分析フレームワークを提供する | E-001 | 確認済 |
| C-002 | RunningStat型でn, min, max, sum, mean等を計算 | E-002, E-004 | 確認済 |
| C-003 | RunningRegress型でslope, intercept, correlationを計算 | E-003, E-005 | 確認済 |
| C-004 | データは単一パスで処理される | E-007 | 確認済 |
| C-005 | Knuth TAOCP vol 2のアルゴリズムを使用 | E-008 | 確認済 |
| C-006 | push(float)でデータを投入 | E-007 | 確認済 |
| C-007 | push(int)はfloatに変換して処理 | E-009 | 確認済 |
| C-008 | push(openArray)で配列を一括投入 | E-010 | 確認済 |
| C-009 | mean()はmom1を返却 | E-011 | 確認済 |
| C-010 | variance()はmom2/nで計算 | E-012 | 確認済 |
| C-011 | varianceS()はn > 1の時のみ有効な値を返す | E-013 | 確認済 |
| C-012 | standardDeviation()はsqrt(variance)で計算 | E-014 | 確認済 |
| C-013 | skewness()で歪度を計算 | E-015 | 確認済 |
| C-014 | kurtosis()で尖度を計算 | E-016 | 確認済 |
| C-015 | `+`演算子でRunningStatを結合可能 | E-017 | 確認済 |
| C-016 | openArrayに対するヘルパー関数がある | E-018 | 確認済 |
| C-017 | RunningRegressのclear()で初期化 | E-019 | 確認済 |
| C-018 | RunningRegress.push(x, y)で2つのデータセットを投入 | E-020 | 確認済 |
| C-019 | openArrayのpushでは長さが同じである必要がある（assert） | E-021 | 確認済 |
| C-020 | slope()で傾きを計算 | E-022 | 確認済 |
| C-021 | intercept()で切片を計算 | E-023 | 確認済 |
| C-022 | correlation()で相関係数を計算 | E-024 | 確認済 |
| C-023 | std/mathモジュールをインポート | E-025 | 確認済 |
| C-024 | パフォーマンス最適化のpragmaを使用 | E-026 | 確認済 |
| C-025 | 外部ライブラリへの依存なし | E-025 | 確認済 |
| C-026 | すべての統計取得はO(1)の計算量 | E-011, E-012 | 確認済 |
| C-027 | メモリ使用量はO(1) | - | 推論（データ構造から推定） |
| C-028 | 並列処理結果の結合が可能 | E-017 | 確認済（コメントに「parallel analysis」の記載あり） |

## 不足情報

| 項目 | 説明 | 影響度 |
|------|------|--------|
| メモリ使用量O(1)の明示的記載 | ソースコードに明示的な記載はないが、データ構造から推論可能 | 低 |
| パフォーマンス計測結果 | 実際のベンチマーク結果はソースコードに記載なし | 低 |

## リスクフラグ

| リスク | 説明 | 対応策 |
|--------|------|--------|
| 浮動小数点精度 | 極端に大きい/小さい値での精度低下の可能性 | 使用時に値の範囲を確認 |
| ゼロ除算 | n=0での各種計算でゼロ除算が発生する可能性 | n > 0を確認してから呼び出す |

## レビュアーチェックリスト

- [x] RunningStat型の定義がソースコードと一致している
- [x] RunningRegress型の定義がソースコードと一致している
- [x] pushプロシージャの動作説明が正確である
- [x] 各統計値取得プロシージャの計算式が正確である
- [x] `+`演算子による結合機能の説明が正確である
- [x] 回帰分析関数の説明が正確である
- [x] インポート元モジュールの記載が正確である
- [x] コードリーディングガイドの行番号が正確である
