等張回帰 シミュレーター 戻る
非パラメトリック回帰

等張回帰 シミュレーター — 単調制約とPAV

単調性制約だけを仮定する非パラメトリック回帰「等張回帰 (Isotonic Regression)」を、サンプル数・雑音レベル・制約方向を変えながらリアルタイムに観察できるツールです。PAV (Pool Adjacent Violators) アルゴリズムの挙動、違反点数、プールブロック数、OLS との MSE 比を可視化します。

パラメータ設定
サンプル数 N
観測点 (x_i, y_i) の総数
真の傾き β
真の関係 y = β·x の傾き
雑音標準偏差 σ
加法ガウス雑音 ε ~ N(0, σ²)
単調性制約
関数 f が満たすべき順序
損失関数
残差の評価方法
平滑バンド幅
0 = 純粋な階段関数、>0 で隣接平均化
計算結果
真の傾き β
違反点数
プールブロック数
平均ブロックサイズ
MSE 比 vs OLS
単調性制約
散布図 + 等張回帰の階段関数(PAV プール強調)

青点:観測値 (x_i, y_i)、赤線:OLS の直線当てはめ、青の階段:等張回帰の出力。プールされた区間は薄い水色帯で強調表示します。

観測データ vs 等張回帰結果
MSE 比 (Isotonic / OLS) vs サンプル数 N
理論・主要公式

$$\hat f = \arg\min_{f\,\uparrow} \sum_{i=1}^{N} (y_i - f(x_i))^2$$

f↑ は単調増加(または減少)制約。PAV (Pool Adjacent Violators) は O(N) 時間で最適解を提供。

$$\hat f_{\text{block}}(x) = \frac{1}{|B|}\sum_{i\in B} y_i, \quad B\text{:単調性を保つ最大プール}$$

各ブロック B の予測値はその平均値。隣接ブロックが順序を破る限り、両者をマージして再平均する。

$$\mathrm{MSE}_{\text{iso}} \sim \frac{\sigma^2}{N^{2/3}}, \qquad \mathrm{MSE}_{\text{OLS}} \sim \frac{\sigma^2}{N}$$

等張回帰の収束速度は N^(-2/3) で、線形モデルの N^(-1) より遅い。代わりに形の仮定が外れる際のバイアスがゼロ。

等張回帰 (Isotonic Regression) — 単調制約付き非パラメトリック回帰

🙋
「等張回帰」って初めて聞いたんですけど、ふつうの線形回帰と何が違うんですか?
🎓
ざっくり言うと「直線」とか「2次曲線」みたいな形を一切決めずに、「単調に増えるか減るか」だけを前提にする回帰なんだ。線形回帰は『y = ax+b』と形を固定するけど、等張回帰は「y が x について増えていく」しか仮定しない。だから飽和曲線でもS字でも、単調でさえあればぴったりフィットする。出力は階段関数になるのが特徴だよ。
🙋
階段関数になるんですか?それは PAV っていうアルゴリズムが関係してるんですか?
🎓
そう、Pool Adjacent Violators の頭文字で PAV だ。左から見ていって、隣同士で順序が逆転してたら「プール」して平均でまとめちゃう。さらに左隣も下回ったらもう一回マージ……と繰り返すと、最終的にいくつかのブロックに分かれて、各ブロック内では平均値で一定。これが階段になる理由だ。L2 損失なら O(N) で厳密解が出る、というのが超強力なんだよ。
🙋
左パネルで「雑音 σ」を上げていくと、違反点数とプール数がどんどん増えますね。何を見てるんですか?
🎓
雑音が大きいほど「隣同士の y が逆転する」回数が増えるよね。それが違反点数で、PAV はその違反を解消するためにブロックを合体させる。だから違反が多ければプールブロックは減って、各ブロックの平均サイズは大きくなる。極端な話、雑音が真の傾き β を圧倒すると、全データが1ブロックに潰れて『定数関数』になっちゃう。MSE 比が10倍を超えたら警告にしてあるのはそのため。
🙋
線形回帰より MSE が大きいってことは、等張回帰って弱いんですか?
🎓
いや、それは「真の関係が本当に直線」のときの話。直線モデルが正しいなら OLS は N^(-1) で速く収束する。でも実際の現象が S 字とか飽和曲線だと、OLS は形のミスマッチで永遠にバイアスが残る。等張回帰は遅い(N^(-2/3))けどバイアスゼロ。サンプルが少ないと OLS の見かけ MSE が良く見えるけど、N を増やしたとき真の MSE が下がり続けるのは等張回帰のほうなんだ。
🙋
実務でいうと、どんなところに使われてるんですか?
🎓
一番有名なのは機械学習の「確率校正」だね。分類器が出す 0.8 みたいなスコアが本当に確率80%か怪しいとき、Platt scaling か等張回帰で補正する。sklearn なら IsotonicRegression の1行で OK。あとは薬物の用量応答、構造劣化指標と残存寿命、生存解析の Nelson-Aalen 推定、心理物理学の心理測定関数。とにかく『単調だが形不明』ならまず候補に挙がるんだ。

よくある質問

