【发布时间】:2019-02-28 20:18:11
【问题描述】:
我正在使用 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
没有大问题。无论“蓝色”和“红色”是什么意思,相应的加权生存分析结果如下:
示例 2 完全相同,但肿瘤分期现在是数字
> sapply(surg.data[,confounders], class)
tumor_size TNM.STAGE smoking_hx
"numeric" "numeric" "integer"
一模一样的匹配代码,一模一样的生存分析代码,结果如下:
不是非常不同,而是不同。
示例 3 是完全相同的代码,但包含肿瘤分期和吸烟习惯因素:
> sapply(surg.data[,confounders], class)
tumor_size TNM.STAGE smoking_hx
"numeric" "factor" "factor"
使用完全相同的代码,结果如下:
完全不同。
现在,两个潜在因素之一应该是数字是没有理由的:它们可以是两个因素,但结果无疑是不同的。 谁能帮我理解
- 为什么会这样?我不认为这是一个编码问题,但更多的是理解哪个是正确的类放入 match.it。
- 哪个是 MatchIt 的“正确”解决方案,请记住,在包小插图中,输入倾向得分计算的所有变量都是数字或整数,即使是那些可能被编码为因素的变量(例如教育水平或婚姻状况) .
- 因子应该始终保持因子吗?如果一个因子被编码为 0,1,2,3(数值,但 class=因子)怎么办:它应该保留一个因子吗?
非常感谢您的帮助! EM
【问题讨论】:
标签: r