回答:
Cox生存モデルを調整する簡単な方法は、リンクしたページのように、Rでパッケージcalibrate
によって提供される関数を使用することです。このパッケージは、いくつかのタイプの回帰モデルに提供されるキャリブレーションおよび検証メソッドと連携するように設計されたCoxモデルのメソッドを提供します。rms
cph
マニュアルページからの引用:「calibrate
予測値と観測値のバイアス補正(オーバーフィッティング補正)推定値を取得するためのブートストラップまたは交差検証。」ただし、ビン化されたカプランマイヤー推定値を使用して「観測」値を提供する代わりcmethod="hare"
にcalibrate
、cph
モデルののデフォルト設定では、打ち切りを考慮しながら非比例ハザードと非線形性を考慮した回帰スプライン補間推定値を使用します。観測データのこの適応モデリングにより、特定の生存時間の連続的なキャリブレーションプロットが可能になります。この概要では、元の論文を参照しながら、HAREメソッドの詳細を説明します。(cmethod="KM"
呼び出しで設定した場合calibrate
、ビニングされたカプラン・マイヤー推定値と比較されます。)
これを行う前に、マニュアルページを読んで、cph
これらの機能の使用を許可する正しい設定でモデルを生成しpolspline
、hare
機能を提供するためにパッケージがインストールされていることを確認してください。
rms
パッケージの作成者であるフランクハレルは、ビンニングされたカプランマイヤーと継続的なHAREアプローチを、回帰モデリング戦略の第506版、第2版、および関連するコースノートの第17章、第18〜19ページで比較しています。 。
何が起こっているのか
生存分析のキャリブレーションの問題は、イベントの確率をキャリブレーションしようとしている間、観測はイベントであることです。したがって、何らかのタイプの補間が必要です。Coxモデルの場合、特定の生存時間を分析に使用します。
ビニングされたKMキャリブレーションを検討してください。まず、ケースを予測確率でグループ化し、類似の予測確率のグループごとにKM生存曲線をプロットし、選択した生存時間でこれらの少数のケース間を内挿して、そのグループの「観察された」推定生存確率を取得します。
calibrate
for cph
モデルで使用するアプローチでは、代わりに、最初にすべてのケースのハザードを予測変数と時間の一般的な関数として内挿します。によって提供されるこの一般的な機能hare
、各予測変数と時間を線形スプラインとしてモデル化できるようにし、変数間のペアワイズ相互作用を可能にします(変数としての時間を含む)。スプラインと相互作用のコレクションは、それぞれが予測子変数と時間の関数である一連の基底関数を提供します。次に、Coxモデルが予測変数自体の係数を見つける方法と同様に、部分尤度を最大化することによって推定された基底関数に係数を重み付けして、生存データに最も適合するこれらの基底関数の組み合わせを探します。モデルの複雑さ(たとえば、どの基底関数を含めるか、スプラインノットの数)は、上記の概要でうまく説明されている段階的な追加と削除のプロセスによって選択されます。
hare
プロセスの結果は、すべての予測変数と時間の関数としてハザードを提供する単一の関数であり、通常、比例ハザードCoxモデルよりもはるかに複雑な形式になります。これは、ビン化されたKMキャリブレーションスキームで使用されるケースのサブセットの特定の時間への補間ではなく、予測変数の値に関連付けられた値とともに、常にすべてのケース間の補間から始まると考えたいです。
が提供するハザード関数を使用してhare
、予測変数値の任意の組み合わせを取得し、特定の時点での「予測された」Cox生存確率を、によって提供された「観察された」生存確率の内挿推定値と比較できますhare
。(原則として、この比較は当面のケースに限定されないことに注意してください。予測変数値の合理的な組み合わせを調べることができます。)キャリブレーション曲線は、「観測」対「予測」の生存確率の平滑化プロットです。 、すべてのケースの中で、希望の時間に。のcalibrate
方法でrms
は、ケースから複数のブートストラップされたサンプルに対してこのプロセスを繰り返し、ケースが抽出された母集団に対して結果が一般化される程度を測定します。
ボンネットの下だけでなく、エンジンの分解もしたい場合は、Rで簡単にできrms
ます。パッケージが読み込まれrms:::calibrate.cph
たら、コマンドプロンプトで次のように入力して、このcalibrate
メソッドのコードを取得します。のラッパーhare
はhare
、polspline
パッケージのロード時にプロンプトで入力することで利用できます。作業の多くは、CRANからソースコードを入手できるコンパイル済み関数によって行われます。