正态性检验之QQ图与PP图

article/2025/9/24 14:55:28

正态性检验方法有很多种,主要可以分为以下几类:

图示法统计方法
正态概率图、频率直方图、PP图、QQ图偏度峰度检验、皮尔逊卡方检验、K-S检验、W检验、EP检验、秩和检验、游程检验等非参检验

按理说图示法应该是最简单的方法,但大多本科统计学教材并不会涉及PP图和QQ图,上网搜会发现各有各的画法云里雾里,为了防止之后再看一次又乱了所以自己再整理了一下

QQ图

QQ图全称是Quantile-Quantile Plot,要理解QQ图的绘制首先要把握好分位数(Quantile)的概念:

分位数(分位点)

给定总体X,其概率分布函数为F(x),若x满足
F ( x ) = p F(x)=p F(x)=p
则称x为第0.25分位数

四分位数=第0.25分位数=第25百分位数,我们平常接触的定义是四分位数和百分位数,在后续换成中间那种理解就可以了,例如对该总体,第0.25分位数为-3,也就是F(-3)=0.25

上面针对的是连续分布函数F存在的情况,在很多实际问题中这个总体分布是未知的,我们只能用样本推断,用得到样本经验分布来近似总体分布

假设总体X未知,但我们有一个容量为n的样本 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn),可以得到次序统计量 ( x ( 1 ) , . . . , x ( n ) ) (x_{(1)},...,x_{(n)}) (x(1),...,x(n)),并导出样本经验分布 F n ( x ) F_n(x) Fn(x)
F n ( x ) = { 0 x < x ( 1 ) k n x ( k ) ≤ x < x ( k + 1 ) , k = 1 , . . . , n − 1 1 x ≥ x ( n ) F_n(x)=\left\{ \begin{aligned} & 0 & x<x_{(1)} \\ & \frac{k}{n} & x_{(k)}\leq{x} <x_{(k+1)},k=1,...,n-1 \\ & 1 & x\geq x_{(n)} \end{aligned} \right. Fn(x)=0nk1x<x(1)x(k)x<x(k+1),k=1,...,n1xx(n)
这个经验分布的形式直接,易于理解,但有缺陷,比如当x取到 x ( n ) x_{(n)} x(n)时,分布函数值就为1了,那是不是有种比 x ( n ) x_{(n)} x(n)大的样本值不可能存在的意思?所以通常情况下会对上述经验分布做一些修正,将 k n \frac{k}{n} nk做一些小改动,主要有以下几种改法:
k − 0.5 n ; k n + 1 ; k − 0.375 n + 0.25 \frac{k-0.5}{n}; \frac{k}{n+1}; \frac{k-0.375}{n+0.25} nk0.5;n+1k;n+0.25k0.375
在QQ图绘制时用的是第一种修正形式,在正态概率图绘制时则会用到第三种

此时我们考虑 F n ( x ) = p F_n(x)=p Fn(x)=p,由于经验分布的非连续性,如果给定的p不在 { k − 0.5 n , k = 1 , . . . , n } \{\frac{k-0.5}{n},k=1,...,n\} {nk0.5,k=1,...,n}中,是不能直接对应到x的

所以为了理解上的方便,在对样本设定分位数时,样本量多少就取多少个分位点,如样本量为n就有n个分位数,这样对于每个次序统计量 x ( i ) x_{(i)} x(i),都可以确定它是第几分位数,同样地给定p求第p分位数能得到一个样本值 x ( i ) x_{(i)} x(i),只要由下式通过 i i i建立起 p p p x x x的一一对应就好: p i = F n ( x ( i ) ) = i − 0.5 n , i = 1 , . . . , n p_i=F_n(x_{(i)})=\frac{i-0.5}{n},i=1,...,n pi=Fn(x(i))=ni0.5,i=1,...,n


回到正态性检验QQ图上,它是散点图,横坐标为期望总体分布(正态性检验就是标准正态分布)的分位数,纵坐标为样本经验分布的分位数,如此一来一共有n个点,每个描的点坐标形式就是:
( ϕ − 1 ( p i ) , x ( i ) ) (\phi^{-1}(p_i),x_{(i)}) (ϕ1(pi),x(i))
如果还觉得晕看个例子就好了:
样本为(2,6,4,7),考虑 i = 1 i=1 i=1,就有 p = 1 − 0.5 4 = 0.125 p=\frac{1-0.5}{4}=0.125 p=410.5=0.125,通过p可以确定标准正态分布的分位数(由 p = ϕ ( x ) p=\phi(x) p=ϕ(x)得到分位数 x x x,可以直接查表)和样本经验分布的分位数(由 p = F n ( x ) p=F_n(x) p=Fn(x)得到 x x x
当然,搞明白上面的关系可以发现样本经验分布的分位数可以直接由 i i i得到,即 x ( i ) x_{(i)} x(i),在这里 x ( 2 ) = 4 x_{(2)}=4 x(2)=4

另外,如果我们需要的只是检验正态性,不需要对均值和方差进行图示检验,期望分布定为标准正态分布就好了,此时只要考察点是否落在一条直线上,直线的截距为均值,斜率为标准差;如果要检验分布是否为 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2) μ , σ 2 \mu,\sigma^2 μ,σ2已知),期望分布也可以直接定为 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),这是考察的就是点是否落在 y = x y=x y=x

