我可以在子集的 Cox PH 中*重新定义因子的参考水平吗?
Can I re-define a factor's reference level *within* a subsetted Cox PH?
这个问题是关于在使用因子的 Cox PH 回归中,当默认参考水平被子集化时,风险比参考水平会发生什么变化,特别是如果该行为可以在 coxph 子集操作中改变。
该应用程序是针对具体原因的危害,因此我希望能够灵活地分析变量的多个子集 - 每个竞争风险一个子集 - 而无需创建 All Cause 数据集的多个实例。 (注意:这是探索性的,而不是检验假设。)
定义一个行为合理的人为设计的 df(例如,具有统计意义,没有太多警告)...
smpls = 50
df <- data.frame(time=c(sample.int(10,smpls, replace=TRUE),
sample.int(20,smpls, replace=TRUE),
sample.int(30,smpls, replace=TRUE)),
status=1,
x=as.factor(c(rep("A",smpls),
rep("B",smpls),
rep("C",smpls))))
加载相关库...
require(survival)
做一个基本案例,输出 B 和 C 的 HR 系数,以因子 A 作为参考...
coxph(Surv(time, status) ~ x, df)
然后子集出来因子A。这似乎有选择因子C作为因子B系数参考的效果。
coxph(Surv(time, status) ~ x, df, subset=x!="A")
在最后一个示例中,我如何 'force' 将引用设为 B 而不是 C?
一种选择是使用 dplyr
包中的 mutate
,它允许您即时修改数据框:
library(dplyr)
保留所有三个级别,但将参考级别设置为 B:
coxph(Surv(time, status) ~ x, data = mutate(df, x = relevel(x, ref="B")))
去除水平A,将参考水平设置为B:我们这里也使用droplevels
,这样不仅从数据框中去除了水平A,而且
作为 x
的可能水平下降。您不必调用 droplevels
但随后您会收到警告,并且摘要输出将包含一行 A
级别的缺失值。
coxph(Surv(time, status) ~ x,
data = df %>%
filter(x != "A") %>%
mutate(x = droplevels(relevel(x, ref="B"))))
这个问题是关于在使用因子的 Cox PH 回归中,当默认参考水平被子集化时,风险比参考水平会发生什么变化,特别是如果该行为可以在 coxph 子集操作中改变。
该应用程序是针对具体原因的危害,因此我希望能够灵活地分析变量的多个子集 - 每个竞争风险一个子集 - 而无需创建 All Cause 数据集的多个实例。 (注意:这是探索性的,而不是检验假设。)
定义一个行为合理的人为设计的 df(例如,具有统计意义,没有太多警告)...
smpls = 50
df <- data.frame(time=c(sample.int(10,smpls, replace=TRUE),
sample.int(20,smpls, replace=TRUE),
sample.int(30,smpls, replace=TRUE)),
status=1,
x=as.factor(c(rep("A",smpls),
rep("B",smpls),
rep("C",smpls))))
加载相关库...
require(survival)
做一个基本案例,输出 B 和 C 的 HR 系数,以因子 A 作为参考...
coxph(Surv(time, status) ~ x, df)
然后子集出来因子A。这似乎有选择因子C作为因子B系数参考的效果。
coxph(Surv(time, status) ~ x, df, subset=x!="A")
在最后一个示例中,我如何 'force' 将引用设为 B 而不是 C?
一种选择是使用 dplyr
包中的 mutate
,它允许您即时修改数据框:
library(dplyr)
保留所有三个级别,但将参考级别设置为 B:
coxph(Surv(time, status) ~ x, data = mutate(df, x = relevel(x, ref="B")))
去除水平A,将参考水平设置为B:我们这里也使用droplevels
,这样不仅从数据框中去除了水平A,而且
作为 x
的可能水平下降。您不必调用 droplevels
但随后您会收到警告,并且摘要输出将包含一行 A
级别的缺失值。
coxph(Surv(time, status) ~ x,
data = df %>%
filter(x != "A") %>%
mutate(x = droplevels(relevel(x, ref="B"))))