predict.coxph의 출력을 해석하는 방법?


17

coxmodel을 피팅 한 후에는 예측을 수행하고 새로운 데이터의 상대적 위험을 검색 할 수 있습니다. 내가 이해하지 못하는 것은 개인에 대한 상대 위험을 계산하는 방법과 상대적 (예 : 인구의 평균)은 무엇입니까? 이해하는 데 도움이되는 리소스에 대한 권장 사항 (생존 분석에서 그다지 발전하지 않았으므로 단순할수록 좋습니다)?

답변:


32

predict.coxph()모든 예측 변수에 대한 표본 평균에 대한 위험 비율을 계산합니다 . 평균을 계산할 수있는 평소와 같이 요인이 더미 예측 자로 변환됩니다. Cox PH 모델은 로그 위험 ln h ( t )에 대한 선형 모델입니다 .plnh(t)

lnh(t)=lnh0(t)+β1X1++βpXp=lnh0(t)+Xβ

h0(t)h(t)h(t)=h0(t)eβ1X1++βpXp=h0(t)eXβiiXiXit

hi(t)hi(t)=h0(t)eXiβh0(t)eXiβ=eXiβeXiβ

iib1,,bpβ1,,βpeXibeXib

R의 예로 , Cox-PH 모델에 대한 John Fox 부록 의 데이터를 사용하여 매우 좋은 소개 텍스트를 제공합니다. 먼저, 우리는 자료를 fin입수하고 석방 된 포로의 체포 시간에 대한 간단한 Cox-PH 모델을 구축합니다 ( : 팩터-더미 코딩으로 재정 지원을 받음 "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 

eXb

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)

eXb

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는 도움말 페이지에 설명 된 옵션을 통해 제어 할 수 있습니다 .


3
도움말 페이지에서 predict.coxph가 정확히 무엇을하는지는 명확하지 않기 때문에 +1!
ocram December

1
멋 졌어요! 이해하기 매우 간단합니다!
user4673

meanFin <- mean(as.numeric(Rossi$fin) - 1)fin범주 적이기 때문에 많은 의미가 없습니다 . modeFin <- get_Mode(Rossi$fin)이 경우에 필요하지 않습니까?
Zhubarb 2014 년

1
@Zhubarb fin는 이진수이므로 인수의 숫자 표현은 값 1과 2를 갖습니다. 1을 빼면 디자인 행렬에도 나타나는 값 0과 1을 갖는 더미 코딩 된 변수가 제공됩니다. 레벨이 2 이상인 요인에는이 기능이 작동하지 않습니다. 더미 변수를 평균화하는 것이 의미가 있는지는 확실하지만 논쟁의 여지 predict.coxph()가 있습니다.
caracal

즉, 위험 비 3.01 (예 : relRisk [2])을 어떻게 해석 하시겠습니까?
RNB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.