计算分类处理变量cobalt::bal.tab的单个绝对标准化差异

机器算法验证 r 因果关系 倾向评分
2022-03-26 00:11:44

我可以跨分类治疗变量的水平计算单个绝对标准化差 (ASD) 吗?用于在余额表中报告。

我进行了治疗加权的逆概率分析,以估计提供者经验对手术后并发症的平均治疗效果。我使用cobalt::bal.tab (R) 来生成我的平衡表,报告调整前后的ASD。输出为每个分类变量的每个水平提供未调整和调整的差异。

同行评审员要求我为每个分类变量报告一个 ASD(不是每个级别一个)。有没有办法手动计算,或者cobalt::bal.tab 提供了我还没有发现的解决方案?

我的输出部分的示例:(“年龄”是连续的,“ASA 状态”是 4 个级别的分类。)

Unweighted Population                      IPTW Population
Basic               Advanced        ASD    Basic            Advanced            ASD
n   100             200                    200              300 
Age 34 (24.3-52.0)  38 (27.0-57.8)  0.22   34.0 (25.0-55.9) 36.2 (27.0-57.0)    0.08
ASA status                      
 1  70 (70)         100 (50)        0.20   120 (60)         150 (50)            0.10
 2  20 (20)         80  (40)        0.10   60  (30)         100 (33)            0.03
 3  8  (8)          40  (20)        0.12   30  (10)         50  (17)            0.07
 4  0  (0)          8   (4)         0.04   0   (0)          9   (3)             0.03

ETC...

那么对于“ASA 状态”,我可以计算四个级别的单个 ASD 吗?一个未调整,一个调整?

感谢您阅读我的问题:-)

1个回答

这里的作者cobalt审稿人的要求实际上并没有多大意义。效应估计​​中的偏差是分类变量每个水平的平均差的函数。您可以为该分类变量创建一个平衡的一维摘要,例如,作为该变量的最大 SMD,然后只需在表格的标题中提及该摘要的解释。没有办法在 中自动执行此操作cobalt,而且在我看来丢失了重要信息。

我会注意到,已经提出了一个与分类变量的 SMD 等效的值。这是由Yang 和 Dalton (2012)提出的。除了模糊地等同于 SMD 外,它没有直观的解释。它根据分类变量计算为两个样本之间的马氏距离。其解释的一个很好的方面是,对于两级变量,公式简化为 SMD。但是,效果估计中的偏差不是该值的函数,但在我看来,变量的一个级别可能会出现极端不平衡,而该级别被其他级别所掩盖。

它不存在,cobalt因为当前框架无法使用它(cobalt将提供的数据集转换为数值矩阵,通过将分类变量转换为虚拟变量而失去其级别之间的关系)。还有另一个可用于评估余额的包,称为tableone,它确实为分类变量计算此修改后的 SMD。它还生成漂亮的表格,比来自cobalt的表格要好得多,后者主要用于平衡评估而不是报告。您可以在包vignette上使用修改后的 SMD 查看此类表的示例

对于审稿人来说,这是一个非常微小的细节。SMD 本身是一种评估平衡的任意方法,因此我不清楚为什么计算摘要 SMD 的特定方法应该优于另一种。鉴于审阅者希望您计算的这个值只是每个分类变量的余额摘要,您可以选择任何摘要并在标题中进行解释。没有一个总结优于另一个。只要你能令人信服地表现出平衡,你应该没问题。