具有约束的R线性模型

时间:2015-02-07 15:06:16

标签: r mathematical-optimization linear

我想要拟合一个线性模型

y ~ a_1 * x_1 + ... + a_n * x_n
带参数约束的

a_1,...,a_n >=0 

a_1 + ... + a_n <= 1 

在R。

有没有一种优雅而快速的方法可以做到这一点而且不使用quadprog软件包的solve.QP。 如果为拟议的解决方案概述一个简短但详细的用例,那将是非常好的。

1 个答案:

答案 0 :(得分:5)

您可以constrOptim使用费用函数最小二乘和约束定义ui %*% a >= ci

假设n=3。您需要约束,例如:

 a1         >=  0
     a2     >=  0
         a3 >=  0
-a1 -a2 -a3 >= -1

因此,您必须提供以下参数constrOptim

ui = rbind(c(1,0,0),
           c(0,1,0),
           c(0,0,1),
           c(-1,-1,-1))

ci = c(0,0,0,-1)

如果您不使用渐变,请在grad=NULL中明确设置constrOptim

希望它有所帮助。