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的高斯分布的随机数,并绘制了累计概率密度函数图表。图表横坐标表示随机变量的取值范围,纵坐标表示落在相应取值以下的概率。
