利用LMFIT中的不确定性进行误差加权拟合

2024-06-07 08:51:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用LMFIT拟合模型,我可以轻松地执行以下操作:

def loss_function(params):
  residuals = []
  for x, measured in ...:
     y = predict(x, params)
     residuals.append(y - measured)
  return residuals

params = Parameters()
params.add(...)

model = Minimizer(loss_function, params)
result = model.minimize(method='leastsq')

得到非常合理的结果

现在我也有一些与我的measured变量相关的不确定性(例如测量误差),所以我想用与之相关的标准误差来加权残差中的点(假设它一直是测量值的20%)。代码现在变成这样:

^{pr2}$

问题是现在我得到了完全不可靠的拟合结果。为什么?我该怎么解决这个问题?在


Tags: in模型formodelreturndeffunctionparams
1条回答
网友
1楼 · 发布于 2024-06-07 08:51:51

“完全不可靠”的性质是什么?您可能希望数据中的不确定性严格为正,使用measured* 0.2可以允许负值或零。请注意,如果残差中有nan或Infs,则拟合将无法正常工作,并且几乎可以肯定地将参数值保留在其起始值上。在

FWIW,您可以使用fcn_args参数将参数传递给目标函数(用于测量、不确定性等)。在

相关问题 更多 >

    热门问题