使用
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
如何才能使
和numpy.random
的两个生成器都没有超过最大值 1 的单个概率?scipy.stats
这已经在评论中了,但让我们把它放在一个答案中:对于连续分布,概率密度函数允许超过1;它是概率密度函数在支撑上的积分,必须等于 1。
除了绘图之外,单次运行的输出显示随机生成的向量的总和差异很大:
没有理由期望不同分布的随机样本之和彼此相似。即使来自同一分布的两个相同大小的样本也可能有很大差异(取决于分布)。