Я работаю с scipy.stats.norm
PDF-файлами. Мне интересно, делаю ли я что-то не так (может быть, да), поскольку сумма PDF по нормальному распределению возвращает значения больше единицы, и по определению функция плотности вероятности должна суммироваться до 1. Я бы все в порядке, если сумма составит ~ 0,99 (поскольку я не суммирую все значения в интервале), но 20 не очень приемлемо. Минимальный пример показан ниже
from scipy.stats import norm
lower_bound = norm.ppf(0.01)
upper_bound = norm.ppf(0.99)
N = 100
x = np.linspace(lower_bound, upper_bound, 100)
P = norm.pdf(x)
print(np.sum(P))
Ваше определение должно быть немного изменено: по определению, интеграл функции плотности вероятности по всему пространству должен быть равен 1. Если вы хотите аппроксимировать этот интеграл с помощью суммы Римана, вы должны умножить значения на интервал между вашими x
значениями. Затем вы увидите, что результат намного ближе к 1:
>>> import numpy as np
>>> from scipy.stats import norm
>>> lower_bound = norm.ppf(0.01)
>>> upper_bound = norm.ppf(0.99)
>>> N = 100
>>> x, step = np.linspace(lower_bound, upper_bound, N, retstep=True)
>>> P = norm.pdf(x)
>>> print(np.sum(P * step))
0.9812297466603901
Точный результат (который вы можете более точно приблизить, увеличив N
) должен быть 0.98
, разница между значениями q
, переданными в norm.ppf
.
действительно. интеграл. Ваше определение является правильным. Спасибо.