具有约束的R线性模型

tob*_*ias 3 r mathematical-optimization

我想要拟合一个线性模型

y ~ a_1 * x_1 + ... + a_n * x_n
Run Code Online (Sandbox Code Playgroud)

带参数约束

a_1,...,a_n >=0 
Run Code Online (Sandbox Code Playgroud)

a_1 + ... + a_n <= 1 
Run Code Online (Sandbox Code Playgroud)

在R.

是否有一种优雅而快速的方法,而不使用quadprog软件包的solve.QP.如果针对提议的解决方案概述一个简短但详细的用例,那将是非常好的.

Col*_*vel 5

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

假设n=3.您需要以下约束:

 a1         >=  0
     a2     >=  0
         a3 >=  0
-a1 -a2 -a3 >= -1
Run Code Online (Sandbox Code Playgroud)

因此,您必须提供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)
Run Code Online (Sandbox Code Playgroud)

还明确地设置grad=NULLconstrOptim,如果你不使用渐变.

希望能帮助到你.