콕스 회귀 예측


38

다변량 콕스 회귀 분석을 수행 중이며 중요한 독립 변수와 베타 값이 있습니다. 이 모델은 내 데이터에 매우 적합합니다.

이제 저는 모델을 사용하고 새로운 관측의 생존을 예측하고 싶습니다. Cox 모델 로이 작업을 수행하는 방법을 잘 모르겠습니다. 선형 또는 로지스틱 회귀 분석에서는 쉬울 것입니다. 회귀 분석에 새로운 관찰 값을 넣고 베타로 곱하면 결과가 예측됩니다.

기준 위험을 어떻게 확인할 수 있습니까? 예측을 계산하는 것 외에도 필요합니다.

이것은 Cox 모델에서 어떻게 이루어 집니까?

답변:


30

Cox 모델에 따라 공변량 벡터 x_i를 갖는 개별 i에 대한 추정 위험은 \ hat {h} _i (t) = \ hat {h} _0 (t) \ exp (x_i '\ hat {\ beta})입니다 . \ hat {\ beta} 는 부분적 가능성을 최대화하여 구할 수 있으며 \ hat {h} _0 은 Nelson-Aalen 추정기 \ hat {h} _0 (t_i) = \ frac {d_i} {\ sum_ {j : t_j \ geq t_i} \ exp (x_j '\ hat {\ beta})} t_1 , t_2, \ dotsc 로 구별되는 이벤트 시간과 d_i 에서 t_i 에서의 사망자 수 (예 : 3.6 절 참조 ).ixi

h^i(t)=h^0(t)exp(xiβ^),
β^h^0
h^0(ti)=dij:tjtiexp(xjβ^)
t1t2,diti

마찬가지로

S^i(t)=S^0(t)exp(xiβ^)
S^0(t)=exp(Λ^0(t))
Λ^0(t)=j:tjth^0(tj).

편집 : 이것은 또한 관심 있을 수 있습니다 :-)


1
정확히 내 질문입니다 ... 예측을 할 수 있도록 기준 위험 함수의 추정이 필요합니까? 추정 방법이 있습니까?
Marja

2
@Marjan jackknife는 변수 선택으로 인한 불확실성을 제대로 반영하지 못할 수 있습니다. 부트 스트랩은 변수에 "유의 한"레이블이 지정된 더 많은 가변성을 올바르게 표시합니다. "상대적 유효성 검사"를 수행하려면 과적 합을 수정 한 후 예측 차별이 양호 함을 보여줄 수 있습니다. 이는 기본 위험을 처리 할 필요는 없지만 상대 로그 위험 추정값을 검증합니다. validate은 R의 기능 rms와 함께 패키지 cph함수는 할 것입니다. 에 구현 된 유일한 단계적 알고리즘 validate은 역방향 스텝 다운입니다.
Frank Harrell

1
상대 위험 예측 (예 : 선형 예측 변수)을 얻는 것은 매우 간단합니다. 하지만 1991 년에 SAS를 사용하여 종료
프랭크 하렐에게

