如何获取SAS中Proc GLIMMIX过程的舍弃/排除观测数据?
如何在PROC GLIMMIX中获取被舍弃/纳入分析的观测数据集
嘿,我来帮你搞定这个问题!在SAS的PROC GLIMMIX里,默认会自动排除一些不符合要求的观测(比如有缺失值、不满足模型假设的),要追踪这些观测其实有几个实用的方法:
方法1:直接生成纳入分析的观测数据集
最简单的方式就是在PROC GLIMMIX里加OUTPUT语句,把过程实际用到的观测导出成一个新数据集。之后拿这个数据集和原始数据比对,就能找出被舍弃的观测了。
给你修改下你的代码示例,添加关键的OUTPUT语句:
%LET EST=inputf.aarefestimates; %LET MODEL_VAR3 = age Male Yearc2010 HOSPST Hx_CTSURG Cardiogenic_Shock COPD MCANCER DIABETES; data work.refmodel; set inputf.readmref; Yearc2010 = YEAR - 2010; run; PROC GLIMMIX DATA = work.refmodel NOCLPRINT MAXLMMUPDATE; * 这里替换成你实际的模型语句,比如因变量是y的话:; model y = &MODEL_VAR3. / <你的模型选项>; * 核心语句:导出纳入分析的观测到新数据集; OUTPUT OUT=work.included_obs; * 你的其他语句(比如RANDOM、LSMEANS等)放在这里; RUN; * 用PROC SQL比对原始数据和纳入数据集,找出被排除的观测; * 注意:把<唯一标识变量>替换成你数据里的唯一ID(比如患者ID、观测编号); proc sql; create table work.excluded_obs as select * from work.refmodel where not exists ( select 1 from work.included_obs where refmodel.<唯一标识变量> = included_obs.<唯一标识变量> ); quit;
这样work.included_obs就是GLIMMIX实际用到的观测,work.excluded_obs就是被舍弃的观测啦。
方法2:提前标记可能被排除的观测(比如缺失值)
GLIMMIX最常见的舍弃原因是模型变量存在缺失值(默认会自动排除有缺失的自变量/因变量观测)。你可以提前在数据预处理阶段加一个标志变量,快速定位这类情况:
data work.refmodel_with_flag; set work.refmodel; * 检查模型中所有变量(包括因变量)是否有缺失值; * 把<你的因变量>替换成你模型里的因变量名称; has_missing = cmiss(of &MODEL_VAR3. <你的因变量>); * has_missing=1表示该观测有缺失,很大概率会被GLIMMIX排除; run;
之后你可以把这个带标志的数据集和included_obs比对,就能确认是不是因为缺失被排除的。
小提示
- 一定要用唯一标识变量来比对数据集,避免因为重复观测导致判断错误。
- 如果你的模型有复杂的过滤逻辑(比如用
WHERE语句),那included_obs也会自动排除这些不符合WHERE条件的观测,不用额外处理。
内容的提问来源于stack exchange,提问作者Mray
相关产品推荐
相关产品推荐

