非线性模型拟合中的参数约束我正在拟合以下形式的双指数增长模型:

我想限制参数估计,使 dmax1< dmax2 且rate1
有没有办法在非线性平台中做到这一点?
回复:非线性模型拟合中的参数约束感谢您的参考@Byron_JMP 。在这种情况下,它不是分段模型。实际的物理过程是两个反应以两种不同的速率同时发生,产生相同的输出结果。测量的输出是两个反应输出的总和,但每个反应都发生在同一个反应系统中,因此不能独立测量它们。
回复:非线性模型拟合中的参数约束我写了一些与此几乎相同的 JSL,它确实解决了问题。感谢分享。
回复:非线性模型拟合中的参数约束我想知道在没有约束的情况下非线性拟合后处理估计是否会更容易。 我假设 dmax1 和 Rate1 参数估计将一起进行,并且 dmax2 和 Rate2 参数估计将一起进行,即使 dmax1 和 Rate1 参数估计并不总是首先。 然后,要实现您想要的顺序,您只需在保存估计表后交换数据表中的顺序即可。 这个例子展示了我的想法:
Names Default to Here( 1 );
dt = New Table( "Double Exponential Models",
Add Rows( 20 ),
New Column( "dmax1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate1",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "dmax2",
Values( J( 20, 1, Random Uniform() ) )
),
New Column( "rate2",
Values( J( 20, 1, Random Uniform() ) )
)
);
Wait( 5 );
For Each Row(
If( :rate1 > :rate2,
temp = :dmax1;
:dmax1 = :dmax2;
:dmax2 = temp;
temp = :rate1;
:rate1 = :rate2;
:rate2 = temp;
);
);
回复:非线性模型拟合中的参数约束Sue Walsh 在一次演讲中谈到了这种类型的模型纸不久前在 JMP Discovery 工作。
幻灯片中有关分段模型的注释有点稀疏,但我认为您将能够了解如何设置它的要点。
回复:非线性模型拟合中的参数约束这更多的是为了方便而不是数学。实际问题是我正在将非线性模型拟合到作为 DOE 的一部分生成的多个动力学曲线。我展示的非线性模型是我们认为描述该过程的理论模型,该模型由两个独立的反应组成,一个是“慢”反应,另一个是“快”反应。慢反应速率约为快反应速率的1/100。
问题是,当我将非线性模型拟合到每个配置文件时,有时估计的“rate1”参数是最小的,而其他时候“rate1”参数是最大的。JMP 不知道我希望rate1 为慢速。当我保存参数估计值时,我必须进行一些数据处理以确定哪个速率是慢速率,哪个速率是快速率。最终我想使用 DOE 中的因素来预测慢反应速率和快反应速率。
不过,我的一部分想法是,强制这个约束也可能使模型拟合更稳定?但也许不是。我不知道。
回复:非线性模型拟合中的参数约束如果您相信该假设是正确的,那么我认为最好的模型应该在没有约束的情况下找到这样的估计。 否则,这些数据就是反对这一假设的证据。
定制模型将保持不变。 我认为你必须引入约束作为对损失函数的惩罚。 当违反约束时,惩罚会很高。
回复:非线性模型拟合中的参数约束非线性拟合的约束条件是否有更新?
报告底部有最小值/最大值设置 - 但是当我点击“执行”时,拟合结果超出了最小值和最大值范围。

回复:非线性模型拟合中的参数约束嗨@hogi ,
你使用的是哪个数据集?
谢谢,
本
回复:非线性模型拟合中的参数约束嗨@Ben_BarrIngh ,
实际上,我试图拟合两个峰,并试图限制中心点的拟合范围。
当峰值尾部与拟合曲线不匹配时,很难拟合峰值;)
在尝试调整拟合效果时,我想知道是否可以通过限制 x1/x2 扫描的范围来优化拟合效果。
……并想知道平台是否有办法进行限制。
) dt = New Table( "spectra",
Add Rows( 200 ),
New Column( "X",
Formula( Row() )
),
New Column( "input",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1},
(h1 * W ^ 2) / ((:X - 70) ^ 2 + W ^ 2) + (h2 * W ^ 2) / ((:X - 130)
^ 2 + W ^ 2)
)
)
),
New Column( "fit",
Formula(
Parameter(
{h1 = 1, W = 40, h2 = 1, x1 = 0, x2 = 200},
h1 * Exp( -(:X - x1) ^ 2 / (2 * W ^ 2) ) + h2 *
Exp( -(:X - x2) ^ 2 / (2 * W ^ 2) )
)
)
)
);
dt << Nonlinear( Y( :input ), X( :fit )
回复:非线性模型拟合中的参数约束嗨@hogi ,
您需要先通过参数边界(红色三角形)进行设置,然后再点击“开始”,以防止超出限制。虽然下方图表中的低值/高值应该会更新,但或许还是应该向support@jmp.com 报告此问题。
这样能解决你想要达成的目标吗?
谢谢,
本
回复:非线性模型拟合中的参数约束啊,太好了,谢谢 
有人能把@Ben_BarrIngh的回复标记为“解决方案”吗?

回复:非线性模型拟合中的参数约束@Ben_BarrIngh ,补充问题:
当我使用“By”拟合多个光谱时,有没有什么技巧可以设置全局约束和锁定?

例如:
new column ("by",Nominal, set each value(mod(row(),3)));
Nonlinear( Y( :input ), X( :fit ), by(:by),
SendToByGroup( Bygroup Default,
Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100),
h1( 0, 2 ),
x2( 100, 200)
) )
)
回复:非线性模型拟合中的参数约束针对全局约束的变通方法:
new column ("by",Nominal, set each value(mod(row(),3)));
nl = Nonlinear( Y( :input ), X( :fit ), by(:by) );
nl << Parameter Bounds(
h1( 0, 2 ),
x1( 0, 100 ),
h2( 0, 2 ),
x2( 100, 200 )
)
锁似乎没有被记录下来。
可以通过设置最小值=最大值来设定约束条件。