欢迎访问宙启技术站
智能推送

Python中如何生成高斯分布的累计概率密度函数图表

发布时间:2023-12-16 11:58:52

在Python中,可以使用SciPy库中的scipy.stats.norm模块来生成高斯分布的累计概率密度函数(Cumulative Probability Density Function,CDF)图表。下面是具体的步骤和例子:

步骤1:导入所需的库

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

步骤2:生成一组符合高斯分布的随机数

可以使用numpy.random.randn函数来生成服从标准正态分布(均值为0,标准差为1)的随机数,然后可以根据需要进行变换得到符合指定均值和标准差的随机数。例如,生成均值为5,标准差为2的高斯分布随机数,可以使用如下代码:

mu = 5    # 均值
sigma = 2    # 标准差
size = 1000    # 生成随机数的数量

random_samples = np.random.randn(size) * sigma + mu

步骤3:计算累计概率密度函数

使用scipy.stats.norm模块中的cdf函数可以计算一个随机变量落在指定值以下的概率,这个函数的参数是落在指定值以下的点。

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)    # 生成横坐标的取值范围
cdf = norm.cdf(x, mu, sigma)    # 计算CDF

步骤4:绘制图表

使用matplotlib.pyplot库来绘制累计概率密度函数图表。

plt.plot(x, cdf)
plt.xlabel('x')
plt.ylabel('Cumulative Probability')
plt.title('Cumulative Probability Density Function')
plt.grid(True)
plt.show()

完整的代码如下:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

mu = 5    # 均值
sigma = 2    # 标准差
size = 1000    # 生成随机数的数量

random_samples = np.random.randn(size) * sigma + mu

x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)    # 生成横坐标的取值范围
cdf = norm.cdf(x, mu, sigma)    # 计算CDF

plt.plot(x, cdf)
plt.xlabel('x')
plt.ylabel('Cumulative Probability')
plt.title('Cumulative Probability Density Function')
plt.grid(True)
plt.show()

在这个例子中,我们生成了1000个符合均值为5,标准差为2的高斯分布的随机数,并绘制了累计概率密度函数图表。图表横坐标表示随机变量的取值范围,纵坐标表示落在相应取值以下的概率。