# `thresholds/fitter.py` 設計案

スレッショルドスキャン結果を解析・フィットし、推定スレッショルド値を得るモジュール。

---

## 📌 主な責務

- スレッショルドスキャン（閾値 vs ヒット数）データのフィッティング
- 誤差関数（erf, erfc など）のモデルによるフィット
- 0σ, 1σ, 3σ, 5σ に対応するスレッショルド値の推定
- 必要に応じて、フィット結果の可視化や保存

---

## 🔧 提案関数一覧とその説明

### 1. `fit_scan_curve`

スキャン結果（しきい値とヒット数）をもとに、erf もしくは erfc 関数モデルでフィッティングを行う関数。
パラメータ推定やフィットの評価（決定係数など）も含まれる。
返り値は `FittingResult` というデータ構造を想定。

### 2. `estimate_thresholds`

`FittingResult` に基づき、推定された mu（平均）と sigma（標準偏差）から、指定された σ（シグマ）レベル（例：0σ, 1σ, 3σ, 5σ）のしきい値を計算して返す。
返り値は `{ "0σ": 値, "1σ": 値, ... }` の形式の辞書。

### 3. `plot_fit_result`（任意）

スキャンデータとフィッティング結果を重ねてプロットし、表示またはファイルに保存する関数。
プロットツールとしては matplotlib, hvplot, altair などが利用可能。

---

## 🧾 データ構造 `FittingResult`

フィットされたモデルとそのパラメータ、共分散行列（あれば）、フィットの良さを示す指標（例：R²）を保持するクラス。
以下のような情報を持つ：

- モデル名（erf または erfc）
- 推定されたパラメータ（mu, sigma など）
- パラメータの共分散行列（省略可能）
- 決定係数（R²）などのフィット評価指標

---

## 🚀 将来の拡張案

- シグモイドなど他のモデル関数への対応
- `FitConfig` のような設定クラスで初期値や固定パラメータを柔軟に設定
- `haniwers fit` CLIコマンドとの統合や、バッチ処理対応
- フィット結果のログ出力・CSV保存機能の追加
