gpt4 book ai didi

weighted - 在 zfit 中的 unbinned 最大似然拟合中使用负权重数据

转载 作者:行者123 更新时间:2023-12-04 09:04:40 32 4
gpt4 key购买 nike

我正在尝试在 zfit 中执行未合并的 3D 角度拟合,其中输入数据是一个样本,每个事件的权重从单独的不变质量峰值拟合中分配。我想我在角相空间的某些区域遇到了负加权事件的问题,因为 zfit 给出了错误:

Traceback (most recent call last):
File "unbinned_angular_fit.py", line 282, in <module>
main()
File "unbinned_angular_fit.py", line 217, in main
result = minimizer.minimize(nll)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/baseminimizer.py", line 265, in minimize
return self._hook_minimize(loss=loss, params=params)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/baseminimizer.py", line 274, in _hook_minimize
return self._call_minimize(loss=loss, params=params)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/baseminimizer.py", line 278, in _call_minimize
return self._minimize(loss=loss, params=params)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/minimizer_minuit.py", line 179, in _minimize
result = minimizer.migrad(**minimize_options)
File "src/iminuit/_libiminuit.pyx", line 859, in iminuit._libiminuit.Minuit.migrad
RuntimeError: exception was raised in user function
User function arguments:
Hm_amp = +nan
Hm_phi = +0.000000
Hp_phi = +0.000000
Original python exception in user function:
RuntimeError: Loss starts already with NaN, cannot minimize.
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/minimizer_minuit.py", line 121, in func
values=info_values)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/baseminimizer.py", line 47, in minimize_nan
return self._minimize_nan(loss=loss, params=params, minimizer=minimizer, values=values)
File "/home/dhill/miniconda/envs/ana_env/lib/python3.7/site-packages/zfit/minimizers/baseminimizer.py", line 107, in _minimize_nan
raise RuntimeError("Loss starts already with NaN, cannot minimize.")
我可以通过稍微限制拟合可观察范围之一来避免此错误,以避免具有少量数据事件的区域,其中某些数据的权重为负(信号被 sWeights 略微过度减去)。但我想知道在 zfit 中是否有另一种方法可以解决这个问题?
也许 zfit 中的 UnbinnedNLL 方法明确要求正事件,但负加权数据点可以设置为零或小的正值?我应该说,与权重的总和相比,负权重的水平似乎很小,并且发生在只有少量数据事件的角度分布之一的边缘。该地区的数据率低是由于实验接受效果。
在测试文件上运行以重现错误的代码在这里:
https://github.com/donalrinho/zfit_3D_unbinned_angular_fit_test
当范围为 costheta_X_VV_reco 时不会遇到该错误变量仅限于 (-0.9, 1.0) 而不是完整范围 (-1.0, 1.0)。我相信这是因为它删除了加权数据为负的相空间区域。

最佳答案

NLL in zfit的定义中可以看到,权重只是乘以对数概率,因此负权重应该不是问题。
但是,似乎 PDF 返回某些值的负概率,您可以通过简单地获取返回的数组来查看这些值

custom_pdf.pdf(data)
一旦获取日志,这种负概率将变成 NaN。
也许在 PDF 的定义中,变量 h_pst 有错别字。好像没用。

关于weighted - 在 zfit 中的 unbinned 最大似然拟合中使用负权重数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63475861/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com