2016-12-04 4 views
0

루프에 장착 된 coxph 모델을 100 복제했습니다. 데이터 프레임 또는 목록의 각 복제에 대해 p- 값을 사용하여 로그 순위 점수 테스트 결과를 추출하려고합니다. 나는 다음을 사용하고있다. 그러나, 그것은 p-value가 아닌 로그 등급 점수만을 제공합니다. 어떤 도움을 주시면 감사하겠습니다.콕스 모델의 p 값으로 로그 순위 (점수) 테스트 결과를 추출하십시오

데이터 세트를 공유 할 수 있지만 여기에 첨부하는 방법은 확실하지 않습니다.

덕분에, Krina 여기

Repl_List <- unique(dat3$Repl) 
doLogRank = function(sel_name) { 
dum <- dat3[dat3$Repl == sel_name,] 
reg <- with(dum, coxph(Surv(TIME_day, STATUS) ~ Treatment, ties = "breslow")) 
LogRank <- with(reg, reg$score) 
} 
LogRank <- t(as.data.frame(lapply(Repl_List, doLogRank))) 

답변

0

내가 coxph 함수의 도움말 페이지에서했다 모의 예이다. 방금 시나리오를 생성하기 위해 데이터 세트를 100 번 복제했습니다. 이러한 작업을 수행하려면 tidyverse 패키지를 사용하는 것이 좋습니다. broomdplyrtidyr과 함께 큰 도움이됩니다. 나는 replicate 기능을 사용하여 데이터 세트를 100 배를 복제하고 아래

library(survival) 
library(tidyverse) 
library(broom) 
    test <- data.frame(time=c(4,3,1,1,2,2,3), 
       status=c(1,1,1,0,1,1,0), 
       x=c(0,2,1,1,1,0,0), 
       sex=c(0,0,0,0,1,1,1)) 

.

r <- replicate(test,n = 100,simplify = FALSE) %>% bind_rows %>% 
    mutate(rep = rep(seq(1,100,1),each=7)) 

나는 cox 모델을 데이터 프레임의 각 복제에 전달할 수있는 작은 함수로 설정했습니다. 이하

cxph_mod <- function(df) { 
    coxph(Surv(time, status) ~ x + strata(sex), df) 
} 

는 모델 피팅과 값을 추출하는 단계 공정으로 단계이다. 각 중첩 nest

tidyr::nest dataframe purrr::map 모델 library(tidyr) map 함수가 coxph 출력을 보는 제 담당자에 library(purrr)

nested <- r %>% 
    group_by(rep) %>% 
    nest %>% 
    mutate(model = data %>% map(cxph_mod)) 

찾는 lapply 유사한 기능이다. 보다 쉽게 ​​액세스 할 수 있도록 데이터 프레임의 셀에 저장된 모델 객체를 볼 수 있습니다. 각 모델 객체와

nested %>% filter(rep==1) 

, 지금은 각 리 샘플 데이터 세트

피팅에 대한 귀하의 예측을보기 위해 중첩 된 데이터 셋

nested <- nested %>% 
    mutate(
    ests = model %>% map(broom::tidy) 
) 

tidyr::unnest로 모델의 매개 변수 추정 및 예측을 얻기 위해 빗자루를 사용

ests <- unnest(nested,ests,.drop=TRUE) %>% dplyr::select(rep,estimate:conf.high) 

이 경우 동일한 데이터 세트를 100 번 반복하기 때문에 pvalue는 동일하지만, 귀하의 경우에는 100 개의 다 tasets 및 따라서 100 다른 p.values.

ggplot(data=ests,aes(y=p.value,x=rep))+geom_point() 

비제이

+0

정말 고마워요, 비제이. –