Matplotlib 绘制样本概率密度函数
阅读更多:Matplotlib 教程
概述
概率密度函数(probability density function,PDF)是描述随机变量在某一取值上出现概率密度的函数。在实际应用中,通过样本数据通常是更常用和可行的方法。本文将介绍如何利用matplotlib绘制样本概率密度函数。
生成样本
在绘制概率密度函数前,需要先生成样本。常用的生成样本的方法包括numpy、random等库。这里以numpy为例,生成正态分布的样本。代码如下:
import numpy as np
# 生成一个均值为0、标准差为1的正态分布样本,样本大小为1000
mean, std, size = 0, 1, 1000
sample = np.random.normal(mean, std, size)
绘制直方图
绘制样本概率密度函数的第一步是绘制直方图。matplotlib中提供了hist
函数用于绘制直方图。代码如下:
import matplotlib.pyplot as plt
# 绘制直方图
plt.hist(sample, bins=30, density=True, alpha=0.5, color='blue')
plt.show()
其中,bins
参数指定直方图的条数,density
参数指定归一化,使直方图的面积等于1,alpha
参数指定透明度,color
参数指定颜色。
绘制概率密度函数
直方图是离散的,为了更精确地表示概率密度函数,需要将其转化为连续的曲线。利用样本数据可以通过核密度估计(kernel density estimate,KDE)的方法获得概率密度函数。matplotlib中提供了plot
函数用于绘制曲线图。代码如下:
from scipy.stats import gaussian_kde
# KDE方法获取概率密度函数
kde = gaussian_kde(sample)
# 绘制概率密度函数曲线
xs = np.linspace(sample.min(), sample.max(), num=300)
plt.plot(xs, kde(xs), label='PDF', color='red')
plt.legend()
plt.show()
其中,gaussian_kde
函数使用高斯核(kernel)方法求解概率密度函数,xs
样本中值域的300个取值点上采样。
分布拟合
上述方法用于生成正态分布的样本,并绘制其概率密度函数。同样的,针对其他分布,只需要修改生成样本的方法和核密度估计方法即可。下面以生成伽马分布的样本,并拟合分布为例。代码如下:
# 生成伽马分布的样本
shape, scale, size = 2, 1, 1000
sample = np.random.gamma(shape, scale, size)
# 计算伽马分布概率密度函数
from scipy.stats import gamma
dist = gamma(shape, scale)
# 绘制直方图和概率密度函数
plt.hist(sample, bins=30, density=True, alpha=0.5, color='blue')
xs = np.linspace(sample.min(), sample.max(), num=300)
plt.plot(xs, dist.pdf(xs), label='PDF', color='red')
plt.legend()
plt.show()
运行前三行代码生成伽马分布的样本,后两行代码计算伽马分布的概率密度函数,利用前文所述的方法绘制直方图和概率密度函数。
通过以上示例,可以看出利用matplotlib绘制样本概率密度函数的步骤是:先生成样本,然后绘制直方图,最后利用核密度估计方法获得概率密度函数,并绘制曲线图。通过对概率密度函数的可视化,更深入地理解了概率分布的性质,也提高了数据分析的效率。
总结
本文介绍了如何利用matplotlib绘制样本概率密度函数,步骤包括生成样本、绘制直方图、核密度估计获得概率密度函数和绘制曲线图。不同的分布可以通过不同的生成样本方法和核密度估计方法实现概率密度函数的计算和绘制。