标准正态分布的缩放

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

我有一个与此密切相关的问题:

归一化直方图 y 轴大于 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()

上述代码的绘图如下所示:

std_normal_dist

上图是x轴上从-5到+5的标准正态分布,步长为0.01,就像代码中

np.arange()
所定义的那样。

现在我想修改我的代码,以便得到完全相同的图,所有内容都在同一个位置,就像上面一样,但 x 轴从 -500 到 500 而不是 -5 到 5,步长宽度1 而不是 0.01。

上述解决方案(归一化直方图 y 轴大于 1)建议修改值

a
,这样,如果 x 轴的尺寸乘以 100,我需要除以 y -axis 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()

结果如下:

peak_density-function

首先很有趣,因为它提出了另一个问题:当这样的函数只有一个可能的概率区域时,是否可以将其视为正态分布函数?那么它就像一个总面积为 1 的正方形?

回到最初的问题:如何修改我的代码,以便绘图显示 -500 到 500 之间的 x 值,x 轴上的步长为 1,并且 y 值位于中心(x=0)大约是0.004?

python numpy normal-distribution numpy-random
1个回答
0
投票

我想你想使用

b = a * 100

这样想: 您使用正态分布生成一个随机列表,其中包含 100,000 个元素,标准差为 1。 如果将其除以 100,标准差约为 0.01。 但步长为 1 时,任何数字落在这一柱线之外的几率实际上都是 0。 因此,您有两个选择:

  1. 将步长除以100
  2. 将您的数据乘以 100
© www.soinside.com 2019 - 2024. All rights reserved.