Почему случайно сгенерированные распределения из numpy.random и scipy.stats настолько разные, что их вероятности не суммируются должным образом?

#python #numpy #statistics #probability-distribution #scipy.stats

#python #numpy #Статистика #распределение вероятностей #scipy.stats

Вопрос:

При случайной генерации случайных чисел с использованием numpy.random пакета и scipy.stats пакета, почему гистограмма (общие вероятности), сгенерированная первым пакетом, имеет такие большие значения с максимумом около 4, тогда как гистограмма последнего более разумна с максимумом намного меньше 1.

введите описание изображения здесь

Предполагается, что распределения вероятностей суммируются только до 1, при этом индивидуальная вероятность не превышает 1. Хотя scipy генератор выглядит более ручным, он все равно не суммируется с 1. Как я могу создать оба генератора из numpy.random и scipy.stats вести себя одинаково, т. Е. Не иметь ни одной вероятности, превышающей максимум 1?

 import numpy as np
import pandas as pd
from numpy.random import rand, randn
from scipy.stats import norm, johnsonsu

n = 100
x = randn(n)*.1
y = johnsonsu.rvs(a = 2.55, b= 2.25, size=n)

for i in [x, y]:
    print(sum(i))
    pd.Series(i).plot.kde()
  

Помимо графика, результат одного прогона показывает, что суммы случайно сгенерированных векторов сильно отличаются:

 0.9035925193845973
-144.49886490879146
  

Комментарии:

1. Вы работаете с непрерывными распределениями, что означает, что вы имеете дело не с вероятностями, а с плотностями вероятности. Для них это не сумма, а интеграл, который равен единице. В частности, значения больше 1 совершенно нормальны.

2. Как можно randn и johnsonsu можно исправить до уровня игрового поля