我想在SAS中使用正则化创建一个多元回归模型。该模型可以是线性的或非线性的,但我想确保系数小而正。 我该怎么做? 示例代码将不胜感激。
答案 0 :(得分:1)
我不完全确定在你的情况下什么构成小系数,但proc qlim
允许简单和复杂的系数限制。为了演示,我们假设你想要一个系数都在-1和1之间的模型。bounds
是解决这个问题的简单方法。
proc qlim data=sashelp.cars;
model horsepower = cylinders mpg_city;
bounds -1 <= cylinders <= 1
, -1 <= mpg_city <= 1
;
run;
模型收敛并给出了答案。您还可以使用restrict
语句执行更复杂的限制。
proc qlim data=sashelp.cars;
model horsepower = cylinders mpg_city;
restrict mpg_city + cylinders <= 1
;
run;
限制的进一步复杂性,例如非线性,将需要proc model
。
proc model data=sashelp.cars;
endo horsepower;
exo cylinders mpg_city;
horsepower = b0 + b1*cylinders + b2*mpg_city;
restrict b1/b2 >= 0;
fit;
run;
proc model
是最灵活的回归程序之一。因此,它需要大量的手动输入。使用proc model
,您必须声明您的受抚养人和&amp;自变量,并输出每个参数。只要您声明您的依赖/独立,它就可以自动确定参数变量。