我想拟合一个线性模型
y ~ a_1 * x_1 + ... + a_n * x_n
带参数约束
a_1,...,a_n >=0
和
a_1 + ... + a_n <= 1
在 R。
有没有一种优雅而快速的方法来做到这一点,而不使用 quadprog 包的 solve.QP 。
如果能够为提议的解决方案概述一个简短但详细的用例,那就太好了。
最佳答案
您可以使用 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
如果不使用渐变。希望能帮助到你。
关于带约束的 R 线性模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383685/