predict.coxphの出力を解釈する方法は?


17

coxmodelを近似した後、予測を行い、新しいデータの相対的なリスクを取得することができます。私が理解していないのは、個人の相対リスクがどのように計算され、それが何に関連するのか(つまり、人口の平均)ですか?理解を助けるためのリソースに関する推奨事項(サバイバル分析はあまり進歩していないので、単純であるほど良いですか?)

回答:


32

predict.coxph()すべての予測変数のサンプル平均に対するハザード比を計算します。因子は、平均を計算できる通常のダミー予測変数に変換されます。Cox PHモデルは対数ハザードln h t )の線形モデルであることを思い出してください。plnht

lnht=lnh0t+β1バツ1++βpバツp=lnh0t+バツβ

ここで、は不特定のベースラインハザードです。等価的に、ハザードH Tはとしてモデル化される時間T = H 0T E β 1 X 1 + + β P X P = H 0T E X β。予測値を持つ2人の人ii のハザード比h0ththt=h0teβ1バツ1++βpバツp=h0teバツβしたがって、 X iおよび X i 'はベースラインハザードから独立しており、時間tから独立しています。バツバツt

htht=h0teバツβh0teバツβ=eバツβeバツβ

人物間の推定ハザード比のために"、私達はちょうど係数の推定に差し込むbは1... BのPのためのβ 1... β P、与えE X I BE X I " Bb1bpβ1βpeバツbeバツb

Rの例として、John FoxのCox-PHモデルに関する付録のデータを使用します。これは非常に優れた入門テキストです。最初に、データを取得し、釈放された囚人の逮捕までの時間に関する単純なCox-PHモデルを構築します(fin:要因-ダミーコーディングで受け取った財政援助"no"-> 0、"yes"-> 1 age:釈放時の年齢、prio:以前の有罪判決の数):

> URL   <- "http://socserv.mcmaster.ca/jfox/Books/Companion/data/Rossi.txt"
> Rossi <- read.table(URL, header=TRUE)                  # our data
> Rossi[1:3, c("week", "arrest", "fin", "age", "prio")]  # looks like this
  week arrest fin age prio
1   20      1  no  27    3
2   17      1  no  18    8
3   25      1  no  19   13

> library(survival)                                      # for coxph()    
> fitCPH <- coxph(Surv(week, arrest) ~ fin + age + prio, data=Rossi)    # Cox-PH model
> (coefCPH <- coef(fitCPH))                              # estimated coefficients
     finyes         age        prio 
-0.34695446 -0.06710533  0.09689320 

ここで、予測変数のサンプル平均を式に組み込みます。eバツb

meanFin  <- mean(as.numeric(Rossi$fin) - 1)   # average of financial aid dummy
    meanAge  <- mean(Rossi$age)                   # average age
meanPrio <- mean(Rossi$prio)                  # average number of prior convictions
rMean <- exp(coefCPH["finyes"]*meanFin        # e^Xb
           + coefCPH["age"]   *meanAge
           + coefCPH["prio"]  *meanPrio)

ここで、最初の4人の予測値を式にプラグインします。eバツb

r1234 <- exp(coefCPH["finyes"]*(as.numeric(Rossi[1:4, "fin"])-1)
           + coefCPH["age"]   *Rossi[1:4, "age"]
           + coefCPH["prio"]  *Rossi[1:4, "prio"])

次に、サンプル平均に対する最初の4人の相対リスクを計算し、からの出力と比較しますpredict.coxph()

> r1234 / rMean
[1] 1.0139038 3.0108488 4.5703176 0.7722002

> relRisk <- predict(fitCPH, Rossi, type="risk")   # relative risk
> relRisk[1:4]
        1         2         3         4 
1.0139038 3.0108488 4.5703176 0.7722002

階層化モデルがある場合、比較predict.coxph()は階層平均と比較されreferenceます。これは、ヘルプページで説明されているオプションを使用して制御できます。


2
+1。ヘルプページからpredict.coxphの動作を正確に把握するのは明らかではないためです。
ocram

すごく良かった!わかりやすい!
user4673

meanFin <- mean(as.numeric(Rossi$fin) - 1)finカテゴリカルであるため、あまり意味がありません。modeFin <- get_Mode(Rossi$fin)この場合、必要はありませんか?
ジュバル

1
@Zhubarb finはバイナリであるため、因子の数値表現は値1と2のみを持ちます。1を引くと、値0と1のダミーコード変数が得られ、これも設計行列に表示されます。これは、2レベル以上の要因では機能しないことに注意してください。ダミー変数の平均化が理にかなっているかどうかは確かに議論の余地がありますが、それpredict.coxph()はそうです。
カラカル14年

言い換えれば、ハザード比3.01(例えばrelRisk [2])をどのように解釈しますか?
RNB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.