Расхождение Renyi для непрерывной переменной в 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(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). Это определение моей функции, которая вычисляет разницу Реньи. Проблема состоит в том, что возврат этой функции не равен уравнению , которое говорит о расходимости для двух нормальных (гауссовских) распределений. Я знаю, что это трудная тема, но я был бы рад за любой ответ или совет.

python,

3
Яндекс.Метрика