ブートストラップ(R)を使用して検量線を推定する方法


9

質問:バイナリ結果変数をモデル化するために確率モデル(ベイジアンネットワーク)を適合させました。ブートストラップでオーバーフィットするように修正された高解像度のキャリブレーションプロット(スプラインなど)を作成したいと思います。そのような曲線を計算するための標準的な手順はありますか?

考慮事項:これは、トレーニング/テスト分割で簡単に実行できますが、サンプルが20,000未満なので、データを捨てないでください。だから私は自然にブートストラップについて考えました。そのような関数(キャリブレーション)の1つがフランクハレルのrmsパッケージに実装されていることは知っていますが、残念ながら、私が使用するモデルはパッケージでサポートされていません。

おまけの質問:ブートストラップを使用して、誤って調整されたモデルを再調整することは可能ですか?私がこれを尋ねる理由は、私がモデルを再調整しようとしたことです

  1. トレイン/テストでデータを分割する
  2. セットをトレーニングするフィッティングモデル
  3. モデルを再調整してトレーニングセット(3次スプラインを使用)
  4. テストセットのキャリブレーションを評価する

上記の方法で再調整されたモデルは、列車セットでは完全に調整されましたが、テストセットではそれほど調整されていません。これは、おそらく軽度の過適合を示しています。また、テストセットをさらに分割して、1つの分割でキャリブレーションを行い、2番目の分割でキャリブレーションを評価しました。私はより良い結果を得ましたが(まだ完全に校正されていません)、セットはかなり小さくなり(〜1000サンプル)、したがって校正は信頼できなくなりました


1
Rで何が利用できるかわかりませんが、Pythonのsklearnには、高品質の確率キャリブレーションの鍵となる交差検証と等張/単調回帰をサポートする優れた確率キャリブレーションモジュールがあります。scikit-learn.org/stable/modules/calibration.html
olooney

回答ありがとうございます!私はRに拘束されており、から始めることに特に熱心ではありませんreticulate。手順を知っていれば自分でも実装できますが、どこにも見つかりませんでした。ハレル教授にこの質問が表示されることを期待しています:D
Gino_JrDataScientist

1
(小さな)データの例を含めて、あなたが話していることを説明してください。ありがとうございました。
ジム

Rのrmsパッケージ(およびそのキャリブレーション機能)のこの紹介をご覧になる
rpatel

こんにちはrpatel、提案をありがとう。元の質問でrms :: calibrate関数について言及しましたが、使用しているモデルクラスをサポートしていないことに注意してください。HarrellのRegression Modeling Strategiesも所有していますが、関数calibrateがどのように機能するかについての詳細な説明はありません。
Gino_JrDataScientist 2018年

回答:


6

フランクハレル教授とメールで話し合った後、私は楽観的に修正された検量線を推定するための次の手順を考案しました。

  1. すべてのデータにリスク予測モデルを適合させる
  2. p=0.010.020.99calapp
  3. ブートストラップサンプルを元のデータと同じサイズで置き換えて描画します
  4. ブートストラップサンプルにリスク予測モデルを適合
  5. calboot
  6. calorg
  7. p
    Optメートルsメートルp=calbootpcalorgp
  8. 手順3から7を数100回繰り返し、各点楽観を平均化します。p
  9. calcorrp=calappp<Optメートルsメートルp>

重要な注意:上記の手順は、ハレルの仕事と彼との私の議論に触発されていますが、すべてのエラーは私のものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.