You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:16:57