안녕하세요?
제가 한편의 논문을 준비중입니다.
생존분석에서 단계적 회귀를 거쳐 Final model 까지 얻어 Hazard ratio도 잘 구할 수 있었습니다.
다만, 연속형 변수는 maxstat.test() 함수를 사용하여 cutoff value 를 자동으로 얻는 다고 알고 있지만, 이렇게 구하면 Hazard ratio 가 200넘게 측정되는(무한대까지도) 오류가 나타났습니다.
그러나 ROC curve 를 이용하여 변수마다 cutoff value를 따로 구하여 단계적 회귀를 시행하니 Hazard ratio 에 오류는 없었습니다.
질문1.
생존분석은 로지스틱회귀분석과는 달리 생존기간이 포함되는데 생존분석에서도 ROC curve 에 따른 cutoff value 를 이용하여 결과를 내도 되는 것인지 여쭙니다.
실제 몇몇 논문은 이와 같이 결과를 내고 있었습니다.
survival ROC 라는 개념을 도입해야하는지 궁금합니다.
질문2.
제시해주신 maxstat.test() 함수에 따른 계산된 cutoff value를 이용했을 때 Hazard ratio 오류(무한대)를 교정할 방법은 없는 것인지 여쭙니다.
질문3.
SPSS Cox 비례위험과 비교하여 Final model 에서 선출된 설명변수가 다르며, 또한 그 수치 Exp(B)와 R통계에서의 Hazard ratio가 다른 건 어떻게 설명해야 할지 고견을 여쭙니다.
감사합니다.
Comment 3
-
cardiomoon
2016.12.24 10:18
-
joon
2016.12.24 12:29
아하. 항상 감사드립니다^^
주말에도 댓글을 주시니 더욱 감사합니다
메리크리스마스입니다^^
-
hysh
2017.01.06 12:16
maxstat.test() maximally selected rank statistics는 optimal cutoff를 정하는 방법중 하나이며
ROC에서 원하는 기준에 따라 정해도 되지만 survial data에서는censored data가 많다면 survivalROC방법을 사용하는게 더 낫다고 할수 있습니다. censored 고려없이 그냥 ROC돌려서 cutoff를 정하는 방법을 많이 쓰기때문에 보통임상논문 리뷰어가 머라고 하지는 않을 겁니다.
HR가 200넘게 나오는 문제는 cutoff가 너무 극단에 잡혀있거나 그룹간 survival event 수가 너무 다를때 발생하는 문제로
MAXSTAT에서도 cutoff의 범위를 한정하는 방법이 있지만 web-R에서는 default로 되어있어 세밀하게 조정은 안되는 상태입니다.
R로 작업을 해보신다면 조정 가능합니다.
Cox 모델은 자동으로 변수선택이 되는 문제로 현재 web-R은 Backward Elimination 방법만 되어 있어
SPSS에서 여러 방법에 따른 변수 선택 결과는 달라집니다.
1) cutoff value를 ROC커브로 구해서 사용한느 것이 틀렸다고 할수는 없습니다. method에서 기술하고 사용하시면 될것 같은데요.
2) 데이타에 따라서는 Hazard ratio가 200 넘게 나올 수 있습니다. 오류라고 할수는 없을 것 같은데요.
3) SPSS는 모르겠는데 SAS와 R은 cox proportional harzard model에서 생존곡선의 deault type이 달라 차이가 날수 있다고 합니다. 제가 전공이 아니라 잘 알지는 못하지만 R은 default가 efron인데 그게 더 좋은방법이라네요. SAS는 breslow가 default여서 바꿔줘야한답니다. 다음은 R에서 survift함수의 설명서 중 일부입니다.
survfit.coxph {survival}
Compute a Survival Curve from a Cox model
Description
Computes the predicted survivor function for a Cox proportional hazards model.
Usage
## S3 method for class 'coxph'
survfit(formula, newdata,
se.fit=TRUE, conf.int=.95,
individual=FALSE,
type,vartype,
conf.type=c("log","log-log","plain","none"), censor=TRUE, id,
start.time,
na.action=na.pass, ...)
Arguments
type,vartype
a character string specifying the type of survival curve. Possible values are "aalen", "efron", or "kalbfleisch-prentice" (only the first two characters are necessary). The default is to match the computation used in the Cox model. The Nelson-Aalen-Breslow estimate for ties='breslow', the Efron estimate for ties='efron' and the Kalbfleisch-Prentice estimate for a discrete time model ties='exact'. Variance estimates are the Aalen-Link-Tsiatis, Efron, and Greenwood. The default will be the Efron estimate for ties='efron' and the Aalen estimate otherwise.