多重插补和倾向得分
机器算法验证
r
多重插补
倾向评分
2022-03-31 13:21:17
2个回答
我的理解是,您应该为每个数据集生成单独的倾向评分模型,然后匹配,然后估计结果,然后将估计值合并为一个。
1)Match()
在 Matching 中接受用户自己的倾向得分(将其作为 X 参数包含在对 . 的调用中Match()
。matchit()
在 MatchIt 中也是如此。我还建议您尝试倾向得分加权;包 twang 允许用户输入自己的倾向得分/权重然后评估平衡。twang 小插曲解释了如何做到这一点并估计治疗效果。
2) 通常对于平衡评估报告,您分别评估每个数据集的平衡,然后报告估算数据集中每个协变量的最大不平衡。不要平均您的估算数据集。如果在估算的数据集中,每个协变量的最大不平衡在可接受的范围内(例如,ASMD <.1),这应该足以证明您已经达到平衡并且可以继续前进。
正如我之前所说,在缺失数据插补后使用逆概率治疗加权是合理的,而不是进行倾向匹配。
合适的Stata示例如下:
clear all
webuse mheart5
*dataset
replace smokes = . in 20/70
*creates missing values for smokes variable in observations 20 to 70
mi set mlong
mi register imputed age bmi smokes
set seed 29390
mi impute mvn age bmi smokes = attack hsgrad female, add(10)
*missing data imputation creating 10 imputed datasets
replace smokes=round(smokes,1)
replace smokes = 1 if smokes >=1
replace smokes = 0 if smokes <=0
*rounding to transform smokes variables into a binary one
set seed 54321
generate randomvar = runiform()
gsort randomvar
*random sorting of the data
psmatch2 smokes age bmi female hsgrad, noreplace logit
gen iptw = 1/(1-_pscore) if smokes == 0
replace iptw = 1/(_pscore) if smokes == 1
*generation of inverse probability of treatment weighting
mi estimate: glm attack smokes [pweight = iptw], family(binomial) link(identity) vce(robust)
*inverse probability of treatment weighting analysis for dichotomous endpoint after multiple imputation
*---
clear all
webuse stan3
*dataset
replace age = . in 20/70
replace transplant = . in 40/90
*creates missing values for age variable in observations 20 to 70 and transplant variable in observations 40 to 90
mi set mlong
mi register imputed age transplant
set seed 54321
mi impute mvn age transplant = year died stime surgery wait posttran, add(10)
*missing data imputation creating 10 imputed datasets
replace transplant=round(transplant,1)
replace transplant = 1 if transplant >=1
replace transplant = 0 if transplant <=0
*rounding to transform transplant variable into a binary one
set seed 54321
generate randomvar = runiform()
gsort randomvar
*random sorting of the data
psmatch2 surgery year age transplant wait posttran, noreplace logit
gen iptw = 1/(1-_pscore) if surgery == 0
replace iptw = 1/(_pscore) if surgery == 1
*generation of inverse probability of treatment weighting
mi stset stime [pweight = iptw], failure(died) scale(1)
mi estimate: stcox surgery
*inverse probability of treatment weighting analysis for censored endpoint after multiple imputation
mi estimate: glm stime surgery [pweight = iptw], family(gaussian) link(identity) vce(robust)
*inverse probability of treatment weighting analysis for continuous endpoint after multiple imputation
其它你可能感兴趣的问题