A:天软提供模型
Regress_Constraint可以进行对回归系数约束的线性回归
可以对回归系数进行以下约束:
1.不等式约束:A*x <= B;
2.等式约束:Aeq*x = Beq
3.上下限约束:Lb < x <Ub
其中,A、B、Aeq、Beq、Lb、Ub是模型Regress_Constraint的参数。
特别说明:在对系数进行约束优化时,达到最大优化次数或没有可行解时返回不满足约束的值,请合理设置约束条件。
实现范例
范例一:对回归系数进行不等式约束的线性回归
不等式约束:x1+2x2+3x3<=6,x1+x2+x3>=2
y:=array(0.4253,1.3612,0.3304,0.6934,1.1214,0.9929,0.5996,1.0316,0.8177,0.6136);
x:=array((0.0438,0.8659,0.6379),
(0.9911,0.4025,0.83),
(0.794,0.8664,0.3367),
(0.7152,0.4165,0.5815),
(0.0273,0.247,0.9836),
(0.5299,0.2001,0.5964),
(0.8134,0.3703,0.2393),
(0.888,0.2939,0.6139),
(0.3112,0.7528,0.3322),
(0.3101,0.9795,0.3461));
constant := 1;
//加入不等式约束:x1+2x2+3x3<=6,x1+x2+x3>=2
A := array((1,2,3),(-1,-1,-1));
B := array(6,-2);
aeq := array();
beq := array();
alpha := 0.05;
option:=0;// 残差平方和最小
lb:=array();
ub:=array();
return Regress_Constraint(y,x,constant,A,B,aeq,beq,alpha,option,lb,ub);
执行结果:
回归系数:满足不等式约束
范例二:对回归系数进行等式约束的线性回归
等式约束:3x1+2x2+x3=3,x1+x2+x3=2
y:=array(0.4253,1.3612,0.3304,0.6934,1.1214,0.9929,0.5996,1.0316,0.8177,0.6136);
x:=array((0.0438,0.8659,0.6379),
(0.9911,0.4025,0.83),
(0.794,0.8664,0.3367),
(0.7152,0.4165,0.5815),
(0.0273,0.247,0.9836),
(0.5299,0.2001,0.5964),
(0.8134,0.3703,0.2393),
(0.888,0.2939,0.6139),
(0.3112,0.7528,0.3322),
(0.3101,0.9795,0.3461));
constant := 1;
A := array();
B := array();
//加入等式约束:3x1+2x2+x3=3,x1+x2+x3=2
aeq := array((3,2,1),(1,1,1));
beq := array(3,2);
alpha := 0.05;
option:=0;// 残差平方和最小
lb:=array();
ub:=array();
return Regress_Constraint(y,x,constant,A,B,aeq,beq,alpha,option,lb,ub);
执行结果:
回归系数:满足等式约束
范例三:对回归系数进行上下限约束的线性回归
上下限约束:0.5<x1,x2,x3<4
y:=array(0.4253,1.3612,0.3304,0.6934,1.1214,0.9929,0.5996,1.0316,0.8177,0.6136);
x:=array((0.0438,0.8659,0.6379),
(0.9911,0.4025,0.83),
(0.794,0.8664,0.3367),
(0.7152,0.4165,0.5815),
(0.0273,0.247,0.9836),
(0.5299,0.2001,0.5964),
(0.8134,0.3703,0.2393),
(0.888,0.2939,0.6139),
(0.3112,0.7528,0.3322),
(0.3101,0.9795,0.3461));
constant := 1;
A := array();
B := array();
aeq := array();
beq := array();
alpha := 0.05;
option:=0;// 残差平方和最小
//上下限约束:0.5<x1,x2,x3<4
lb:=array(0.5,0.5,0.5);
ub:=array(4,4,4);
return Regress_Constraint(y,x,constant,A,B,aeq,beq,alpha,option,lb,ub);
执行结果:
回归系数:满足上下限约束
范例四:对回归系数进行组合约束的线性回归
组合约束:
1.不等式约束:3x1+2x2+x3<=3
2.等式约束:x1+x2+x3=2
3.上下限约束:0<x1,x2,x3<4
y:=array(0.4253,1.3612,0.3304,0.6934,1.1214,0.9929,0.5996,1.0316,0.8177,0.6136);
x:=array((0.0438,0.8659,0.6379),
(0.9911,0.4025,0.83),
(0.794,0.8664,0.3367),
(0.7152,0.4165,0.5815),
(0.0273,0.247,0.9836),
(0.5299,0.2001,0.5964),
(0.8134,0.3703,0.2393),
(0.888,0.2939,0.6139),
(0.3112,0.7528,0.3322),
(0.3101,0.9795,0.3461));
constant := 1;
//加入不等式约束:3x1+2x2+x3<=3
A := array((3,2,1));
B := array(3);
//加入等式约束:x1+x2+x3=2
aeq := array((1,1,1));
beq := array(2);
alpha := 0.05;
option:=0;// 残差平方和最小
//加入上下限约束:0<x1,x2,x3<4
lb:=array(0,0,0);
ub:=array(4,4,4);
return Regress_Constraint(y,x,constant,A,B,aeq,beq,alpha,option,lb,ub);
执行结果:
回归系数:满足组合约束
