簡単な紹介:
コックス比例ハザード (PH) モデルは、パッケージのcoxph
関数で推定できます。survival
このタイプのモデルから適切な結果を得るための明らかな要件は、ハザードが比例している、つまり、ハザードが時間とともに一定であることです。これが特定の変数に当てはまらない場合は、この変数の係数を時変にすることで解決できます。(現在、これは技術的に拡張された Cox モデルです。) これは、tt()
その変数に を追加し、時間の経過に伴う関数を指定することによって行われます ( vignette("timedep", package = "survival")
19 ページ以降を参照)。
質問:
関数を指定せずに を使用すると、どの関数が使用されtt()
ますか?
次に例を示します。
library(survival)
data(lung)
cox_model <- coxph(Surv(time, status) ~ age + sex + ph.karno, data = lung)
cox_model_ph <- cox.zph(cox_model)
# rho chisq p
# age 0.00701 0.00871 0.92566
# sex 0.12249 2.42336 0.11954
# ph.karno 0.23135 8.24167 0.00409
# GLOBAL NA 11.54750 0.00911
ph.karno
は PH の仮定 (p 値が小さい) に違反しているため、以下を追加しますtt()
。
cox_model_tt <- coxph(Surv(time, status) ~ age + sex + tt(ph.karno), data = lung)
cox_model_tt_ph <- cox.zph(cox_model_tt)
# rho chisq p
# age -0.00907 0.0142 0.9052
# sex 0.12844 2.7270 0.0987
# tt(ph.karno) 0.11643 2.3846 0.1225
# GLOBAL NA 5.0220 0.1702
tt()
これで PH の仮定は満たされましたが、関数が実際に何をしたかはわかりません。tt = function(x, t, ...) x*t
、 tt = function(x, t, ...) x + t
、などの一般的に使用される関数をいくつか試しtt = function(x, t, ...) x*log(t)
ました。しかし、すべてが異なる結果をもたらしました (そして、PH 違反を修正できませんでした)。
どんな助けでも大歓迎です。