1

coxモデルを使用して、時間の経過後の失敗の確率を予測しようとしています(停止と呼ばれます)3.

bladder1 <- bladder[bladder$enum < 5, ] 
coxmodel = coxph(Surv(stop, event) ~ (rx + size + number)  + 
        cluster(id), bladder1)
range(predict(coxmodel, bladder1, type = "lp"))
range(predict(coxmodel, bladder1, type = "risk"))
range(predict(coxmodel, bladder1, type = "terms"))
range(predict(coxmodel, bladder1, type = "expected"))

ただし、予測関数の出力はすべて 0 ~ 1 の範囲ではありません。関数はありますか、または lp 予測とベースライン ハザード関数を使用して確率を計算するにはどうすればよいですか?

4

1 に答える 1

10

のヘルプページをお読みくださいpredict.coxph。それらのどれも確率ではないはずです。共変量の特定のセットの線形予測子は、すべての予測値の平均を使用した仮説の (そして存在しない可能性が非常に高い) ケースに対する対数ハザード比です。「予想」はイベントの予測数であるため、確率に最も近くなりますが、時間の指定が必要であり、観測の開始時に危険にさらされている数で割る必要があります。

のヘルプ ページで提供されている例の場合、predict予測されたイベントの合計が実際の数に近いことがわかります。

> sum(predict(fit,type="expected"), na.rm=TRUE)
[1] 163

> sum(lung$status==2)
[1] 165

survfitイベントの確率は1-生存確率であるため、代わりに関数を使用したいと思うかもしれません。

?survfit.coxph

同様の質問のコードがここに表示されます: R での Cox 回帰後のデータフレームへの予測ハザード比の列の追加

膀胱 1 データセットの使用を提案したので、これは time=5 の仕様のコードになります。

 summary(survfit(coxmodel), time=5)
#------------------
Call: survfit(formula = coxmodel)

 time n.risk n.event survival std.err lower 95% CI upper 95% CI
    5    302      26    0.928  0.0141        0.901        0.956

これは、次の名前のリスト要素として生存予測を含むリストとして返されます$surv

> str(summary(survfit(coxmodel), time=5))
List of 14
 $ n       : int 340
 $ time    : num 5
 $ n.risk  : num 302
 $ n.event : num 26
 $ conf.int: num 0.95
 $ type    : chr "right"
 $ table   : Named num [1:7] 340 340 340 112 NA 51 NA
  ..- attr(*, "names")= chr [1:7] "records" "n.max" "n.start" "events" ...
 $ n.censor: num 19
 $ surv    : num 0.928
 $ std.err : num 0.0141
 $ lower   : num 0.901
 $ upper   : num 0.956
 $ cumhaz  : num 0.0744
 $ call    : language survfit(formula = coxmodel)
 - attr(*, "class")= chr "summary.survfit"
> summary(survfit(coxmodel), time=5)$surv
[1] 0.9282944
于 2015-06-23T06:02:02.363 に答える