SAS 程序冷知识——多重填补案例解读

案例一:

PROC MI DATA=pas4 OUT=pas5 seed=4362756 nimpute=10 round = 1 1 1 1 1 1 maximum= 35 35 35 35 35 35 minimum= 5 5 5 5 5 5 ;

by STRATAV group;

MCMC  chain=multiple IMPUTE=MONOTONE;

VAR pas1 pas3 pas4 pas5 pas6  pas7 ;

RUN;

这段SAS代码是应用于缺失数据的多重插补(Multiple Imputation)过程。具体解释如下:

seed=4362756: 这是一个随机数发生器的种子值,确保多重插补过程是可重复的。

nimpute=10: 将进行10次多重插补。即,将会产生10个含有不同插补值的完整数据集。

round = 1 1 1 1 1 1: 插补的数值将会被四舍五入到最接近的整数(这里指定了六个1,说明有六个变量的插补值需要被四舍五入)。

maximum= 35 35 35 35 35 35: 为每个插补的变量设置了一个最大值35。

minimum= 5 5 5 5 5 5: 为每个插补的变量设置了一个最小值5。

MCMC: 指定使用Markov Chain Monte Carlo (MCMC)方法来插补缺失的数据。

chain=multiple: 使用多条链来进行MCMC插补。

IMPUTE=MONOTONE: 插补方法设置为 MONOTONE。这种方法用于数据缺失模式是单调的情况,即如果一个变量是缺失的,那么在它之后的所有变量也都是缺失的。需要注意的是,如果数据集里有非单调缺失则不会处理(单调缺失模式意味着对于任何一个响应变量,如果这个变量对于一个观测值是缺失的,那么所有后面的变量对于这个观测值也都是缺失的)。

总的来说,这段代码的目的是用MCMC方法进行多重插补以处理数据集pas4中的缺失值,并输出10个插补后的完整数据集到新数据集pas5中。此过程被分层进行,并且对插补值进行了取整以及设置了上下限。

案例二:

PROC MI DATA=pas5 OUT=pas6 seed=4362756 nimpute=1 round = . . 1 1 1 1 1 1 maximum= . . 35 35 35 35 35 35 minimum= . . 5 5 5 5 5 5 ;

BY imputation;

CLASS STRATAV group;

VAR STRATAV group pas1 pas3 pas4 pas5 pas6 pas7;

MONOTONE REG(pas1 = STRATAV group);

MONOTONE REG(pas3 = STRATAV group pas1);

MONOTONE REG(pas4 = STRATAV group pas1 pas3);

MONOTONE REG(pas5 = STRATAV group pas1 pas3 pas4);

MONOTONE REG(pas6 = STRATAV group pas1 pas3 pas4 pas5);

MONOTONE REG(pas7 = STRATAV group pas1 pas3 pas4 pas5 pas6);

RUN;

具体解释如下:

MONOTONE REG(pas1 = STRATAV group):在这段代码中,使用了MONOTONE REG(pas1 = STRATAV group)语句进行插补。插补的目标是将缺失值pas1根据STRATAV和group变量的关系进行预测和填充。

MONOTONE REG是一个SAS PROC MI过程中的子过程,用于执行多元回归分析。它可以根据已知的自变量和因变量之间的关系,预测缺失值并进行插补。

在这个语句中,pas1是被解释变量,即要进行插补的缺失值。STRATAV和group是解释变量,即用来预测pas1的自变量。STRATAV和group可以是任意的变量,它们的关系将被用来建立回归模型,从而预测pas1的值。

通过执行MONOTONE REG(pas1 = STRATAV group)语句,SAS将使用已有的数据和已知的关系来建立回归模型。然后,该模型将用于预测缺失值pas1,并将插补后的值填充到输出数据集pas6中。

总而言之,这段代码的作用是使用MONOTONE REG方法根据STRATAV和group的关系来预测和填充pas1的缺失值。

案例三:

proc mi data=all_mono out=outmi seed=4362756 nimpute=1 round = . . 1 1 1 1 1 1 maximum= . . 35 35 35 35 35 35 minimum= . . 5 5 5 5 5 5 minmaxiter=1000000;

by Imputation;

CLASS STRATAV group;

var STRATAV group pas1 pas3 pas4 pas5 pas6 pas7;

monotone regression;

mnar adjust( pas6 / adjustobs=(group="&trt") shift=&sj)

adjust( pas6 / adjustobs=(group='对照组') shift= &pj);

run;

minmaxiter=1000000: 用于指定寻找合适的插补值时允许的最大迭代次数,用于每个插补过程中,算法达到maximum和minimum限制时尝试的最大迭代次数。换句话说,minmaxiter反映了算法在生成每个数据点的插补值时的迭代复杂度。

monotone regression: 在PROC MI中,这告诉SAS使用单调回归方法进行插补,这是插补单调缺失数据的一种标准方式。在单调插补中,SAS将根据在var语句中提到的变量列表的顺序来插补数据。它会从列表中的第一个变量开始,如果该变量有缺失值,就使用该变量之前的变量(这个情况下为没有,因为它是第一个)来预测缺失值。然后,它会移动到下一个变量,使用所有之前的变量(包括刚刚被插补过的变量)来插补它的缺失值,依此类推。所以,仅仅是var语句中的变量被用于回归插补。换句话说,和MONOTONE REG(pas1 = STRATAV group);相比,monotone regression更像是一个默认方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容