Scipy нормальное суммирование PDF до значений больше 1

Я работаю с 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))
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 198
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше определение должно быть немного изменено: по определению, интеграл функции плотности вероятности по всему пространству должен быть равен 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.

действительно. интеграл. Ваше определение является правильным. Спасибо.

Lin 21.12.2020 14:15

Другие вопросы по теме