내가 coxph 함수의 도움말 페이지에서했다 모의 예이다. 방금 시나리오를 생성하기 위해 데이터 세트를 100 번 복제했습니다. 이러한 작업을 수행하려면 tidyverse
패키지를 사용하는 것이 좋습니다. broom
은 dplyr
및 tidyr
과 함께 큰 도움이됩니다. 나는 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()
비제이
정말 고마워요, 비제이. –