Интегрирование гауссовского распределения между двумя границами [Python] - PullRequest
2 голосов
/ 20 марта 2019

Я пытаюсь получить интеграл гауссовского распределения между двумя границами, учитывая среднее значение и стандартное отклонение гауссовского.

import numpy as np
import scipy

mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf

# generate Gaussian function
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
gauss = scipy.stats.norm.pdf(x, mu, sigma)

# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)

Это поднимает ValueError: invalid callable given, поэтому я делаю что-тонеправильно, но я не знаю, что это такое.

1 Ответ

4 голосов
/ 20 марта 2019

Функция quad принимает функцию в качестве первого входа, но вы предоставляете данные из гауссиана, оцененные в x:

import numpy as np
import scipy

mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf

# generate Gaussian function
def gauss(x):
    return scipy.stats.norm.pdf(x, mu, sigma)

# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)
print(integral)
(0.5596176923702426, 5.087725389583706e-10)

Если вы хотите интегрировать дискретные данные, scipy.integrate.quad это не инструмент для работы.Вместо этого используйте scipy.integrate.simps.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...