コックス回帰の予測


38

多変量Cox回帰を行っています。重要な独立変数とベータ値があります。モデルは私のデータに非常によく適合しています。

次に、モデルを使用して、新しい観測の生存を予測したいと思います。Coxモデルを使用してこれを行う方法は不明です。線形回帰またはロジスティック回帰では、新しい観測の値を回帰に入れ、それらにベータを掛けるだけで簡単になり、結果を予測できます。

ベースラインの危険性を判断するにはどうすればよいですか?予測の計算に加えて、それが必要です。

これはCoxモデルでどのように行われますか?

回答:


30

以下Coxモデル、個々の推定ハザード共変量ベクトルとのx iがフォーム有する H IT = H 0T EXP X ' I ββは、部分的尤度を最大にすることによって発見されたが、つつH 0はネルソンアーレン推定から、以下 H 0tはIを= D Iixi

h^i(t)=h^0(t)exp(xiβ^),
β^h^0T1T2...個別のイベント時間とD私は死者の数でトン私は (、、などを参照のセクション3.6)。
h^0(ti)=dij:tjtiexp(xjβ^)
t1t2,diti

S^i(t)=S^0(t)exp(xiβ^)
S^0(t)=exp(Λ^0(t))
Λ^0(t)=j:tjth^0(tj).

編集: これも興味深いかもしれません:-)


1
それはまさに私の質問です...正しい予測を可能にするために、ベースラインハザード関数の推定が必要ですか?推定する方法を知っていますか?
マルジャ

2
@Marjan the jackknifeは、変数の選択によって生じる不確実性を適切に反映しない場合があります。ブートストラップは、変数に「重要」というラベルが付けられたより多くの可変性を適切に示します。「相対検証」を行いたい場合は、オーバーフィットを修正した後、予測差別が適切であることを示すことができます。これには、ベースラインのハザードに対処する必要はありませんが、相対ログハザード推定値を検証しています。validateRの関数rmsと一緒にパッケージcphの機能はそれを行います。で実装される唯一のステップワイズアルゴリズムvalidateは、後方ステップダウンです。
フランクハレル

1
予測相対ハザード(線形予測子)の取得は非常に簡単です。しかし、私は1991
。–フランクハレル

8
リンクが死んでしまった:-(。
GUNG -復活モニカ

2
特定の個人の生存時間Tを予測する方法はありますか?つまり、共変量の値のリストが与えられた場合、その個体が死ぬ可能性が最も高い時間を見つける方法は何ですか?
statBeginner

14

パッケージpredictSurvProb内の関数は、pecRを使用する場合、既存のcoxモデルに基づいて、新しいデータの絶対リスク推定値を提供できます。

説明できない数学的詳細。

編集:この機能は生存確率を提供しますが、これは今まで1-(イベント確率)とみなされていました。

編集2:

pecパッケージなしでも実行できます。サバイバルパッケージのみを使用して、次の関数はCoxモデルに基づいて絶対リスクを返します

risk = function(model, newdata, time) {
  as.numeric(1-summary(survfit(model, newdata = newdata, se.fit = F, conf.int = F), times = time)$surv)
}

1-生存確率は累積ハザードです。OPは、(ベースラインの)瞬間ハザード関数またはそれの何らかの平滑化された推定(muhazRのパッケージ)を要求すると思います。
ECII

1
1-生存確率は累積ハザードではありません。競合するリスクがない場合、2つはen.wikipedia.org/wiki/…で詳細に説明されているように接続されます。
三浦

1-生存確率=故障率(故障の1x方法のみを想定)。累積ハザードに対する生存確率の関係は、受け入れられた回答で概説されています:S(t)=exp(−Λ(t))どこΛ(t)が累積ハザードです。
NickBraunagel

11

たぶんあなたもこのようなことを試してみたいですか?Cox比例ハザードモデルを近似し、それを使用して、新しいインスタンスの予測生存曲線を取得します。

R のsurvfit.coxphのヘルプファイルから取得(行部分を追加しました)

# fit a Cox proportional hazards model and plot the  
# predicted survival for a 60 year old 
fit <- coxph(Surv(futime, fustat) ~ age, data=ovarian) 
plot(survfit(fit, newdata=data.frame(age=60)),
     xscale=365.25, xlab="Years", ylab="Survival", conf.int=F) 
# also plot the predicted survival for a 70 year old
lines(survfit(fit, newdata=data.frame(age=70)),
     xscale=365.25, xlab="Years", ylab="Survival") 

ただし、比例ハザードの仮定が予測のために保持されるため、予測する患者は、使用したCox比例ハザードモデルの導出に使用したものと質的に同じであるグループからのものである必要があることに留意してください予測。


6

パッケージのbasehaz機能はsurvival、イベントの時点でベースラインの危険を提供します。それから、ocramが提供する数学を上に進めて、coxph推定のORを含めることができます。


2

Coxモデルの要点は、比例ハザードの仮定と部分尤度の使用です。部分尤度では、ベースラインハザード関数が削除されています。そのため、指定する必要はありません。それがその美しさです!


2
ただし、共変量ベクトルの特定の値のハザードまたは生存の推定値を取得する場合は、ベースラインのハザードまたは生存の推定値が必要です。Nelson-Aalenの見積もりは、通常、仕事をします
...-ocram

1
多くの場合、Coxモデルでは2つの生存関数を比較しており、重要なのはハザード関数ではなくハザード比です。ベースラインハザードは、コックスが比例ハザードの仮定を使用して問題から巧みに除去した迷惑パラメーターのようなものです。モデルのコンテキストでハザード関数および/またはベースラインハザードを推定するために使用する方法が何であれ、比例を強制するモデルのCox形式を使用する必要があります。
マイケルチャーニック

どうもありがとう、ocramの答えについての私のコメントを見ていただければ素晴らしいと思います。たぶんあなたも私を助けることができますか?
マージャ

3
また、比例ハザードにない要因を層別化することもできます。しかし、いずれにせよ、Coxモデルとそのベースラインハザードの適合後推定量を使用して、生存期間の予測分位数、さまざまな生存確率、および長期フォローアップがある場合の予測平均生存時間を取得できます。これらの数量はすべて、Rパッケージで簡単に入手できますrms
フランクハレル

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