Cox 비례위험모형에서도 모형 전체를 흔들 수 있는 영향력 관측치가 존재할 수 있습니다. 이런 관측치를 제거할 것인지는 상당히 고민되는 일이지만, 일단 존재한다면 이를 살펴볼 필요는 있습니다. 여기서는 surviminer 패키지의 ggcoxdiagnostics 기능을 이용해서 이를 알아볼 것입니다. 물론 관측치 자체가 많아지면 너무 튀는 것을 제외하고 관측치 하나의 영향력은 줄어들게 되어 있습니다. deviance residuals 및 dfbeta 값을 테스트해서 너무 큰 값을 찾아볼 것입니다.
library(survival)
library(survminer)
kd3<-coxph data="kidney)</span" factor="" sex="" status="=1)~age" ties="efron" time="" urv="">-coxph>
summary(kd3)
#Testing influential observations
ggcoxdiagnostics(kd3, type = "dfbeta",
linear.predictions = FALSE, ggtheme = theme_bw())
ggcoxdiagnostics(kd3, type = "deviance",
linear.predictions = FALSE, ggtheme = theme_bw())
여기서 보면 40번대 초반 관측치가 좀 튀는 녀석이 있다는 사실을 알 수 있습니다. age에서는 비교적 균등 배치된 것으로 보이나 sex에서 이 관측치가 숨어 있는 것 같습니다. 이 관측치는 앞서 봤었던 42번 관측치로 마지막에 끼어든 남성입니다. ( https://blog.naver.com/jjy0501/221703077190 참조) 이 관측치를 제거한 후 다시 그래프를 그려 보겠습니다.
#removing influential observations
kidney1<-kidney span="">-kidney>
kd3<-coxph data="kidney1)</span" factor="" sex="" status="=1)~age" ties="efron" time="" urv="">-coxph>
summary(kd3)
#Testing influential observations
ggcoxdiagnostics(kd3, type = "dfbeta",
linear.predictions = FALSE, ggtheme = theme_bw())
ggcoxdiagnostics(kd3, type = "deviance",
linear.predictions = FALSE, ggtheme = theme_bw())
이제 그래프가 좀 더 균등한 모습을 보이고 있습니다. (Y축이 크게 줄어들었다는 점 참조) 그렇긴 하지만 관측치를 제거하는 것만이 능사는 아닐 수 있습니다. 마구잡이로 제거하면 결국 결과를 왜곡할 가능성이 크기 때문입니다. 이상치가 아니라면 제거는 신중하게 결정해야 합니다.
댓글
댓글 쓰기