代码
// elasticnet code snippet
proc glmselect data=BIAO.fitness plots=coefficients;
model Weight = Age Oxy Runtime RunPulse RstPulse MaxPulse /selection = elasticnet(choose=AICC);
partition fraction(validate=0.3); /* Optionally partition data for validation */
run;
// lasso code snippet
proc glmselect data=BIAO.fitness plots=coefficients;
model Weight = Age Oxy Runtime RunPulse RstPulse MaxPulse /selection = lasso(choose=AICC);
partition fraction(validate=0.3); /* Optionally partition data for validation */
run;
操作步骤及程序设定
- 登录 SAS Studio 后,创建一个新文件夹 (例如截图中的 wei0908)

- 选中你创建的新文件夹,并点击上传图标,上传你的数据文件

- 在右侧,点击多点按钮,选择 “新建导入数据“

- 将左侧的 wei0908 文件夹下的 Fitness.xlsx 文件拖到右侧的画布上。

- 默认情况下,导入的数据集名为 “import”; 点击 “更改” 按钮,将数据集名称重命名为 Fitness。

- 点击 “运行” 按钮。

这个时候你的数据集就是
WORK.Fitness
- 创建 SAS 程序文件

- 保存并运行该程序文件

软件窗口的截图


运行结果


结果分析
两个模型(Elastic Net 模型与 Lasso 模型)的异同点如下:
相同点:
- 数据与目标变量
均使用数据集BIAO.FITNESS,以Weight(体重)为因变量。
涉及的效应数量(7 个)和参数数量(7 个)相同。
读取的观测值总数均为 31 个。
- 模型选择与停止准则
均采用GLMSELECT过程,停止准则为SBC( Schwarz Bayesian Criterion),选择准则为AICC(修正的 Akaike 信息准则)。
均未强制效应层级(Effect Hierarchy Enforced: None),且最终选择的模型均为仅包含截距项的Step 0模型(无其他自变量进入)。
- 模型效果特征
选定模型的R-Square和Adj R-Sq均为 0.0000,说明模型无法解释因变量Weight的变异(仅用截距项预测)。
方差分析中,模型的自由度(DF)为 0,平方和(Sum of Squares)为 0,均方(Mean Square)和 F 值缺失,表明模型未纳入任何自变量。
不同点:
- 选择方法
Elastic Net 模型使用ELASTICNET(弹性网)方法,结合了 L1 正则化(Lasso)和 L2 正则化(Ridge)。
Lasso 模型使用LASSO(套索)方法,仅采用 L1 正则化。
- 训练与验证集划分
Elastic Net 模型:25 个观测值用于训练,6 个用于验证。
Lasso 模型:23 个观测值用于训练,8 个用于验证。
- 关键指标数值

- 停止细节
Elastic Net 模型中,候选进入的变量为Age(年龄),其 SBC(107.1058)大于当前模型的 SBC(107.0263),故未进入。
Lasso 模型中,候选进入的变量为Oxy(氧气摄入量相关指标),其 SBC(102.5447)大于当前模型的 SBC(99.8415),故未进入。
总结:
两个模型的核心差异源于正则化方法和数据划分,导致关键指标(如 ASE、AIC、SBC)数值不同,但最终均未纳入任何自变量,仅以截距项作为预测结果,说明在该数据集上,两种方法均认为没有自变量能显著改善对Weight的预测。