나는 사용하는 Cox 회귀 분석 strata()
과 tt()
.
결과를 표 형식으로 잘보고 유익하게 출력하는 데 도움이되는 패키지가 있습니까? ggforest()
핸들 동안 처리 tt()
하지 않습니다strata()
인쇄 이외의 적절한 출력을 생성하는 방법을 찾고 있습니다 summary(coxph)
. 라텍스 든 HTML이든 상관 없습니다.
지금까지의 유일한 해결책은 테이블을 직접 만드는 것이지만, 종이에 넣기에는 충분히 매력적이지 않습니다 ....
다음은 더미 데이터 세트입니다.
set.seed(132456)
'dummy survival data'
df<-data.frame(id=seq(1,1000,1), event=rep(0,1000),time=floor(runif(1000,7,10)),group=floor(runif(1000,0,2)),
var1 = rnorm(1000, 1, 3), var2 = seq(1,1000))
'set events for a few random subjects'
id_list<-c(as.numeric(floor(runif(500,1,1000))))
df$event[df$id %in% id_list]<-1
'set survival times for events'
t_list<-c(as.numeric(floor(runif(394,1,5))))
df2<-df[df$event==1,]
df2$time<-t_list
'combine data'
df<-rbind(df,df2)
summary(df)
'Set up surfit '
require(survminer)
KM_fit<-coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df)
ggforest()
다음 오류를 반환합니다.
> ggforest(KM_fit)
Error in `[.data.frame`(data, , var) : undefined columns selected
additional warning:
In .get_data(model, data = data) :
The `data` argument is not provided. Data will be extracted from model fit.
이 ggforest()
기능 strata
은 생략 하면 작동합니다 . 그러나 내가 다루는 모델은 그것을 사용합니다 .... 그래서 해결책이 없습니다.
다음은 레이아웃에 대해 조금 더 알고 있다면 매우 기본적인 테이블을 반환하지만 실제로는 예쁘지 않습니다!
# Prepare the columns
beta <- coef(KM_fit)
se <- sqrt(diag(KM_fit$var))
p <- 1 - pchisq((beta/se)^2, 1)
CI <- round(exp(confint(KM_fit)), 2)
# Bind columns together, and select desired rows
res <- cbind(beta, se = exp(beta), CI, p)
# Print results in a LaTeX-ready form
knitr::kable(
xtable(res)
)
힌트와 트릭에 감사드립니다!
무리 감사!
finalfit()
성공하지 않고 시도했습니다 ....
최종 테이블에 포함하려는 항목에 따라 몇 가지 옵션이 있습니다.
coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
finalfit::fit2df() %>%
knitr::kable()
coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
finalfit::fit2df(condense = FALSE) %>%
knitr::kable()
coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
broom::tidy(exp = TRUE)
편집하다
digits
인수 축합 출력에 사용된다. 값을 숫자로 출력하는 경우 인쇄 할 때까지 반올림되지 않습니다. 두 가지 옵션이 있습니다.
> coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
+ finalfit::fit2df(digits = c(3,3,3)) %>%
+ knitr::kable()
|explanatory |HR |
|:-----------|:----------------------------|
|tt(var2) |0.998 (0.995-1.001, p=0.211) |
|var1 |1.006 (0.983-1.029, p=0.616) |
>
> coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
+ finalfit::fit2df(condense = FALSE) %>%
+ knitr::kable(digits = c(0, 2, 3, 4, 5))
|explanatory | HR| L95| U95| p|
|:-----------|----:|-----:|------:|-------:|
|tt(var2) | 1.00| 0.995| 1.0010| 0.21097|
|var1 | 1.01| 0.983| 1.0294| 0.61612|
>
Finalfit에서 2 개의 라벨링 변수를 편집하는 것은 쉽습니다. tt()
현재 문제는 지원되지 않습니다.
df %>%
mutate(
var1 = ff_label(var1, "Pretty var1"),
var2 = ff_label(var2, "Also very pretty var2"),
group = factor(group) %>%
ff_label("Group (strata)")
) %>%
finalfit("Surv(time, event)", c("var1", "var2", "strata(group)"), column = TRUE)
Dependent: Surv(time, event) all HR (univariable) HR (multivariable)
Pretty var1 Mean (SD) 0.9 (3.1) 1.01 (0.98-1.03, p=0.636) 1.01 (0.98-1.03, p=0.646)
Also very pretty var2 Mean (SD) 504.5 (288.3) 1.00 (1.00-1.00, p=0.479) 1.00 (1.00-1.00, p=0.484)
Group (strata) 0 714 (51.2) - -
1 680 (48.8) - -
말씀하신대로 간단한 표를 손으로 편집 할 수 있습니다.
coxph(Surv(time , event) ~ tt(var2) + strata(group)+ var1 ,data= df) %>%
finalfit::fit2df(condense = FALSE) %>%
mutate(
explanatory = c("Pretty var2 (time dependent)", "Also pretty var1")
) %>%
knitr::kable(digits = c(3,3,3,3,3))
|explanatory | HR| L95| U95| p|
|:----------------------------|-----:|-----:|-----:|-----:|
|Pretty var2 (time dependent) | 0.998| 0.995| 1.001| 0.211|
|Also pretty var1 | 1.006| 0.983| 1.029| 0.616|
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다