다른 연구 자료의 Survival curve 로 좀 고민하다가 찾은 내용이다.(http://www.cbgstat.com/methods/R_maximal_chi/R_maximal_chi.htm)
특정 조건에 따른 생존 곡선을 작성할 때 cutoff value 값을 정해야 할 필요가 있는데 친절하게도 p-value 가 가장 작아지는 범위를 골라준다. 이 함수의 이름과는 좀 다르다. :)
maxstat 이라는 라이브러리를 설치해야 한다. survival 라이브러리는 일반적으로 기본적으로 설치되어 있다.
abc <- read.table("GBM_data.csv", header=TRUE, sep=",")
max <- maxstat.test(Surv(Survival, Death) ~ Age, data=abc, smethod="LogRank", pmethod="HL")
다양한 옵션이 있지만 최소한의 옵션 정도는 위와 같다.
Surv(Survival, Death) ~ Age
Survival 은 생존 기간 정보가 들어간 항목, Death 는 특정 event가 발생한 항목, Age는 cutoff 값을 알고 싶은 항목이다. Death 부분에는 기본적으로 0은 생존, 1은 event 발생이 들어가게 된다.
smethod는 어떤 방식에 의하여 검증 할 것인가, pmethod는 p.value 검정 방법이다. 이 두 항목은 잘 모르겠다. :)
이런식으로 결과 값이 나온다. estimated cutpoint 에 나오는 값이 cutoff 값이다. 아직 다른 항목으로 확인을 못했봤지만 작은 값부터 시작하여서 p-value 를 찾는 것 같으며, cutpoint 보다 같거나 작은 값과 그 보다 큰 값으로 분류가 되어 있다. 그리고 문제는 저 p-value 인데 이 통계 방법에서 나오는 p-value 와 SPSS에서 나오는 p-value 는 다르게 나온다. 해결하는 방법은 따로 한 번 더 구하면 되는 것이다. 그 과정은 약간의 자료값을 처리해야 한다. 이제부터는 cutpoint 가 정해진 age 값이 있기 때문에 그 보다 같거나 작은 값과 큰 값을 가지는 값을 새롭게 만들어야 한다.
a <- matrix(nrow=22, ncol=3)
우선 새로운 matrix 를 만들어야 하는데, 22는 증례 숫자, 3은 Survival, Event, Age(cutpoint에 의한 재분류) 값을 위한 것이다.
for (X in 1:22){a[X,1] <- abc[X,2];a[X,2] <- abc[X,3]}
첫 번째 column 은 survival 값이 들어가고, 2번째 column 은 Event 정보가 있는 값이 들어간다.
for (X in 1:22){if (abc[X,1] <= max$estimate) {a[X,3] <- 1} else {a[X,3] <- 2}}
abc라는 자료의 첫 번째 column 에는 나이가 있었는데 그 값이 이번에 구한 cutpoint 인 5보다 같거나 작으면 그 항목에는 1이라는 값을 그렇지 않으면 2라는 값을 입력하도록 했다.
plot(survfit(Surv(a[,1],a[,2]) ~ a[,3]), lty=4:5)
이렇게 하면, survival curve 를 구할 수 있고
survdiff(Surv(a[,1],a[,2]) ~ a[,3])
이렇게 하면, p-value를 알 수가 있다.
'공부해 봅시다 > R-Project' 카테고리의 다른 글
임의의 수 만들기 (0) | 2010.12.18 |
---|---|
Package 설치하기 (0) | 2010.09.09 |
있어 보이는 heatmap 만들기 (0) | 2010.05.31 |
Array data 살펴 보기 - Simple (0) | 2010.05.26 |
Array data 살펴 보기 - 삽질편 (0) | 2010.05.26 |