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

如何用DO循环实现SAS中逐步累加自变量的回归分析

SAS循环实现逐步累加自变量的回归分析

核心思路

利用SAS宏循环(%DO)生成每次回归所需的自变量列表,自动执行10次回归,并提取各模型的调整R平方用于对比。

完整代码示例

假设你的数据集名为your_data,替换成实际数据集名即可:

/* 定义宏程序实现循环回归 */
%macro stepwise_reg();
  %do i = 1 %to 10;
    /* 生成当前模型的自变量列表:X1到Xi */
    %let vars = ;
    %do j = 1 %to &i;
      %let vars = &vars X&j;
    %end;

    /* 执行当前模型的回归分析 */
    proc reg data=your_data;
      title "Model &i: Y = &vars";
      model Y = &vars;
      /* 输出调整R平方到单独数据集,方便后续汇总对比 */
      ods output AdjRSq=adjrsq_model&i;
    run;
    quit;
  %end;
%mend;

/* 调用宏程序执行循环 */
%stepwise_reg();

/* 合并所有模型的调整R平方到一个数据集,方便对比 */
data all_adjrsq;
  set adjrsq_model1-adjrsq_model10;
  model_number = _n_; /* 添加模型编号 */
run;

/* 打印汇总的调整R平方结果 */
proc print data=all_adjrsq noobs;
  title "汇总:各模型的调整R平方";
  var model_number AdjRSq;
run;

代码说明

  • 宏循环%do i=1 %to 10控制执行10次回归,每次迭代对应一个模型;
  • 内层小循环%do j=1 %to &i生成当前模型的自变量列表,比如i=3时,变量列表为X1 X2 X3;
  • ods output AdjRSq=...语句将每个模型的调整R平方单独保存到数据集,避免手动提取;
  • 最后通过set语句合并所有调整R平方数据集,生成汇总表,直观对比10个模型的性能。

输出说明

  • 运行代码后,SAS结果窗口会显示10个PROC REG的完整回归结果(每个模型对应一个标题);
  • 同时生成汇总数据集all_adjrsq,打印后可直接看到每个模型编号对应的调整R平方值。

内容的提问来源于stack exchange,提问作者Yao TONG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:43:22