年龄是分类的还是定量的还是两者兼而有之?

机器算法验证 分类数据 cox模型
2022-04-10 03:01:30

首先,对不起,如果这是一个简单的问题。我被要求研究一些临床流行病学。互联网是我唯一的支持团体,因为我不是专家监督下的学生。

我正在对药物列表(分类)执行 Cox 回归,并且正在调整协变量年龄(其中包括性别、收入等)。我不确定是否应该将年龄视为分类或定量协变量。

根据我的基本理解,年龄通常被视为定量变量,而分类变量将是“你是吸烟者吗?”,是/否。最喜欢的颜色?等等

首先,调查药物对 R 的影响:

coxph(Surv(time,status)~drug,data=coxDF)

                       coef exp(coef)  se(coef)      z        p
drugNamecodeine_based  0.150117  1.161970  0.022199  6.762 1.36e-11
drugNameporpranolol    0.237963  1.268662  0.023608 10.080  < 2e-16
drugNameparacetamol    0.202408  1.224347  0.021519  9.406  < 2e-16

然后,通过将年龄视为定量来控制患者的年龄:

coxph(Surv(time,status)~drug+age,data=coxDF)



                        coef  exp(coef)   se(coef)       z        p
drugNamecodeine_based  0.1393446  1.1495202  0.0222008   6.277 3.46e-10
drugNameporpranolol    0.1849390  1.2031450  0.0236432   7.822 5.20e-15
drugNameparacetamol    0.1939401  1.2140235  0.0215203   9.012  < 2e-16
adjustedAge           -0.0225542  0.9776982  0.0005415 -41.650  < 2e-16

将年龄视为一个定量变量会对所服用的药物进行一些细微的调整。然而,这是有道理的,如果我控制一个分类年龄,我不仅可以获得与年龄相关的风险细分(以年为单位),而且对每种药物的调整也是不同的。

coxph(Surv(time,status)~drug+as.factor(age),data=coxDF)

                         coef exp(coef) se(coef)       z        p
drugNamecodeine_based     0.14077   1.15116  0.02222   6.334 2.38e-10
drugNameporpranolol       0.18819   1.20706  0.02367   7.949 1.88e-15
drugNameparacetamol       0.19453   1.21474  0.02155   9.028  < 2e-16
as.factor(adjustedAge)19  0.04519   1.04622  0.07329   0.617 0.537554
as.factor(adjustedAge)20  0.08761   1.09157  0.06905   1.269 0.204510
as.factor(adjustedAge)21  0.02948   1.02992  0.07030   0.419 0.674937
....
....
as.factor(adjustedAge)38 -0.48611   0.61501  0.06367  -7.635 2.26e-14
as.factor(adjustedAge)39 -0.54026   0.58260  0.06362  -8.492  < 2e-16
as.factor(adjustedAge)40 -0.48973   0.61279  0.06416  -7.633 2.29e-14
as.factor(adjustedAge)41 -0.46459   0.62839  0.06286  -7.391 1.46e-13
as.factor(adjustedAge)42 -0.57269   0.56401  0.06272  -9.131  < 2e-16

我真的很喜欢我可以看到每个年龄的计算。但是,就药物的结果而言,我不确定将年龄变量视为正确与否。

而且,值得注意的是,一个病人只被观察一次。所以他们的年龄与时间无关。

总结一下我的主要问题:

1)我现在可以看到与每一年组相关的风险似乎很好,但是,为什么这会改变每种药物在年龄之间的 exp(coef)被视为定量和分类?

2)如果我想在测量特定药物对患者时间结果的影响时控制年龄,这应该是定量的还是分类的?

3)如果我对与患者年龄相关的风险(而不是他们拥有什么药物)更感兴趣,那么我肯定需要将年龄视为分类变量吗?我会只用 ~age 进行单独的计算吗?

非常感谢您的帮助。

编辑 1 回复非常好,最有用。原谅我对统计的基本理解。从它的声音来看,我将年龄视为一个定量协变量。

我不明白的是,除了那些友好地回复我的帖子的人之外,我也无法问专家,为什么我要在我的模型中添加二次项或三次项?这将实现什么?

