如何实施反集成Chi^2函数?

2024-06-17 13:08:55 发布

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

我在一篇名为A Neural Bayesian Estimator for Conditional Probability Densities的论文中实现了一些变量的预处理。在

它声明: 1.)给定一个非线性的单调变量变换F:t->;s,使s均匀分布。如本文所述,可通过以下方式实现:

>>> sorting the target vector in ascending order
>>> fitting the spline to data, e.g. using interpolate from scipy

2.)之后,s被缩放到-1和1之间。这可以通过interp来实现:

^{pr2}$

3.)最后,平面分布需要转换成高斯分布,以std1为中心。在

虽然前两个步骤在如何实施上很明确,但我正在努力解决第三个步骤。在

关于3),作者进一步指出可以使用积分X^2(X…chi)函数的逆。有没有适合这项工作的库,最好是Python?在

更新1:

再看一遍这篇文章,似乎X^2与气没有直接关系,而是计算如下:

X^2=p*(1-o)^2+(1-p)*((-1)-o)^2

P作为纯度(可以很容易地计算给定的变量)和{}变量本身。在

对于标度在-1和1之间的给定s,我可以计算下限为-1,上限为s的积分,然后求出它的逆。在

问:如何在数字上做到这一点?在


Tags: thegt声明targetfor方式步骤bayesian
1条回答
网友
1楼 · 发布于 2024-06-17 13:08:55

如果您的意思是X2如所述的PDF发行版here,那么您所看到的是X2CDF。它是通过不完全伽马函数表示的,见同一个参考文献,你可以用SciPy来计算它,this或{a3}应该是合适的。别忘了分母中的全伽马函数。在

要找到不完全Gamma的逆函数,可以从SciPy:thisthat中查看逆函数。在

所以,我不认为你需要所有这些插值的东西

更新

这个表达式可以通过分析计算,比如说,使用在线积分器 像that。只要计算上界的结果和下界的结果之间的差,就可以设置了

更新II

你必须自己设定时间间隔

以下是(绝对未经测试!)您可以尝试使用的代码。注意,我用的是通用的 但是,由于积分是多项式,所以更理想的方法可能是 使用here的多项式根,甚至 自己编写代码-它只是一个cubic equation

def intgrl(x):
    return x*(x*(3.0 + x - 6.0*p) + 3.0)/3.0

def CDF(x, norm):
    return (intgrl(x) - intgrl(-1.0))/norm

def f(x, norm, rn):
    return CDF(x, norm) - rn

norm = intgrl(1.0) - intgrl(-1.0)

rn = 0.12345
res = scipy.optimize.brentq(f, -1.0, 1.0, args=(norm, rn))

更新III

变量rn被定义为从0到1的某个(随机U(0,1))数。在

^{pr2}$

相关问题 更多 >