提问人:nicholaspooran 提问时间:10/12/2023 更新时间:10/12/2023 访问量:52
如何将 cox 回归输出转换为数据帧?
How to convert cox regression output into a dataframe?
问:
我使用以下代码运行了单变量 cox 回归模型。
res <- coxph(Surv(DFS, DFS.Event) ~ Grade, data = Grade)
summary(res)
它输出如下:
Call:
coxph(formula = Surv(DFS, DFS.Event) ~ Grade, data = Grade)
n= 172, number of events= 38
(12 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
GradeGrade2 1.153 3.167 1.026 1.123 0.261
GradeGrade3 1.006 2.736 1.028 0.979 0.327
exp(coef) exp(-coef) lower .95 upper .95
GradeGrade2 3.167 0.3158 0.4237 23.67
GradeGrade3 2.736 0.3655 0.3651 20.50
Concordance= 0.539 (se = 0.04 )
Likelihood ratio test= 1.82 on 2 df, p=0.4
Wald test = 1.34 on 2 df, p=0.5
Score (logrank) test = 1.45 on 2 df, p=0.5
我想将输出转换为数据帧。我的预期输出是:
Variable coef exp(coef) se(coef) z p lower 0.95 upper 0.95
GradeGrade2 1.153 3.167 1.026 1.123 0.261 0.4237 23.67
GradeGrade3 1.006 2.736 1.028 0.979 0.327 0.3651 20.5
答:
1赞
Friede
10/12/2023
#1
当您正在寻找一种从输出中提取信息的方法时,我建议您使用表单的自写函数summary(coxph(something))
CoxphToDF <- function(y) {
stopifnot(class(y) == "summary.coxph")
y <-
cbind(y[["coefficients"]],
`lower .95` = y[["conf.int"]][, "lower .95"],
`upper .95` = y[["conf.int"]][, "upper .95"]
)
cbind(Variable = rownames(y), as.data.frame(y))
}
玩具数据来源:?coxph
library(survival)
test2 <- list(start=c(1,2,5,2,1,7,3,4,8,8),
stop=c(2,3,6,7,8,9,9,9,14,17),
event=c(1,1,1,1,1,1,1,0,0,0),
x=c(1,0,0,1,0,1,1,1,0,0))
bladder1 <- bladder[bladder$enum < 5, ]
testobject <- summary(coxph(Surv(stop, event) ~ (rx + size + number) * strata(enum),
cluster = id, bladder1))
结果看起来很奇怪,因为行名与列相同,但这模拟了预期。Variable
CoxphToDF(testobject) |> head()
#> Variable coef exp(coef) se(coef)
#> rx rx -0.52598436 0.5909733 0.31582587
#> size size 0.06961334 1.0720936 0.10155903
#> number number 0.23817961 1.2689371 0.07588471
#> rx:strata(enum)enum=2 rx:strata(enum)enum=2 -0.10632654 0.8991310 0.50423983
#> rx:strata(enum)enum=3 rx:strata(enum)enum=3 -0.17250719 0.8415522 0.55780009
#> rx:strata(enum)enum=4 rx:strata(enum)enum=4 -0.10945460 0.8963229 0.65730033
#> robust se z Pr(>|z|) lower .95 upper .95
#> rx 0.31523946 -1.6685232 0.095211902 0.3185925 1.096226
#> size 0.08863123 0.7854268 0.432203369 0.9011346 1.275486
#> number 0.07458532 3.1933847 0.001406155 1.0963594 1.468680
#> rx:strata(enum)enum=2 0.33395783 -0.3183831 0.750194332 0.4672589 1.730168
#> rx:strata(enum)enum=3 0.39867743 -0.4326987 0.665233705 0.3852354 1.838383
#> rx:strata(enum)enum=4 0.50636317 -0.2161583 0.828864362 0.3322365 2.418141
创建于 2023-10-11 使用 reprex v2.0.2
评论
0赞
nicholaspooran
10/12/2023
lower 0.95
两条线都是相同的。我应该在第一行和第二行。但是我在两条线上都得到了相同的值upper 0.95
0.4237
23.67
0.3651
20.50
下一个:根据事件数据及时绘制中介图
评论
broom
tidy