8
링크가 사라졌습니다 :-(.
gung-Reinstate Monica

2
특정 개인의 생존 시간 T를 예측할 수있는 방법이 있습니까? 공변량에 대한 값 목록이 주어지면 개인이 죽을 가능성이 가장 높은 시간을 찾는 방법은 무엇입니까?
statBeginner

14

패키지 의 기능 predictSurvProbpecR을 사용하는 경우 기존 콕스 모델을 기반으로 새 데이터에 대한 절대 위험 추정치를 제공 할 수 있습니다.

수학적 세부 사항은 설명 할 수 없습니다.

편집 :이 함수는 생존 확률을 제공하며 지금까지 1- (이벤트 확률)로 사용했습니다.

편집 2 :

pec 패키지 없이도 할 수 있습니다. 다음 함수는 생존 패키지 만 사용하여 Cox 모델을 기반으로 절대 위험을 반환합니다.

risk = function(model, newdata, time) {
  as.numeric(1-summary(survfit(model, newdata = newdata, se.fit = F, conf.int = F), times = time)$surv)
}

1 생존 가능성은 누적 위험입니다. OP가 (기준선의) 즉각적인 위험 함수 또는 어떤 종류의 평활 한 추정치 ( muhazR의 패키지 )를 요구한다고 생각합니다 .
ECII

1
1 생존 가능성은 누적 위험이 아닙니다. 경쟁 위험이없는 경우이 두 가지는 en.wikipedia.org/wiki/…에 자세히 설명되어 있습니다.
miura

1- 생존 확률 = 실패율 (1x 실패 방법 만 가정). 생존 확률과 누적 위험의 관계는 허용 된 답변에 요약되어 있습니다. 누적 위험은 S(t)=exp(−Λ(t))어디에 있습니까 Λ(t)?
NickBraunagel

11

어쩌면 이런 식으로 시도하고 싶습니까? Cox 비례 위험 모델을 피팅하고이를 사용하여 새 인스턴스에 대한 예상 생존 곡선을 얻습니다.

R 에서 survfit.coxph 의 도움말 파일에서 제거 했습니다 (방금 라인 부분을 추가했습니다).

# fit a Cox proportional hazards model and plot the  
# predicted survival for a 60 year old 
fit <- coxph(Surv(futime, fustat) ~ age, data=ovarian) 
plot(survfit(fit, newdata=data.frame(age=60)),
     xscale=365.25, xlab="Years", ylab="Survival", conf.int=F) 
# also plot the predicted survival for a 70 year old
lines(survfit(fit, newdata=data.frame(age=70)),
     xscale=365.25, xlab="Years", ylab="Survival") 

비례 위험 가정은 여전히 ​​예측을 유지하기 위해 예측하는 환자는 질적으로 동일하게 사용 된 콕스 비례 위험 모델을 도출하는 데 사용 된 그룹과 동일해야합니다. 예측.


6

basehaz의 기능 survival패키지는 이벤트 시점에서 기준 위험을 제공합니다. 이를 통해 ocram이 제공하는 수학을 계산하고 coxph 추정값의 OR을 포함시킬 수 있습니다.


2

콕스 모델의 요점은 비례 위험의 가정과 부분 가능성의 사용입니다. 부분적 가능성은 기준 위험 기능이 제거되었습니다. 따라서 하나를 지정할 필요가 없습니다. 그것이 그 아름다움입니다!


2
그러나 공변량 벡터의 특정 값에 대한 위험 또는 생존의 추정치를 얻으려면 기준 위험 또는 생존의 추정이 필요합니다. Nelson-Aalen의 추정치는 일반적으로 일을합니다.
ocram

1
Cox 모델에서는 종종 두 가지 생존 함수를 비교하며 핵심은 위험 함수보다는 위험 비율입니다. 기준 위험은 비례 위험 가정을 사용하여 Cox가 문제에서 영리하게 제거하는 방해 요소와 같습니다. 모형과 관련하여 위험 함수 및 / 또는 기준 위험을 추정하기 위해 어떤 방법을 사용하든 비례를 강제하는 모델의 Cox 형식을 사용해야합니다.
Michael Chernick

너무 감사합니다. ocram의 답변에 대한 나의 의견을 보면 좋을 것입니다. 어쩌면 당신도 나를 도울 수 있습니까?
Marja

3
비례 위험이 아닌 요인을 계층화 할 수도 있습니다. 그러나 Cox 모델과 기준 위험의 적합 후 추정치를 사용하여 장기 추적 관찰이있는 경우 생존 시간, 다양한 생존 확률 및 평균 생존 시간의 예측을 얻을 수 있습니다. 이 모든 수량은 R 패키지로 쉽게 얻을 수 rms있습니다.
Frank Harrell

지정할 필요는 없지만 추정됩니다.
DWin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.