4

時間依存の共変量を含む Cox 比例ハザード モデルから生存時間を生成したいと考えています。モデルは

h(t|Xi) =h_0(t) exp(gamma*Xi + alpha*mi(t))

はどこXiから生成されBinomial(1,0.5)mi(t)time-dependent covariateです。

時間に依存しない共変量 i の場合、次のように生成されます

#For time independent case
# h_0(t) = 1
gamma <- -1
u <- runif(n=100,min=0,max=1)
Xi <- rbinom(n=100,size=1,prob=0.5)
T <- -log(u)/exp(gamma*Xi)

時変共変量で生存データを生成するのを手伝ってくれませんか。

4

1 に答える 1

1

時間依存共変量は、共変量が変化した時点で観察を打ち切り、時間 0 または検閲時にコホートに再入力することによって、Cox モデルに入力されます。したがって、共変量行列は間隔で生成され、イベント観測の前/後期間に基づいて、イベント以外の場合は多対 1 でマージされ、イベントの場合は多対 2 でマージされます。イベント後に共変量の変更を削除できます。共変量値と失敗の同時変化は Cox モデルでは処理されないため、この可能性を排除する必要があります。

生存結果をシミュレートするために、共変量値とスイッチ ポイントを生成します。次に、ベースラインの共変量値に従って生存結果をシミュレートします。最初の共変量変化時間が失敗時間を超える場合は、失敗時間を維持し、その参加者には共変量の変化がありません。それ以外の場合は、その失敗時に観察を検閲し、打ち切り時に新しい共変量値でそれらをコホートに再入力します。2 番目の共変量値の変化 (存在する場合) と 2 番目の可能性のある失敗時間をシミュレートし、それらを繰り返し評価し、失敗時間が共変量の変化値に先行する場合にのみ終了します。

これをレイアウトすると、誰かが私よりも効率的なコードを提供するかもしれませんが、それを行う簡単な方法は再帰を使用することです。当分の間、一定のベースライン ハザード関数 (指数生存) があると仮定しますが、任意のベースライン ハザード関数に従って生存結果をシミュレートする原理は、他の場所で説明されているので、あなたに任せます。また、簡単にするために、m は 2 進数であると仮定します。繰り返しますが、これはあなたがまとめるための基礎です。

sim <- function(id=1:100, t0= rep(0, 100), m0=rep(0, 100), bfail=c(0,0), rchange=1) {
  tfail <- rexp(length(id), exp(bfail[1] + bfail[2]*m0))
  tchange <- rexp(length(id), rchange)
  tevent <- pmin(tfail, tchange)
  fevent <- tfail == tevent
  if (all(fevent))
    return(list(cbind('start'=t0, 'stop'=t0+tevent, 'event'=fevent, 'id'=id, 'm'=m0)))
  c(
    list(cbind('start'=t0, 'stop'=t0+tevent, 'event'=fevent, 'id'=id, 'm'=m0)), 
    sim(id = id[!fevent], t0=(t0+tevent)[!fevent], m0=1-m0[!fevent], bfail, rchange)
  )

}

次の例を実行できます。

set.seed(123)
times <- sim(id=1:1000, t0= rep(0, 1000), m0=rep(0, 1000), bfail=c(-1, -2), rchange=0.4)
times <- as.data.frame(do.call(rbind, times))
coxph(Surv(start, stop, event) ~ m, data=times)

次の出力が得られます。

> coxph(Surv(start, stop, event) ~ m, data=times)
Call:
coxph(formula = Surv(start, stop, event) ~ m, data = times)

    coef exp(coef) se(coef)     z      p
m -1.917     0.147    0.100 -19.1 <2e-16

Likelihood ratio test=533  on 1 df, p=0
n= 2852, number of events= 1000 

-1.917 の係数を -2 の対数生存結果の対数ハザード比と比較します。

于 2018-01-18T16:31:58.407 に答える