如果你真的需要使用lm或nls并且不能使用任何允许你指定约束的东西,一种方法是重新参数化模型,以便系数的差异本身就是一个参数.
例如,如果你的模型中有b1*x1 + b2*x2,但是b2> b1你可以将其编码为b1*x3 + d*x2,其中x3 = x1 + x2,d代表b2-b1.现在你需要强制d> 0.你只需再次重新参数化,d = exp(k),比如说,并使用nls来拟合新模型b1*x3 + exp(k)*x2,其中你的参数是b1和k.估计之后,您可以将b2的估计值计算为b1 + exp(k).然后保证b1小于b2.
但是,nls允许您指定上限和下限,因此您应该能够将0作为d的下限(尽管这可能无法保证严格的不等式).
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |