Skip to content

fix: PR #7 のコードレビューで見つかった問題を修正 - #8

Merged
zredjet merged 1 commit into
mainfrom
fix/code-review-followup
Sep 25, 2026
Merged

zredjet merged 1 commit into
mainfrom
fix/code-review-followup

Conversation

@zredjet

@zredjet zredjet commented Sep 25, 2026

Copy link
Copy Markdown
Owner

概要

マージ済みの PR #7 を /code-review xhigh でレビューし、見つかった 13 件をすべて修正します。テストは 192 → 202 件で、すべて通っています。

修正内容

正しさ

問題 修正
予測区間の分位点を x=0 から線形走査しており、推定の不確実性が大きいと数十億回の評価で止まる(★ の判定で毎回呼ばれる) 倍々で上端を見つけてから二分探索する。予測件数が NaN・負なら判定しない
変曲S字型+変化点の変曲点を常に ln ψ / b₁ と表示(変曲点が τ より後だと誤り) ln ψ > b₁τ なら τ + (ln ψ − b₁τ)/b₂
χ² 検定ができない場合(10 日未満・ビン数 < 2)に p=1.0 を返し、適合性の判定で「パス」に数えていた NaN を返し、判定に使わない
FRE の η・D は発見数の尤度に効かないためヘッセ行列が特異になり、FRE のホールドアウトが常に Poisson 変動だけの区間になっていた IsDetectionParameter を追加し、発見数だけの Fisher 情報行列では固定する(DetectionLikelihoodMask)。χ² の自由度もこれから数える
マルチスタートの既定の生成関数が、全開始点の DE に同じシードを渡していた 開始点ごとに別のシードを渡す
収束日の区間の「≥」を、張り付いた反復が分位点以上にあるときだけ付けていた(張り付いた反復の到達日は過小なので向きが逆) 総数・残りバグ数と同じく、張り付いた割合だけで判定
CMA-ES で評価がすべて失敗すると Success=false・Converged=true になっていた 目的関数値が有効なときだけ収束とする
モデル平均化だけが、変化点モデルを含むと Fisher 情報行列を計算しなかった τ を固定して計算する(README も更新)
Fisher の表で固定した τ の行が SE=NaN [NaN, NaN] と表示されていた 「固定して計算」と表示

整理

  • GWO の仕上げの Nelder-Mead を、設定ファイルの設定で OptimizerFactory から作る
  • TEF の工数の σ̂ を、ブートストラップの反復ごとではなく 1 回だけ計算する
  • Fisher → ln の標準誤差の計算を LogStandardError にまとめる(ホールドアウトと ★ で重複していた)
  • Excel の表示名の比較で、ExponentialModel を作らずに定数を使う

テスト

  • dotnet test tests/BugConvergenceTool.Tests:202 件すべて成功。回帰テストは ReviewFixTests.cs と InflectionSParameterizationTests.cs に追加
  • CLI で --ci --pi -d --holdout 5 --change-point --ma を実行し、エラーがないことを確認
  • マルチスタートの既定のシードの修正には、専用のテストがありません(シードを外から確かめる手段がないため)

🤖 Generated with Claude Code

- ホールドアウト・★ の予測区間の分位点を線形走査から二分探索に変え、推定の不確実性が大きいと止まる問題を修正。
  予測件数が求まらない場合は判定しない
- 変曲S字型+変化点の変曲点を、ln ψ > b₁τ のとき τ + (ln ψ − b₁τ)/b₂ とする(以前は常に ln ψ/b₁)
- χ² 検定ができない場合(10 日未満など)に p=1.0 を返して適合性の判定で「パス」に数えていた問題を修正(NaN を返す)
- 発見数に効かないパラメータ(FRE の η・D など)を IsDetectionParameter で表し、発見数だけの Fisher 情報行列では固定する。
  FRE モデルのホールドアウトが常に Poisson 変動だけの区間になっていた
- マルチスタートの既定の生成関数が全開始点に同じシードを渡していた問題を修正
- 収束日の区間の「≥」を、総数・残りバグ数と同じく張り付いた割合だけで判定する
- CMA-ES で評価がすべて失敗したときに Converged=true になる問題を修正
- モデル平均化でも変化点 τ を固定して Fisher 情報行列を計算する(変化点モデルがあるとモデル内の分散が抜けていた)
- Fisher の表で固定したパラメータを「固定」と表示する(以前は SE=NaN [NaN, NaN])
- GWO の仕上げの Nelder-Mead を設定ファイルの設定で作る、工数の σ̂ をブートストラップで 1 回だけ計算する、
  Fisher→ln の標準誤差の計算を共通化する、Excel の表示名の比較に定数を使う

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@zredjet
zredjet merged commit d2a23a9 into main Sep 25, 2026
2 checks passed
@zredjet
zredjet deleted the fix/code-review-followup branch September 25, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant