带有因子变量的R包MatchIt

时间:2019-02-28 20:18:11

标签: r

我正在使用R包MatchIt来计算将用于直接生存分析的倾向得分权重,并且我注意到根据进入倾向得分计算的一些协变量是因子或数字这一事实,我注意到了非常不同的行为。

一个例子:3个变量的简单代码,其中一个是数字(大小)和两个因素(例如肿瘤分期,吸烟习惯)。治疗变量是指示手术类型的因素。

示例1:以阶段为因子,吸烟习惯为整数

> sapply(surg.data[,confounders], class)
tumor_size  TNM.STAGE smoking_hx 
 "numeric"   "factor"  "integer" 

我用以下代码计算倾向得分并提取权重

data.for.ps = surg.data[,c('record_id','surgeries_combined_n', confounders)]

match.it.1 <- matchit(as.formula(paste0('surgeries_combined_n ~',paste0(confounders, collapse='+'))), 
   data=data.for.ps, method='full', distance='logit')
match.it.1$nn
m.data = match.data(match.it.1)
m.data$weights = match.it.1$weights

没什么大问题。无论在这里“蓝色”和“红色”是什么意思,相应的加权生存分析的结果如下:

Plot1: stage=factor; smoking=integer

示例2完全相同,但是现在肿瘤分期为数字

> sapply(surg.data[,confounders], class)
tumor_size  TNM.STAGE smoking_hx 
 "numeric"  "numeric"  "integer" 

用于匹配的代码完全相同,用于生存分析的代码完全相同,结果如下:

enter image description here

没有非常,但有所不同。

示例3的代码完全相同,但同时具有肿瘤分期和吸烟习惯因素:

> sapply(surg.data[,confounders], class)
tumor_size  TNM.STAGE smoking_hx 
 "numeric"   "factor"   "factor" 

使用完全相同的代码,结果如下:

enter image description here

完全不同。

现在,没有理由将两个潜在因素之一设为数字:它们可以都是两个因素,但结果无疑是不同的。 谁能帮我理解

  1. 为什么会这样?我不认为这是编码问题,而是更多地了解哪一个是放入match.it的正确类。
  2. 这是MatchIt的“正确”解决方案,请记住,在小插图包中,输入倾向得分计算的所有变量都是数字或整数,甚至那些可能被编码为因素的变量(例如受教育程度或婚姻状况) 。
  3. 因素应始终是因素吗?如果编码一个因子,例如0、1、2、3(数字值,但class = factor),该怎么办?它应该保留一个因子吗?

非常感谢您的帮助! EM

1 个答案:

答案 0 :(得分:0)

这不是MatchIt中的错误,而是在分析任何类型的数据时可能发生的真实事件。数值变量包含许多隐藏的假设。特别是,这些值具有有意义的顺序,并且连续值之间的间距是相同的。在模型中使用数字变量时,假设变量与模型结果之间存在线性关系。如果这些假设无效,那么您的结果也将有风险。

您很聪明地评估结果对这些假设的敏感性。很难知道正确的答案是什么。最保守的观点是将变量视为因素,不需要假设其他数值变量的功能形式(尽管灵活建模的数值预测器也可能有效)。该方法不需要对变量的性质进行任何假设,但是,如果对数字变量的任何假设均确实有效,则估计的精度会下降。

由于倾向得分匹配实际上仅依赖于良好的倾向得分,并且协变量在模型中的作用主要是令人讨厌的,因此您应该确定哪种倾向得分模型在协变量上产生最佳平衡。同样,评估平衡需要对变量的分布方式做出假设,但是在各种变换和形式下评估协变量的平衡是完全可行和可取的。如果一个倾向得分规范在协变量的各个转换之间产生更好的平衡,则应该信任该倾向得分模型。超越标准化的均值差异,并查看两组中协变量的完整分布,将有助于您做出更明智的决策。

相关问题