2个回答

一般来说,您应该将年龄视为一个定量变量,假设您有实际年龄而不是年龄范围。有几个原因。也许最重要的是,如果您使用年龄作为分类变量,您通常需要变量来表示回归模型中的年龄类别,并且会失去每个类别的自由度。这导致不太强大的测试。另一方面,使用单个定量/数值变量只需要一个变量和一个自由度。 c1cage

Age作为定量变量比作为分类变量包含更多信息。如果您要表示age为分类变量,那么您将通过将其保留为定量变量来消除您所拥有的年龄的自然顺序。换句话说,具有分类年龄的模型无法分辨出 70 岁比 5 岁更接近 80 岁(因为 70 比 80 早 10,但是如果您age作为一个类别建模,则没有信息表明您的模型中,类别 A(可能代表您的第一个年龄类别)位于类别 C 之前,类别 C 可能代表另一个年龄类别)。您将获得定量年龄模型与定性年龄模型不同的系数估计值,因为模型做出不同的 假设.

还有其他几个重要原因导致将量化指标视为类别通常不是一个好主意。Frank Harrell 在这里列出了很多其他原因。

无需将年龄视为一个类别来估计与受试者年龄相关的风险。age您可以通过将估计的系数乘以受试者的年龄(以年为单位)并取幂来简单地估计任何给定年龄的风险。

更新您的“编辑 1”

我不明白,...,为什么我要在我的模型中添加二次项或三次项?这将实现什么?

首先,我很高兴看到您决定使用年龄作为定量变量。我想我们所有人都为你的这个决定鼓掌。

我们建议对您的模型尝试二次或三次项的可能性的原因是年龄可能与您的结果没有严格的线性关系。在不失去对您的确切问题和模型的一般性的情况下,我认为根据简单的线性回归模型来考虑这一点会更容易,也更有启发性。

假设您有一个简单的线性回归模型,在该模型中回归weight. age如果您在模型中包含age一个线性项(例如),那么您假设体重随着人的年龄增长而稳步增加,无论人的年龄多大(参见线性模型图以下)。这可能不是适当的函数关系。相反,在现实中,通常发生的情况是一个人随着年龄的增长体重增加,但随着年龄的增长,他们开始减肥。由于老年人体重下降,这不能很好地建模为线性函数。相反,如果其中包含一个二次项(例如 βage×Xageβage×Xage2) 除了线性项,这可以更好地捕捉体重和年龄之间关系的非线性和二次性质。使用项允许回归模型预测随着年龄增长到某一点时体重增加,然后模型将开始预测随着年龄增长体重下降(参见下面的二次模型图)。如果您仅包含一个线性项,则您的模型将无法捕捉到老年人体重下降的情况。相反,您的模型将简单地继续预测体重的增加直至老年。同样的概念也适用于您的模型。Xage2

除了在模型中包含二次项或线性项外,您可能还想探索使用样条曲线或广义加法模型(GAM) 来对这些类型的非线性关系进行建模。

线性模型:

线性模型]

二次模型:

二次模型

PS。请记住,我只是制作了这些图表。它们并不真正代表现实生活中的真实体重和年龄。例如,在现实生活中,有人在达到 100 时不仅重达 8 磅,而且我想你明白了。

我认为以这种方式对年龄进行分类并不是一个好主意。这不仅是出于统计原因,还因为结果的价值有限:您的输出表明,39 岁的人比 38 或 40 岁的人风险更小。我猜一般的解释——年龄会降低风险——可能会以这种方式迷失。

还有其他方法可以获取有关变量“年龄”的更多信息。您可以添加一个二次项或三次项来测试年龄的影响是否是线性的。

2)如果我想在测量特定药物对患者时间结果的影响时控制年龄,这应该是定量的还是分类的?

您可以估计不止一个模型。首先,拟合一个仅将药物作为解释变量包含在内的模型。然后你拟合另一个模型,在其中添加可能也有影响的变量,并检查药物的影响是否发生了变化。他们还是一样吗?在那种情况下,药物就是因果关系。如果它们变得更低,它只是与其他变量的影响相关。