Chapter 7 Survival Data
7.1 Cox Proportional
7.2 non-proportional model
7.2.1 log-rank test
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5898500/pdf/main.pdf
log-rank test has been the one of the most commonly used methods for non-proportional hazard model. The weighted log-rank test allow different weight assignment to time points and thererfore is able to empasize certain portion of the survivla curves.
7.3 Spline Terms in a Cox model
(ref: https://cran.r-project.org/web/packages/survival/vignettes/splines.pdf)
Cox 모형에서 비선형 관계를 표현하는 것을 실습하겠습니다.
상기 reference를 한글로 정리하고, 몇가지 visualization을 수정한 것입니다.
기초 분석
Survival package 에서 MGUS 데이터를 이용해 실습하겠습니다.
if(!require(survival)) install.packages('survival')
if(!require(tidyverse)) install.packages('tidyverse')
if(!require(ggplot2)) install.packages('ggplot2')
실습한 데이터를 살펴 보겠습니다. MGUS 데이터를 이용하겠습니다. MGUS는 monoclonal gammopathy of undetermined significance 에 대한 241명의 자료입니다. 각 변수는 아래와 같습니다.
변수 | 내용 |
---|---|
id | subject id |
age | age in years at the detection of MGUS |
sex | male or female |
dxyr | year of diagnosis |
pcdx | for subjects who progress to a plasma cell malignancy, the subtype of malignancy |
pctime | days from MGUS until diagnosis of a plasma cell malignancy |
futime | days from diagnosis to last follow-up |
death | 1= follow-up is until death |
alb | albumin level at MGUS diagnosis |
creat | creatinine at MGUS diagnosis |
hgb | hemoglobin at MGUS diagnosis |
mspike | size of the monoclonal protein spike at diagnosis |
mgus1 | The same data set in start,stop format. Contains the id, age, sex, and laboratory variable described above along with |
start, stop | sequential intervals of time for each subject |
status | =1 if the interval ends in an event |
event | a factor containing the event type of censor, death, or plasma cell malignancy |
enum | event number for each subject is 1 or 2 |
::datatable(mgus) DT
첫번째 cox 모형을 만들어 보겠습니다. event에 해당하는 변수로 death
를 사용하고 이때 까지 추적관찰된 기간은 futime
을 이용하겠습니다. 보정 변수는 sex
그리고 index가 될, X 축이 될 변수는 age
로하고, 자유도는 4로하겠습니다.
= mgus %>%
mfit coxph(data=.,
Surv(futime, death) ~
+ pspline(age, df = 4)
sex
) mfit
## Call:
## coxph(formula = Surv(futime, death) ~ sex + pspline(age, df = 4),
## data = .)
##
## coef se(coef) se2 Chisq DF p
## sexmale 0.22784 0.13883 0.13820 2.69335 1.00 0.10
## pspline(age, df = 4), lin 0.06682 0.00703 0.00703 90.22974 1.00 <2e-16
## pspline(age, df = 4), non 3.44005 3.05 0.34
##
## Iterations: 5 outer, 16 Newton-Raphson
## Theta= 0.851
## Degrees of freedom for terms= 1.0 4.1
## Likelihood ratio test=108 on 5.04 df, p=<2e-16
## n= 241, number of events= 225
이를 기본적인 그래프로 그리면 다음과 같습니다.
우리가 두개의 변수를 이용했는데, 첫번째가 sex
(terms =1) 이고 두번째가 age
(terms =2) 입니다. age
가 주된 관심이니 terms=2
을 사용하겠습니다.
termplot(mfit, terms = 2, se = TRUE, col.term =1, col.set =1)
몇가지를 수정하기 위해 termplot
의 데이터를 가져오겠습니다.
<- termplot(mfit, se = TRUE, plot = FALSE)
ptemp attributes(ptemp)
## $constant
## [1] 3.205273
##
## $names
## [1] "sex" "age"
우리가 필요로 하는 것은 age
에 따른 Hazard Ratio 와 Standard Error 입니다. 이제 pterm$age
를 이용해 데이터를 가져오겠습니다.
<- ptemp$age
ageterm = ageterm %>% filter(x ==50) %>% pull(y) ref_score