为什么 numpy.random 和 scipy.stats 随机生成的分布如此不同,以至于它们的概率不能正确求和?

问题描述 投票:0回答:1

使用

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
python numpy statistics probability-distribution scipy.stats
1个回答
0
投票

如何才能使

numpy.random
scipy.stats
的两个生成器都没有超过最大值 1 的单个概率?

这已经在评论中了,但让我们把它放在一个答案中:对于连续分布,概率密度函数允许超过1;它是概率密度函数在支撑上的积分,必须等于 1。

除了绘图之外,单次运行的输出显示随机生成的向量的总和差异很大:

没有理由期望不同分布的随机样本之和彼此相似。即使来自同一分布的两个相同大小的样本也可能有很大差异(取决于分布)。

© www.soinside.com 2019 - 2024. All rights reserved.