gpt4 book ai didi

html - R 中的 cox 回归输出表或图

转载 作者:行者123 更新时间:2023-12-02 00:08:10 24 4
gpt4 key购买 nike

我有一个 Cox 回归,它使用 strata() 和一个 tt()

是否有任何软件包可以帮助以表格格式生成美观、信息丰富的结果输出?虽然 ggforest() 处理 tt(),但它不处理 strata()

除了打印 summary(coxph) 之外,我正在寻找任何产生合适输出的方法。无论是 Latex 还是 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() 但没有成功....

最佳答案

这里有一些选项,具体取决于您要在决赛 table 中包含的内容。

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|
>

编辑 2在 Finalfit 中标记变量很容易。问题是目前不支持 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|

关于html - R 中的 cox 回归输出表或图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com