Python中连续变量的Renyi散度

Python中连续变量的Renyi散度,python,Python,我必须编写Python脚本来计算仁义散度。这对于离散变量很简单,但我处理的是连续变量。由于数字错误,我有很多问题。我已经成功地估算了样本的pdf。这就是我的代码的样子: def cont_renyi_divergence(pdf1, pdf2, alpha, minimum, maximum): def integrand(x): return ((pdf1(x))**alpha) * ((pdf2(x))**(1-alpha)) def KL_integrand

我必须编写Python脚本来计算仁义散度。这对于离散变量很简单,但我处理的是连续变量。由于数字错误,我有很多问题。我已经成功地估算了样本的pdf。这就是我的代码的样子:

def cont_renyi_divergence(pdf1, pdf2, alpha, minimum, maximum):
    def integrand(x):
        return ((pdf1(x))**alpha) * ((pdf2(x))**(1-alpha))
    def KL_integrand(x):
        return (pdf1(x)) * log((pdf1(x))/(pdf2(x)), e)
    if alpha == 1:
        return -integrate.quad(KL_integrand, minimum, maximum)[0]
    else:
        return (1/(1-alpha))*log(integrate.quad(integrand, minimum, maximum)[0], e)

其中,pdf1和pdf2基于高斯分布(pdf1的平均值和方差分别为30和5,pdf2的平均值和方差分别为30和10)。最小值和最大值是样本1(pdf1)或样本2(pdf2)中的最小/最大变量。这是我函数的定义,它计算Renyi divergence。问题是,这个函数的返回值不等于,这告诉我们两个正态(高斯)分布的散度。我知道,这是一个很难的话题,但我很乐意得到任何答案或建议。

事实上,这等于方程式。我在公式中用方差代替标准差。除此之外,它必须是alpha-1,而不是cont_renyi_散度定义中的1-alpha