python科研绘图:P-P图与Q-Q图

目录

什么是P-P图与Q-Q图

分位数

百分位数

Q-Q图步骤与原理

Shapiro-Wilk检验

绘制Q-Q图

绘制P-P图


什么是P-P图与Q-Q图

P-P图和Q-Q图都是用于检验样本的概率分布是否服从某种理论分布。

P-P图的原理是检验实际累积概率分布与理论累积概率分布是否吻合。若吻合,则散点应围绕在一条直线周围,或者实际累积概率与理论累积概率之差分布在对称于以0为水平轴的带内。

Q-Q图的原理是检验实际分位数与理论分位数是否吻合。若吻合,则散点应围绕在一条直线周围,或者实际分位数与理论分位数之差分布在对称于以0为水平轴的带内。

P-P图和Q-Q图都是用于检验样本的概率分布是否服从某种理论分布。当检验样本的分布为正态分布时,Q-Q图中直线斜率为待检测数据的标准差,截距为均值。

特点 P-P图 Q-Q图
用途 评估累积概率分布函数(CDF)的拟合程度。 评估样本分布与理论分布的拟合程度。
横坐标 标准化的观测值(累积概率) 理论分布的分位数
纵坐标 样本观测值的累积概率 理论分布的分位数
判定标准 直观看出CDF的拟合情况,直线越接近对角线越好。 点在45度对角线上越接近,拟合越好。
形状分析 对于偏斜、尖峰等分布形状的评估较为直观。 主要用于检验是否符合正态分布,对称性等。
数据量要求 对数据量要求不敏感,适用于各种分布的评估。 在小样本下效果较好,对数据量要求较高。

分位数

分位数, 指的就是连续分布函数中的一个点,这个点对应概率p。若概率0<p<1,随机变量X或它的概率分布的分位数Za,是指满足条件p(X≤Za)=α的实数。

百分位数

百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。

Q-Q图步骤与原理

1)将数据升序排列,根据各点在该组数据中的位置,算出累积概率,计算累积概率时(若共n个数),第i个数的累积概率不是i/n,而是用(i-0.5)/n。这可能是为了避免最后一个数的累积概率为1时,反算出的积分上限为正无穷。;

2)根据累积概率,反算出若为标准正态分布,高斯函数的积分上限;

3)积分上限为横坐标,数据点为纵坐标,画出数据分布的QQ图;

4)根据数据的均值与标准差,画出若该组数据为正态分布的QQ图。

P-P图与Q-Q图类似,把分位数换成累积概率。

Shapiro-Wilk检验

Shapiro-Wilk检验是一种用于检验样本数据是否来自正态分布的统计方法。该检验是由Samuel Shapiro和Martin Wilk于1965年提出的。它基于一个假设,即如果样本数据来自正态分布,那么样本数据的顺序统计量应该与对应的理论累积分布函数之间存在线性关系。

Shapiro-Wilk检验的零假设是数据来自正态分布。如果检验结果的p值小于所选定的alpha级别,那么否定假设被拒绝,意味着样本数据不是来自正态分布。反之,如果p值大于选定的alpha级别,则不能拒绝零假设,即数据可能来自正态分布。

绘制Q-Q图

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
​
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码
plt.rcParams['axes.unicode_minus'] = False
​
# 生成一个示例数据集,这里使用随机数据
np.random.seed(0)
data = np.random.normal(loc=50, scale=5, size=40)  # 均值=50,标准差=5
# 正态性检验 - Shapiro-Wilk检验,
# Shapiro-Wilk检验基于W统计量,对数据是否符合正态分布进行评估,适用于各种样本大小
stat, p = stats.shapiro(data)
print("Shapiro-Wilk正态性检验统计量:", stat)
print("Shapiro-Wilk正态性检验p值:", p)
plt.figure(figsize=(6, 6))
# 绘制概率图(probability plot)
# stats.probplot函数通过最小二乘法来估计一组数据的分位数对,并利用线性回归技术求出分位数图上的理论值与实际值的直线方程。
stats.probplot(data, plot=plt, dist='norm', fit=True, rvalue=True)
plt.title('Probability Plot (Q-Q Plot)')
plt.legend()
plt.grid(True)
plt.tight_layout()
# 显示图形
plt.show()

**Shapiro-Wilk正态性检验统计量:**0.9782676696777344

**Shapiro-Wilk正态性检验p值:**0.6254295110702515

绘制P-P图

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats
​
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码
plt.rcParams['axes.unicode_minus'] = False
​
# 生成一个示例数据集,这里使用随机数据
np.random.seed(0)
data = np.random.normal(loc=50, scale=5, size=40)  # 均值=50,标准差=5
# 正态性检验 - Shapiro-Wilk检验,
# Shapiro-Wilk检验基于W统计量,对数据是否符合正态分布进行评估,适用于各种样本大小
stat, p = stats.shapiro(data)
print("Shapiro-Wilk正态性检验统计量:", stat)
print("Shapiro-Wilk正态性检验p值:", p)
plt.figure(figsize=(6, 6))
# Create a P-P plot
stats.probplot(data, plot=plt)
​
# Customize the plot if needed
plt.title('P-P Plot')
plt.xlabel('Theoretical Quantiles')
plt.ylabel('Sample Quantiles')
​
# Show the plot
plt.show()
相关推荐
施棠海1 分钟前
多 Agent 团队编排系统的设计与实测:agent-workflow
python·ai·架构
asdzx672 分钟前
Python 实现从 URL 在线下载 PDF 文档教程
python·pdf
Bruce_Liuxiaowei9 分钟前
元组与具名元组:把「第 3 个字段」变成「price」
数据结构·python·语法·元组
___波子 Pro Max.12 分钟前
pip 管库,pipx 管工具:Python 依赖隔离的正确姿势
python
Zootopia62614 分钟前
美国载人飞船Crew-13明晚发射!
人工智能·算法·机器学习·数学建模·无人机·创业创新·信息与通信
探客木木夕17 分钟前
AI伦理体系核心价值观声明
大数据·人工智能·机器学习
明志数科18 分钟前
具身智能训练数据分布设计:为什么分布比数量更关键
人工智能·深度学习·机器学习
代数狂人2 小时前
机器学习数学基础──第 4 章 矩阵:数据的仓库与批量计算的引擎
人工智能·机器学习·矩阵
我的xiaodoujiao2 小时前
Django 基础知识详细图文教程 12-Django 模型定义与使用 2
后端·python·django
龙腾AI白云9 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