当前位置: 首页 > news >正文

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图

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图

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()

http://www.lryc.cn/news/231492.html

相关文章:

  • 浅尝:iOS的CoreGraphics和Flutter的Canvas
  • 网络安全黑客技术自学
  • 【文件读取/包含】任意文件读取漏洞 afr_3
  • 第四章:单例模式与final
  • 深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解
  • 搜维尔科技:【软件篇】TechViz是一款专为工程设计的专业级3D可视化软件
  • android Handler
  • 【Ubuntu·系统·的Linux环境变量配置方法最全】
  • Django之模板层
  • 社区论坛小程序系统源码+自定义设置+活动奖励 自带流量主 带完整的搭建教程
  • 2023亚太杯数学建模C题思路解析
  • acme在同一台服务器上设置多个Ali_key实现自动ssl申请和续期
  • 乐观锁与悲观锁
  • 【算法】堆排序
  • 51单片机应用从零开始(三)
  • 如何在 Nginx Proxy Manager(NPM)上部署静态网站
  • http的几种方法
  • var、let、const关键字的特性,以及let、const暂时性死区的作用
  • IDEA 高分辨率卡顿优化
  • 【AIGC】一起学习prompt提示词(4/4)【经典】【15种提示词技巧】
  • Linux实战一天一个小指令--《文件管理/文件查找》
  • CocosCreator3.8神秘面纱 CocosCreator 项目结构说明及编辑器的简单使用
  • JJJ:python学习笔记
  • SpringSecurity6从入门到上天系列第七篇:讲明白SpringBoot的自动装配完善上篇文章中的结论
  • ClickHouse 原理解析之基础知识总结
  • 最小花费——最短路
  • Spark DataFrame join后移除重复的列
  • NextJS工程部署到阿里云linux Ecs
  • 汽车以太网IOP测试新利器
  • 高防IP是什么?如何隐藏源站IP?如何进行防护?