首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >注册解析积分时访问PDF变量

注册解析积分时访问PDF变量
EN

Stack Overflow用户
提问于 2019-12-03 10:04:37
回答 1查看 25关注 0票数 1

首先,感谢您制作了一个非常整洁的pythonic工具,它可以用作RooFit的替代品。

我已经成功地定义了一个自定义的2D PDF,但我不完全确定如何注册我的函数的解析积分:

Analytic integral from WolframAlpha

PDF的定义如下:

代码语言:javascript
运行
复制
class PdfForDeltaW(zfit.pdf.ZPDF):
    """Pdf to calculate epsilon, w, and delta w, as a function of sig-flav and tag-flav"""

    _N_OBS = 2
    _PARAMS = "epsilon w delta_w mix_prob".split()

    def _unnormalized_pdf(self, x):
        """Calculation of PDF value"""
        sigflav, tagflav = zfit.ztf.unstack_x(x)

        epsilon = self.params["epsilon"]
        w = self.params["w"]
        delta_w = self.params["delta_w"]
        mix_prob = self.params["mix_prob"]

        dilution = 1 - 2 * w
        mixing = 1 - 2 * mix_prob
        return (
                0.5
                * epsilon
                * (1 - sigflav * tagflav * (sigflav * delta_w + dilution * mixing))
        )

github上的示例来看,除了可以通过params属性访问的fit变量之外,我不确定如何访问用于计算的fit观察值(即,对于2D情况,x,sigflav和y,tagflav )。

此外,我不确定应该如何定义我的限制。我知道x和y都必须在- 1,1的范围内。我认为如果能更清楚地了解应该如何使用zfit.Space.from_axes函数,以及它与解析积分的关系,那会很好。

干杯,科尔姆

EN

回答 1

Stack Overflow用户

发布于 2019-12-03 15:14:33

谢谢你,让我来解释一下不同的东西:

拟合变量

如果你想在整个PDF上注册一个整数,你不需要访问sigflavtagflav,因为你是在它们上面集成的。如果你有一个偏积分,你可以通过x来访问它们,在_unnormalized_pdf的情况下,它充当参数。

距轴的空间

Space定义了您的坐标和限制/范围。通常,作为PDF的用户,这涉及到可观察对象(如DataFrame的列)。但是如果我们创建一个PDF,它将要使用的观察点当然是未知的,PDF的工作“基于位置”,或“基于轴”。例如,在您的示例中,sigflav位于轴0上,无论将与其一起使用的可观察对象的名称是什么。这就是为什么在注册积分时,我们需要使用根据axes定义的Space

积分极限

对PDF的限制可以有不同的控制。如果需要,可以实现更细粒度的控制,但目前可用的是,您可以定义从某个点/或任何地方到某个点/任何地方的积分。

这是很有用的,因为你可以注册几个积分。也许你知道一般积分,它有一个复杂的形式。但是你也知道,例如,从-1到1的整数正好是1,所以你也可以注册它,并给它更高的优先级。这意味着,如果你对1和1进行积分,则使用更简单的形式,否则使用更一般的形式。

在您的示例中,您希望从ANY注册到ANY,或者使用as限制ANY_LOWER、ANY_UPPER,如下所示

代码语言:javascript
运行
复制
lower_full = ((zfit.Space.ANY_LOWER, zfit.Space.ANY_LOWER),)
upper_full = ((zfit.Space.ANY_UPPER, zfit.Space.ANY_UPPER),)
integral_full_limits = zfit.Space.from_axes(axes=(0, 1),
                                            limits=(lower_full, upper_full))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59149209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档