PDF 曲线(Probability Density Function):概率密度函数,描述了随机变量在某个取值附近出现的概率密度。
在正态分布的情况下,PDF 曲线呈钟形,均值处高点,标准差越小,曲线越陡峭。
CDF 曲线(Cumulative Distribution Function):累积分布函数,是概率分布函数的积分,描述了变量取值小于等于某一特定值时的概率。
在正态分布的情况下,CDF 曲线是一条 S 形曲线,均值处概率密度函数的值为 0.5。
PPF 曲线(Percent Point Function):分位点函数,是累积分布函数的逆函数。
具体地,对于一个概率值 p,PPF 函数的值为对应的分位点 x,即在正态分布中,有 p 的概率的随机变量取值小于 x。
直方图:直方图表示了随机变量的分布情况,将随机变量的取值范围分成多个区间(称为“箱子”或“bin”),并计算出每个区间中随机变量取值的频率或概率密度。
QQ 图(Quantile-Quantile Plot):QQ 图是一种用于比较两个数据集是否来自同一分布的图形方法。
在这个例子中,我们用 QQ 图比较了正态分布的样本和真实的正态分布。如果样本确实来自于正态分布,则 QQ 图呈直线状。
直方图和 KDE 曲线:这个图展示了直方图和 KDE(Kernel Density Estimation)曲线。
KDE 曲线是通过对直方图进行平滑,得到一条概率密度函数的曲线。这种方法可以更直观地显示数据的分布情况。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
# 设定一个 2 行 3 列的画布
fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(16, 8))
# 绘制 pdf 曲线
x = np.linspace(-4, 4, 1000)
pdf = stats.norm.pdf(x, loc=0, scale=1) # 生成正态概率密度函数
axs[0, 0].plot(x, pdf, 'b-', label='pdf') # 绘制 pdf 曲线
axs[0, 0].set_title('PDF') # 设置子图标题
# 绘制 cdf 曲线
x = np.linspace(-4, 4, 1000)
cdf = stats.norm.cdf(x, loc=0, scale=1) # 生成正态分布的累积分布函数
axs[0, 1].plot(x, cdf, 'r-', label='cdf') # 绘制 cdf 曲线
axs[0, 1].set_title('CDF') # 设置子图标题
# 绘制 ppf 曲线
p = np.linspace(0.01, 0.99, 100)
ppf = stats.norm.ppf(p, loc=0, scale=1) # 生成正态分布的分位点函数
axs[0, 2].plot(p, ppf, 'g-', label='ppf') # 绘制 ppf 曲线
axs[0, 2].set_title('PPF') # 设置子图标题
# 分布直方图
rvs = stats.norm.rvs(loc=0, scale=1, size=10000) # 生成正态分布的随机样本
axs[1, 0].hist(rvs, bins=100, density=True, alpha=0.5) # 绘制直方图
axs[1, 0].set_title('Histogram') # 设置子图标题
# qq 图
rvs_qq = stats.norm.rvs(loc=0, scale=1, size=1000) # 生成正态分布的随机样本
stats.probplot(rvs_qq, plot=axs[1, 1]) # 绘制 QQ 图
axs[1, 1].set_title('QQ plot') # 设置子图标题
# 直方图和 kde 曲线
sns.histplot(rvs, kde=True, ax=axs[1, 2]) # 绘制直方图和 kde 曲线
axs[1, 2].set_title('Histogram and KDE') # 设置子图标题
# 调整子图之间的间距
fig.tight_layout()
# 显示图像
plt.show()
效果展示:
标签:axs,图示,stats,函数,曲线,子图,几种,直方图,正态分布 From: https://blog.51cto.com/u_15754660/6161098