在SAS精确逻辑回归中同时使用连续与分类预测变量的问题
关于SAS精确逻辑回归的问题解答
1. 能否在EXACT语句中直接使用连续变量?
不建议直接这么做。SAS的PROC LOGISTIC虽允许在EXACT语句中纳入连续变量,但小样本场景下,连续变量的取值通常具有唯一性或近乎唯一性,会导致精确推断的计算量呈指数级增长,不仅可能让程序因计算资源耗尽而无法完成,还会挤占分类变量的计算资源,最终出现你遇到的分类变量精确估计缺失的情况。
可行的替代方案:
- 仅对分类变量执行精确推断,连续变量保留常规最大似然估计(推荐,计算效率更高且结果可靠)
- 对连续变量进行分组处理(如按分位数、临床阈值划分成分类变量),再纳入EXACT语句
2. SAS精确逻辑回归能否获取优势比(OR)?
可以。只要EXACT语句中指定了ESTIMATE=BOTH参数(你已添加该参数),当计算成功时,SAS会输出参数的精确估计值,以及对应的优势比(OR)和置信区间。但如果因连续变量导致计算中断,分类变量的OR结果也会无法生成,因此需先解决连续变量的处理问题。
修改后的代码示例
方案1:仅对分类变量做精确推断
proc logistic data=dat1 descending; class v1 v3 v4 v5; model y1=v1 v2 v3 v4 v5 v6; exact v1 v3 v4 v5/estimate=both; /* 仅针对分类变量执行精确推断,连续变量用常规估计 */ run;
方案2:对连续变量分组后再做全变量精确推断
/* 先对连续变量V2、V6按中位数分组,转换为二分类变量 */ data dat2; set dat1; /* 计算V2、V6的全局中位数 */ if _n_=1 then do; call symputx('v2_med', median(v2)); call symputx('v6_med', median(v6)); end; v2_grp = ifn(v2 > &v2_med, 1, 0); v6_grp = ifn(v6 > &v6_med, 1, 0); run; proc logistic data=dat2 descending; class v1 v3 v4 v5 v2_grp v6_grp; model y1=v1 v2_grp v3 v4 v5 v6_grp; exact v1 v2_grp v3 v4 v5 v6_grp/estimate=both; run;
内容的提问来源于stack exchange,提问作者ACHD
相关产品推荐
相关产品推荐

