※ 本ドキュメントの作成には生成AIを使用しています。


<aside> 📌

位置づけ: 本ページは、分布ベースに再定義した新BPIについて、最終的な定義がどう導出されるかだけを、原典(norimiso氏「BPIについて」)の定義からの対応を取りながら通しでまとめたものである。設計上の代替案・不採用案・検討の経緯は姉妹ページ(単曲BPIの分布モデル化(ALS推定) ほか)に分けて記載している。

実装は@bpim/bpicalc、数式の対応表は docs/bpi-math.md、設計判断は決定記録 docs/decisions/0005〜0012 にある。

</aside>

背景・課題

現行BPI(原典および BpiCalculator)は「皆伝平均」「歴代全一」の2点アンカーと曲ごとの当てはめ係数 $\mathrm{coef}$ で各曲の形を表現する。実測により、この構造そのものに起因する次の課題が判明している。

課題 実測 新方式での解決 新方式での解消度
同じ実力でも曲でBPIが大きく変わる。2点アンカーが曲間で整合していない ある能力帯のプレイヤーだけを見ても現行BPIは曲によって数十点の幅で散らばり、「BPI 50」が、ある曲では全体の上位約1%、別の曲では上位約30%のスコアに対応してしまう スコアを母集団の能力分布上の位置(z尺度、第4章)に変換し、全曲を同一の軸に載せる 同一実力帯の曲間BPIの標準偏差が、歪みが最も強く出る高実力帯で −37〜42%(潜在スキル最上位 2.72→1.57、総合BPI 50〜60 帯 4.23→2.66)。中位以下は元々散らばりが小さく(1.1〜1.5)不変で、この帯の残差は譜面適性・偶然による不可分成分。(§10.6–10.7)
他人がWRを更新すると自分のBPIが下がる 歴代全一のスコアはほぼ理論値の 99% 超(PGF が急激に発散する領域)に集中しており、残り数点で BPI が大きく動く。他人が全一を数点更新しただけで、自分のスコアは不変なのに高得点帯のプレイヤーの現行BPIが十数点下がることがある BPI 0 アンカー $z_0$ を全曲共通の定数にする(第5.1章)。BPI 100 は原典の定義どおり曲ごとの実 WR に置くが、外れを $\gamma_j$ で吸収する(第6章) BPI 0 アンカー $z_0$ が全曲共通の定数になり、自分の BPI が他人のスコアに依存しない形で構造的に解消。WR の直下にいる高実力帯の曲間SD −42% がその実測的裏付け。(§5.1 / §10.6)
アンカーの到達難度が曲間で不揃い アンカーの実際の到達難度(母集団の能力分布上の位置)は曲間で大きく異なり、全一の到達難度は最も甘い曲と最も辛い曲で 2 倍以上開く アンカーを母集団能力分布のパーセンタイル基準($z_0$・$z_{\text{ref}}$)に統一し、$\gamma_j$ で WR 位置の外れを補正する(第5–6章) 全一が母集団から外れた譜面群($z_{100,j}$ 上位・$\mathrm{coef}j < 1$、約28曲)の単曲BPIが平均 +5〜7 補正され、曲別バイアスは 85% の曲で ±2 以内・62% で ±1 以内に収まる(曲別シフト vs $z{100,j}$ の相関 $r=+0.76$)。(§10.3)
「BPI 0 = 皆伝平均」の前提が競技実態と乖離 皆伝合格という関門を経由しない上手いプレイヤーが評価軸から外れる $z_0$ をアリーナ A 帯在籍者の潜在スキル $a_i$ の中央値に置く(皆伝合格を経由しない、決定記録0007) $z_0$ を皆伝合格を経由しない基準(アリーナ A 帯在籍者の $a_i$ 中央値)に置換。定義の変更で、検証というより設計判断。(§5.1)
総合BPIの不連続性 未プレイ曲を −15 で埋めた符号付きべき乗平均のため、上振れ・下振れとも極値の1曲に総合が支配される。総合BPIの値域に人がほとんど居ない帯(−5〜+5 など)が生じ、1曲のスコアが数点動くだけで総合が大きく跳ねる 全項に $c=15$ を加えて非負化し、指数を $k'$ に再校正したシフト法で集約する(第8.3章) 総合BPIの分布が連続化。現行では総合BPI 0〜10 帯に 12 人しか居ないのに対し新方式は 338 人(別母集団の複合検証では [-15,-10) 帯 39.9%→2.5%、断崖だった [-5,+5) 帯 0→18.8%)。(§8.3 / §10.7 / ‣)

上記はいずれも係数の再校正では解決せず、曲の形を分布そのもの($\mu_j, \sigma_j$)から表現する構造への置き換えを要する。以降がその最終形の導出である。

0. 概要

新BPIは、単曲ごとに実際のスコア分布から2母数(位置 $\mu_j$・弁別力 $\sigma_j$)を推定し、プレイヤーの潜在スキル $a_i$ を直接推定する潜在能力モデルに基づく。原典の PGF・単曲BPI・総合BPIの骨格(対数比のべき乗、WR=BPI100、シフト法の総合集約)は保持し、曲間で整合しなかった2点アンカーを、母集団の能力分布上の位置(z尺度)と全曲共通の基準に置き換える。

導出は次の連鎖からなる。

$$ s_{ij}\ \xrightarrow{\ t=-\ln(m-s)\ }\ t_{ij}\ \xrightarrow{\ \text{ALS}\ }\ (\mu_j,\sigma_j,a_i)\ \xrightarrow{\ z=(t-\mu)/\sigma\ }\ z_{ij}\ \xrightarrow{\ (z_0,\ z_{100,j},\ k_j)\ }\ \mathrm{BPI}_{ij}\ \xrightarrow{\ \hat a_i^{\text{shrunk}}+\text{shift}\ }\ \mathrm{BPI}^{\text{total}}_i $$

効果検証(第10章、ローカルDB v33・☆11+☆12・1,587人・約109万スコア)では、単曲BPIの現行との平均差分は +0.57点(効果量 $d\approx0.28$・小)で、差分は「全一が母集団から見て外れ値の曲」に構造的に集中する。


1. 出発点:原典のBPI

原典[1] は単曲BPIを、皆伝平均スコア $k$(BPI 0)・歴代全一スコア $z$(BPI 100)・自分のスコア $s$ の3点を PGF(Pika-Great-Function)に通した対数比のべき乗で定義する。

$$ \mathrm{PGF}(x') = \frac{0.5}{1 - x'} = \frac{m}{2\,(m - s)},\qquad x' = \frac{s}{m},\quad m = 2\,\mathrm{notes} $$

$$ \mathrm{BPI}^{\text{原典}} = \pm\,100\left(\frac{\ln\!\big(\mathrm{PGF}(s)/\mathrm{PGF}(k)\big)}{\ln\!\big(\mathrm{PGF}(z)/\mathrm{PGF}(k)\big)}\right)^{1.5} $$

総合BPIは、未プレイ曲を $-15$ で埋めた符号付きべき乗平均。順位は基準人数 2616 の指数モデル。

$$ \mathrm{BPI}^{\text{total}} = \left(\frac{1}{n}\sum_{a=1}^{n}\operatorname{sign}(\mathrm{BPI}_a)\,|\mathrm{BPI}_a|^{\kappa}\right)^{1/\kappa},\quad \kappa = \log_2 n \qquad\qquad \text{単曲順位} = 2616^{\,(100 - \mathrm{BPI})/100} $$