R:如何通过lm或nls为模型添加约束?

时间:2012-09-17 01:18:26

标签: r nls

我估计R中的模型,我想添加约束,强制其中一个系数小于另一个系数。我怎么能这样做?

1 个答案:

答案 0 :(得分:8)

如果你真的需要使用lm或nls并且不能使用任何允许你指定约束的东西,一种方法是重新参数化模型,以便系数的差异本身就是一个参数。

例如,如果您的模型中包含b1 * x1 + b2 * x2,但其中b2> b1你可以将其编码为b1 * x3 + d * x2,其中x3 = x1 + x2,d代表b2-b1。现在你需要强迫d>你只需再次重新参数化,d = exp(k),比如说,并使用nls来拟合新模型b1 * x3 + exp(k)* x2,其中你的参数是b1和k。估计之后,您可以将b2的估计值计算为b1 + exp(k)。然后保证b1小于b2。

但是,nls允许您指定上限和下限,因此您应该能够将0作为d的下限(尽管这可能无法保证严格的不等式)。

希望有所帮助。