下图来自Matlab官网的qqplot词条,稍微留意一下横纵坐标间距和起点都不同,可以认为它来自的总体满足正态性但绝非标准正态分布(有一说一官网词条的解释比乱搜清楚太多了):
坐标
至于为什么落在一条直线上就说明是正态的呢?这直观上很好理解,如果还想用数学辅助理解的话,可以这么考虑,直线上坐标 ( ϕ − 1 ( p ) , F − 1 ( p ) ) (\phi^{-1}(p),F^{-1}(p)) (ϕ1(p),F1(p)),p是一个定义域在(0,1)区间上的变量,做变量替换:
{ p = ϕ ( x ) p = F ( y ) \left\{ \begin{aligned} & p=\phi(x) \\ &p=F(y) \end{aligned} \right. {p=ϕ(x)p=F(y)
线性约束可以写作 y = a x + b y=ax+b y=ax+b,从而有 F ( a x + b ) = p = ϕ ( x ) F(ax+b)=p=\phi(x) F(ax+b)=p=ϕ(x),这和正态分布转换公式 F ( σ x + μ ) = ϕ ( x ) F(\sigma x+\mu)=\phi(x) F(σx+μ)=ϕ(x)是等价的,得证#
另外还可以顺便得出以下结论:直线的截距为均值,斜率为标准差

注:

QQ图不局限于正态性检验,它还可以检验两个样本来自的未知总体分布是否相同
两个样本的样本量 n 1 , n 2 n_1,n_2 n1,n2可以不同,分位数的个数取为 n m i n = m i n { n 1 , n 2 } n_{min}=min\{n_1,n_2\} nmin=min{n1,n2};当分布相同时,点位于y=x上,当分布之间有线性关系时,点位于直线上

PP图

写不动了PP图就简要介绍一些了><,和QQ图差不多,只是横纵坐标由分位数换成了累积概率,这就意味着横纵坐标的取值范围都落在0~1之间
说一下它是如何绘制的吧,回归这个式子:
F ( x ) = p F(x)=p F(x)=p
(它还在输出.jpg)
其实第p分位数为x,就等价于取值为x时累积概率为p,所以给定样本数据x,只要分别取样本经验分布 F n ( x ) F_n(x) Fn(x)和期望分布 F ( x ) F(x) F(x),就能通过上式得到两个p,将通过期望分布得到的p作为横坐标分量,通过样本经验分布得到的p作为纵坐标分量就可以描出散点图啦!点的个数即样本个数

一般QQ图使用得比较多,因为QQ图不仅能检验正态性,拟合出的直线的截距和斜率还能近似均值和方差

第一次写,有错误欢迎指出!


http://chatgpt.dhexx.cn/article/WdqRN5vv.shtml

相关文章

PP图,QQ 图,及 python 画图

统计学中有时会用到 PP 图 或 QQ 图&#xff0c;用来看样本数据是否服从某一特定分布。 若 PP 或 QQ 图中的点基本落在一条 45度 的线上&#xff0c;则说明服从特定分布。 一般的步骤为&#xff1a; 将样本数据从小到大排序&#xff0c;假设排序后的样本数据为 x 1 x_1 x1​…

pptp服务搭建

1 检查系统是否支持pptp cat /dev/ppp 如果输出 cat: /dev/ppp: No such device or address 则说明可以正常架设pptp服务 2 设置内核转发&#xff0c;开启路由转发 vi /etc/sysctl.conf 添加 net.ipv4.ip_forward1 通过下面命令查看 sysctl -p 3更新yum相关源 wget http…

VPN服务搭建流程记录

之前&#xff0c;一直有想法搭建一套属于自己的VPN服务&#xff0c;但是&#xff0c;一直苦于"拖延症"的困扰&#xff0c;没有真正实际去实践。最近&#xff0c;终于打破了这个困扰&#xff0c;所以&#xff0c;也希望记录一下整体的搭建流程&#xff0c;操作系统Cen…

Guava常用方法

目录 简介 Maven依赖 字符串检查工具 NULL值检查 先决条件检查 判断对象是否为null 操作集合 简介 Guava&#xff0c;中文是石榴的意思&#xff0c;Guava项目&#xff0c;是基于java的Google的开源的工具类库&#xff0c;包含了许多被Google的java项目广泛依赖的核心库&…

【guava】基础用法

依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version></dependency> 不可变集合与对象 优点&#xff1a;1、线程安全 2、可用作常熟 ImmutableXXX 创建方式&…

guacamole 源码_Guacamole学习笔记

1: 介绍: Guacamole可以同HTML5来代理远程桌面协议(如: VNC, RDP, Telnet, SSH) 官网: http://guac-dev.org/ 2: 架构: 架构图: image.png 架构解释: 用户通过浏览器连接到Guacamole的服务端, Guacamole通过JS写的客户端是为用户提供服务, 服务端和客户端的通信是基于HTTP的私有…

Guacamole 介绍以及架构

目前在从事一些虚拟化解决方案方面的工作&#xff0c;最近项目有需求&#xff0c;希望能在浏览器上远程操作虚拟机。 此时发现了Guacamole&#xff0c;一个提供远程桌面的解决方案的开源项目&#xff0c;通过浏览器就能操作虚拟机&#xff0c;适用于Chrome&#xff0c;Firefox&…

使用Google Guava来编写优雅的代码一Guava简介

以往我们在使用工具包的时候首先想到是著名的Apache的Commons系列,今天我要介绍的是同样出色&#xff0c;并且目前发展比Apache Commons系列更为迅速的Google Guava库。 Google Guava库是一个非常优秀的包含很多Java工具类集的库&#xff0c;广泛使用在Google公司内部&#xf…

guacamole学习小结(一)

一、快速安装 https://blog.csdn.net/qq_38781075/article/details/106459458 二、整体理解 先放一张经典的图。 guacamole最重要的作用还是连接远程服务器的&#xff0c;可以连接多台服务器&#xff0c;连接不同的远程协议的服务器。使得用户能远程快捷的访问远程桌面。它跨…

guacamole 认识

简介&#xff1a;guacamole是apache开源的一款连接远程机器(类似window机器的mstsc工具以及linux的 xfreerdp远程工具)的web应用。 官网&#xff1a;http://guacamole.apache.org/ 一、介绍 1、先看看官网提供的架构图 其中guacamole将架构图中 HTML5(JavaScript编写)以及g…

Guacamole搭建教程

目录 安装系统环境安装依赖环境安装依赖包 下载安装包服务端安装解压并安装&#xff1a;在当前目录下继续执行&#xff1a;安装完成之后&#xff0c;可以使用以下来看guacd是否安装成功&#xff1a; 客户端安装安装安装git安装maven 下载客户端并解压创建/etc/guacamole/文件目…

使用EasyDarwin+FFmpeg实现rtsp推流

一、背景 ​ 最近在学习ffmpeg的基本操作,ffmpeg功能非常强大&#xff0c;可以运行音频和视频多种格式的录影、转换、流功能&#xff0c;包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库&#xff0c;以及libavformat——一个音频与视频格式转换库 可以利用ff…

windows 10 安装EasyDarwin流服务器推流、本地存储

1、EasyDarwin介绍 EasyDarwin 是一款开源的、高性能的rstp流媒体服务器&#xff0c;基于go语言开发。主要功能有&#xff1a;支持rtsp推流分发、支持rtsp拉流分发、录像、检索、回访、关键帧缓存、秒开画面、Restful接口、web后台管理、分布式负载均衡等特点。 2、安装部署&a…

从零开始搭建EasyDarwin环境——Windows系统开发环境Golang的搭建

EasyDarwin在语言上服务端使用的是Golang&#xff0c;前端网页是Vue&#xff0c;因此我们需要有Golang和node的开发环境。上一篇我们介绍了Linux环境下的搭建&#xff0c;本章我们将说明一下如何在Windows下搭建起Golang环境。 一、下载 Go包 Go的官方网站&#xff1a;http://…

EasyDarwin源码分析(三)——rtsp-client

rtsp-client.go 这个模块主要实现了客户端的拉流功能。也就是在网页上点击“拉流分发”按钮后&#xff0c;easydarwin会向用户填写的源地址拉流&#xff0c;然后再转发出去&#xff0c;在向源地址拉流的时候&#xff0c;easydarwin相当于是一个rtsp客户端。所以这里使用rtsp-c…

EasyDarwin源码分析(一)——main.go

main.go ​ easydarwin源码的代码量不是很多&#xff0c;主要的代码也就集中在下面的几个文件夹中&#xff0c;核心业务的代码也就主要集中在rtsp包中。 ​ 而且用Go语言写的代码&#xff0c;不像springboot那样&#xff0c;你在读源码前至少要对Springboot框架有一定的学习&a…

关于EasyDarwin二次开发编译后无法以服务启动的问题

问题描述&#xff1a; 在win7上二次开发EasyDarwin后&#xff0c;编译出的EasyDarwin.exe运行正常&#xff0c;或是使用ServiceInstall-EasyDarwin.exe在系统中注册服务&#xff0c;启动服务也正常。 于是打包将其部署在win server 2008上&#xff0c;发现如果直接运行EasyDar…

EasyDarwin接口的使用——使用C++编写客户端实现与EasyDarwin服务器的交互

EasyDarwin提供了接口供客户端使用&#xff0c;以实现客户端与其的交互。比如&#xff0c;根据EasyDarwin的8.1.0版本的接口文档&#xff0c;有获取推流列表的接口如下所示&#xff1a; 我们可以测试一下上述接口。首先启动EasyDarwin服务器&#xff0c;启动后在浏览器&#xf…

EasyDarwin的交叉编译

easyDarwin的交叉编译 前言一、EasyDarwin简介二、配置环境介绍三、交叉编译过程1.go环境的搭建2.编译 后记 前言 最近项目有个需求是在嵌入式设备中运行一个RTSP服务器&#xff0c;满足推流到该服务器后&#xff0c;其他终端设备能够从这个RTSP服务器中拉RTSP流出来。找来找去…

EasyDarwin 流服务器搭建及相关软件教程

一、产品 运行 exe 文件 启动 服务器 双击 运行 EasyDarwin.exe 会出现如下界面&#xff1a; 在 浏览器打开 http://192.168.10.80:10008 2.解压ffmpeg 添加环境变量&#xff1a;复制C:\SoftWare\ffmpeg-6.0-essentials_build\bin路径&#xff0c;添加环境变量中 的用户变…