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