我注意到可以使用min,max和/或使用表达式约束LMFIT中的参数。我想知道是否有一种方法可以使用表达式约束参数以遵循由平均值和标准偏差定义的正态分布。例如,我的一个参数位于-3000和5000之间,如果我将它们指定为最小值和最大值,优化器会将它们视为同等可能(均匀),但我希望它考虑远离均值的值(不太可能)(即正常)。谢谢。
答案 0 :(得分:0)
指定最小值和最大值实际上并不断言这些边界之间的所有值的概率相等。它确实在边界之外断言零概率。
与lmfit完成的非线性最小二乘拟合试图找到所有参数的最高概率值,它不会将所有值视为同等可能。您为每个参数提供起始值,并且该方法使用计算梯度(可以是分析,但通常是数字)来查找优化每个参数值的方向。
但是如果我理解你的目标,你并不真正想要“硬墙限制”,但是如果参数离预期值太远,则想要惩罚拟合。 Lmfit没有内置的方法可以轻松实现这一点,但可以在目标函数中添加这样的惩罚。一种方法是添加“惩罚”值作为要最小化的数组中的添加元素。也就是说,您可以延长残差。由于“最小二乘法”首先是残差的高斯分布,因此您可以简单地追加(np.concatenate
)一个术语::
(current_parameter_value - expected_value)/sigma_expected_value
到残差。在某种意义上,这类似于正则化,有时称为约束,允许但惩罚远离预期值的参数值。
希望有意义!