如何使用随机效应模型为 Cox 编码三个级别的分类变量?

How to code categorical variable with three levels for Cox with random effects model?

我想估计 Cox 随机效应模型的回归参数。假设我有一个具有两个级别的分类变量,例如性别。然后对变量进行编码很简单:例如,男性为 0,女性为 1。与该变量相关的回归系数的解释很简单。

现在假设我有一个具有三个水平的分类变量。如果我只是为三个级别(A、B 和 C)用 0、1、2 对变量进行编码,则相关回归系数的估计值将不是我要寻找的。如果我想估计与其他级别的每个“级别”相关的风险,我应该如何编码变量?

到目前为止我做了什么:

我定义了三个变量。 我定义了一个变量,其中我将级别 A 编码为 1,将其余级别(级别 B 和 C)编码为 0。 我定义了另一个变量,其中我将级别 B 编码为 1,将其余部分(级别 A 和 C)编码为 0。 最后,我定义了一个变量,其中我将级别 C 编码为 1,其余(级别 A 和 B)编码为 0。

然后我估计与变量相关的三个回归参数。

明确一点,我不想使用任何包,例如 coxph、coxme、survival 等

有更简单的方法吗?

您的描述(一个预测变量是全 1,另外两个预测变量作为 B 组和 C 组的指示变量)完全概括了 R 使用的标准 治疗对比 .

如果您想为单个因素f(在数据框d内)构造一个具有处理对比的模型矩阵,那么model.matrix(~f, data=d)将起作用

d <- data.frame(f=factor(c("A","B","B","C","A")))
model.matrix(~f, data=d)

结果:

  (Intercept) fB fC
1           1  0  0
2           1  1  0
3           1  1  0
4           1  0  1
5           1  0  0
attr(,"assign")
[1] 0 1 1
attr(,"contrasts")
attr(,"contrasts")$f
[1] "contr.treatment"

如果你喜欢,你可以使用其他对比;这些将改变您的单个变量的参数估计(和解释!),但不会改变整体模型拟合。例如

model.matrix(~f , data=d, contrasts=list(f=contr.sum))