等張回帰は「単調性(増加または減少)」だけを仮定する非パラメトリック回帰です。線形回帰のように直線や曲線の形(パラメトリックモデル)を仮定せず、観測値 y_i に対して f(x_i) が単調に並ぶ最も近い階段関数を最小二乗的に求めます。代表的なアルゴリズムが PAV (Pool Adjacent Violators) で、計算量は O(N) と非常に高速です。形が分からないが「増加するはず」「減少するはず」と分かっている場合に強力です。
データを x の昇順に並べたうえで左から走査し、隣接ペアが単調性に反するたびに「プール」して両者の平均で置き換えます。プールしたブロックがその左隣を下回ったらさらに合体させて再平均する、を繰り返します。すべての隣接ペアが単調になった時点で停止し、各ブロックの平均値が等張回帰の予測値です。L2 損失なら厳密解、L1 なら中央値ベース、Huber なら頑健化版に拡張できます。
OLS(最小二乗線形回帰)は「直線である」と決め打ちするので、真の関係が単調だが曲がっている場合(飽和曲線・S字曲線など)にバイアスが大きく出ます。等張回帰はモデル形を仮定しないため、形のミスマッチがありません。ただしブロックごとの平均しか出力できず階段状になるので、平滑性が必要ならば後処理として等張回帰の上にスプラインなどを当てて滑らかにします。サンプル数が増えるほど、MSE 比は OLS に近づきます。
代表例は機械学習の確率校正(calibration)です。分類モデルが出力するスコアを「真の確率」に変換するとき、Platt scaling(ロジスティック当てはめ)の代替として等張回帰がよく使われます。sklearn の IsotonicRegression が広く知られています。他にも薬物の用量応答曲線(dose-response)、心理物理学の心理測定関数、構造の劣化指標と寿命の関係、生存解析の Nelson-Aalen 推定など、「単調だが形不明」な現象すべてに使えます。

実世界での応用

機械学習の確率校正(Calibration):SVM やランダムフォレストといった分類器が出力する「予測スコア」は、必ずしも真の確率と一致しません。0.8 と出ても実際の正解率が60%だったり90%だったりします。等張回帰は、検証データのスコアと正誤を入力として「スコア → 真の確率」の単調変換を学習します。Scikit-learn の IsotonicRegressionCalibratedClassifierCV(method='isotonic') が広く使われ、Platt scaling(ロジスティック当てはめ)よりも形の柔軟性に勝るのが利点です。

薬理学の用量-応答曲線:新薬の用量を増やすほど反応率は単調に増えるはず、というのが医薬統計の前提です。しかし観測ノイズで小さな逆転が現れます。等張回帰なら、生物学的に意味のある「単調増加」という事前知識を直接モデルに入れ込めるため、Hill 式などの強い形仮定を避けつつスムーズな反応曲線を得られます。FDA の dose-response 解析ガイドラインでも代替手法として言及されています。

構造劣化指標と残存寿命:橋梁・配管・回転機械などの劣化評価では、ひずみゲージや振動センサーの累積指標と「残り寿命」の関係を回帰します。劣化は基本的に単調進行のため、ノイズの多い時系列から指標→寿命の単調マッピングを抽出するのに等張回帰が向いています。線形 SN 曲線が当てはまらない複雑な疲労挙動でも、形を仮定せず使える点が魅力です。

生存解析・信頼性工学:Nelson-Aalen 推定や Kaplan-Meier 推定の累積ハザードは原理上単調増加ですが、サンプル数が少ないと推定が乱高下します。等張回帰でスムージングすると、単調性を保ったままノイズを除去できます。信頼性工学のワイブル分布パラメータ推定、医療統計の生存曲線描画など、応用範囲は広いです。

よくある誤解と注意点

まず最大の落とし穴が、「等張回帰はいつでも OLS より良い」という誤解です。真の関係が本当に直線なら、OLS の収束速度は N^(-1) で、等張回帰の N^(-2/3) より明らかに速い。本シミュレーターでも β を大きく σ を小さくすると、MSE 比は5〜10倍程度になります。OLS が当たる場面では OLS を使うべきで、等張回帰の出番は「単調性は信じられるが形は分からない」ときに限られます。実務では、まず散布図を見て直線性を疑い、形が読めない場合に等張回帰を選ぶ、という順番が定石です。

次に、「階段関数のまま予測に使う」と困る場面があります。等張回帰の出力はブロックごとの平均なので、新しい x で予測すると階段の「段」の上に来るため、ジャンプを含みます。連続的な予測値が必要ならば、等張回帰の出力にスプライン補間やカーネル平滑化を後処理として適用します。本ツールの「平滑バンド幅」スライダーが、この後処理を擬似的に表現しています。0 のままだと純粋な階段、>0 で隣接ブロックの平均を取って滑らかにします。

最後に、「外挿には絶対使えない」こと。等張回帰は観測した x の範囲内でしか定義されません。最小 x より小さい値、最大 x より大きい値に対して予測しようとしても、端のブロック値で頭打ちになり、線形回帰のような外挿はできません。これは「形を仮定しない」ことの裏返しで、データの外側の挙動を推測する手がかりがないからです。外挿が必要な用途ではパラメトリック手法(線形・指数・Hill 式など)と併用するか、最初から区間を限定して使うのが安全です。

使い方ガイド

  1. サンプル数(numSamplesIR)を設定します。医薬品の用量応答試験では n=50~200が標準です
  2. 真の傾き(trueSlopeIR)と観測雑音の標準偏差(noiseStdIR)を入力し、回帰データを生成します
  3. PAVアルゴリズムが自動実行され、違反点数・プールブロック数・平均ブロックサイズが出力されます
  4. MSE比(等張回帰 vs OLS)を確認し、単調性制約が改善効果を持つ条件を観察します
  5. smoothingBandwidth を調整して、制約強度と過適合のトレードオフを検証します

具体的な計算例

抗がん剤の細胞生存率測定で、真の傾き β=−0.8、サンプル数 n=100、観測雑音 σ=0.12 の設定を想定します。PAVアルゴリズム実行後、違反点数は12~18個、プールブロック数は8~12、平均ブロックサイズは8.3~12.5となります。MSE比は0.88~0.92(等張回帰がOLSより最大12%低減)を示します。smoothingBandwidth=0.05 では単調性制約が厳密に保証され、化粧品の効能評価では校正曲線の信頼性が向上します。

実務での注意点