numpy 标准正态分布的标度

3pvhb19x  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(96)

我有一个与此密切相关的问题:
Normed histogram y-axis larger than 1
上述线程的解决方案是正确缩放轴的尺寸。然而,这个解决方案并不适用于我的代码:

import numpy as np
import matplotlib.pyplot as plt
from numpy import random
import seaborn as sns

np.random.seed(2023)
a = np.random.normal(0, 1, 100000)
sns.histplot(a, bins=np.arange(-5, 5, 0.01), stat='density', color = 'red')
plt.title("Standard Normal Distribution")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()

上面代码的图看起来像这样:

上图是一个标准正态分布,x轴上从-5到+5,步长为0.01,就像代码中np.arange()定义的那样。
现在我想修改我的代码,这样我就可以得到完全相同的图,就像上面一样,所有东西都在同一个地方,但是x轴从-500到500而不是-5到5,步长为1而不是0.01。
上面的解决方案(Normed histogram y-axis larger than 1)建议修改值a,这样如果x轴的尺寸乘以因子100,我需要将y轴除以因子100。然而,像这样修改我的代码

import numpy as np
import matplotlib.pyplot as plt
from numpy import random
import seaborn as sns

np.random.seed(2023)
a = np.random.normal(0, 1, 100000)
b = a/ 100
sns.histplot(b, bins=np.arange(-500, 500, 1), stat='density', color = 'red')
plt.title("Standard Normal Distribution")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()

结果是这样的:

首先,这很有趣,因为它提出了另一个问题:当它只有一个可能的概率区域时,这样的东西能被认为是正态分布函数吗?所以它就像一个总面积为1的正方形?
回到最初的问题:如何修改代码,使图显示的x值在-500到500之间,x轴上的步长为1,中心的y值(x=0)约为0.004?

z3yyvxxp

z3yyvxxp1#

我想你想用b = a * 100
这样想吧:您使用正态分布生成一个随机列表,包含100,000个元素,标准差为1。如果你把它除以100,你会得到大约0.01的标准差。但是步长为1,任何数字落在这一条之外的机会实际上是0。因此,您有两个选择:
1.把步数除以100
1.将数据乘以100

相关问题