PP图和QQ图

 一. QQ图

分位数图示法(Quantile Quantile Plot,简称 Q-Q 图)

统计学里Q-Q图(Q代表分位数)是一个概率图,用图形的方式比较两个概率分布,把他们的两个分位数放在一起比较。首先选好分位数间隔。图上的点(x,y)反映出其中一个第二个分布(y坐标)的分位数和与之对应的第一分布(x坐标)的相同分位数。因此,这条线是一条以分位数间隔为参数的曲线。如果两个分布相似,则该Q-Q图趋近于落在y=x线上。如果两分布线性相关,则点在Q-Q图上趋近于落在一条直线上,但不一定在y=x线上。Q-Q图可以用来可在分布的位置-尺度范畴上可视化的评估参数。

从定义中可以看出Q-Q图主要用于检验数据分布的相似性,如果要利用Q-Q图来对数据进行正态分布的检验,则可以令x轴为正态分布的分位数,y轴为样本分位数,如果这两者构成的点分布在一条直线上,就证明样本数据与正态分布存在线性相关性,即服从正态分布。

二. PP图

P-P图是根据变量的累积概率对应于所指定的理论分布累积概率绘制的散点图,用于直观地检测样本数据是否符合某一概率分布。如果被检验的数据符合所指定的分布,则代表样本数据的点应当基本在代表理论分布的对角线上。

由于P-P图和Q-Q图的用途完全相同,只是检验方法存在差异。要利用QQ图鉴别样本数据是否近似于正态分布,只需看QQ图上的点是否近似地在一条直线附近,而且该直线的斜率为标准差,截距为均值.

用QQ图还可获得样本偏度和峰度的粗略信息.

scipy 画Q-Q图

fig = plt.figure()
res = stats.probplot(train[‘SalePrice‘], plot=plt)
plt.show()

scipy.stats 用法

# -*- coding: utf-8 -*-
from scipy import stats
from numpy import random

# Distributions
# 常用分布可参考本文档结尾处
# 分布可以使用的方法见下列清单
data=random.normal(size=1000)
stats.norm.rvs(loc=0,scale=1,size=10,random_state=None)     # 生成随机数
stats.norm.pdf(-1.96,loc=0,scale=1)                         # 密度分布函数,画密度分布图时使用
stats.norm.cdf(-1.96,loc=0,scale=1)                         # 累计分布函数,-1.96对应2.5%
stats.norm.sf(-1.96,loc=0,scale=1)                          # 残存函数(=1-cdf),-1.96对应97.5%
stats.norm.ppf(0.025,loc=0,scale=1)                         # 累计分布函数反过来
stats.norm.isf(0.975,loc=0,scale=1)                         # 残存函数反过来
stats.norm.interval(0.95,loc=0,scale=1)                     # 置信度为95%的置信区间
stats.norm.moment(n=2,loc=0,scale=1)                        # n阶非中心距,n=2时是方差
stats.norm.median(loc=0,scale=1)                            # Median of the distribution.
stats.norm.mean(loc=0,scale=1)                              # Mean of the distribution.
stats.norm.var(loc=0,scale=1)                               # Variance of the distribution.
stats.norm.std(loc=0,scale=1)                               # Standard deviation of the distribution.
stats.norm.fit(data)                                        # fit 估计潜在分布的参数

# Statistical functions
stats.describe([1,2,3])                                                 # 返回多个统计量
stats.gmean([1,2,4])                                                    # 几何平均数 n-th root of (x1 * x2 * ... * xn)
stats.hmean([2,2,2])                                                    # 调和平均数 n / (1/x1 + 1/x2 + ... + 1/xn)
stats.trim_mean([1,2,3,5],0.25)                                         # 砍头去尾均值,按比例砍
stats.sem(data)                                                         # Calculates the standard error of the mean
stats.mode([1,1,2])                                                     # 众数
stats.skew(data)                                                        # 偏度
stats.kurtosis(data)                                                    # 峰度
stats.moment(data,moment=3)                                             # n阶中心矩,3阶就是偏度,4阶就是峰度
stats.skewtest(data)                                                    # 检验偏度是否符合正态分布的偏度
stats.kurtosistest(data)                                                # 检验峰度是否符合正态分布的峰度
stats.normaltest(data)                                                  # 检验是否符合正态分布
stats.variation([1,2,3])                                                # 变异系数(=std/mean*100%)
stats.find_repeats([1,1,2,2,3])                                         # 重复值查找

stats.itemfreq([1,1,2,2,3])                                             # 频次统计
stats.percentileofscore([1,2,3,4,5],2)                                  # 返回数值的分位数
stats.scoreatpercentile([1,2,3,4,5],80,interpolation_method="lower")    # 返回分位数对应的数值

stats.bayes_mvs(data)                                                   # 返回均值/方差/标准差的贝叶斯置信区间

stats.iqr([1,2,3,4,5],rng=(25,75))                                      # 计算 IQR
stats.zscore(data)                                                      # 计算 zscore
stats.f_oneway(data,data+data,data+data+data)                           # 单因素方差分析,参数是(样本组1,样本组2,样本组3)
stats.pearsonr(data,data+data)                                          # 皮尔森相关系数
stats.spearmanr(data,data+data)                                         # 斯皮尔曼秩相关系数
stats.kendalltau(data,data+data)                                        # 肯德尔相关系数
stats.pointbiserialr([1,1,1,0,0,0],[1,2,3,4,5,6])                       # 点二系列相关,第一个变量需要是二分类变量
stats.linregress(data,data+data)                                        # 线性最小二乘回归

stats.ttest_1samp(data,popmean=0)                                                               # 单样本 t-检验: 检验总体平均数的值
stats.ttest_ind(data,data+data)                                                                 # 双样本 t-检验: 检验不同总体的差异
stats.ttest_rel(data,data+data)                                                                 # 配对样本 t-检验
stats.ttest_ind_from_stats(mean1=0,std1=1,nobs1=100,mean2=10,std2=1,nobs2=150,equal_var=True)   # 根据统计量做 t-检验
stats.wilcoxon(data,data+data)                                                                  # 一种非参数的配对样本检验。t-检验假定高斯误差。可以使用威尔科克森符号秩检验, 放松了这个假设
stats.kstest(data,‘norm‘)                                                                       # Kolmogorov–Smirnov检验: 检验单一样本是否服从某一预先假设的特定分布
stats.ks_2samp(data,data+data)                                                                  # 检测两样本分布是否相同
stats.ranksums(data,data+data)                                                                  # Wilcoxon rank-sum statistic 检测两样本分布是否相同
stats.chisquare(data,data)                                                                      # 卡方检验,第一个参数是样本分布,第二个参数是期望分布

# Circular statistical functions
# 适用于环形数据,如时间(60分钟一圈),角度(360度一圈)
# 例如 0度 与 360度 的均值应该是 0度
stats.circmean([0,360],high=0,low=360)      # 均值
stats.circvar([0,360],high=0,low=360)       # 方差
stats.circstd([0,360],high=0,low=360)       # 标准差

# Contingency table functions
# 列联表
stats.chi2_contingency([[10,10,20],[20,20,20]],lambda_="log-likelihood")        # 卡方检验,n*m的列联表,每个格子样本数要大于5,lambda_默认皮尔森
stats.fisher_exact([[8,2],[1,5]],alternative="two-sided")                       # 费舍尔精确检验,2*2的列联表,alternative:two-sided,less,greater
stats.contingency.expected_freq([[10,10,20],[20,20,20]])                        # 返回列联表的期望频次(各变量独立时的预期频次)
import numpy as np; stats.contingency.margins(np.array([[10,10,20],[20,20,20]]))# 返回列联表的行列和

# Plot-tests
# 图检验:probplot与Q-Q图的差异:P-P图是用分布的累计比,而Q-Q图用的是分布的分位数来做检验
import matplotlib.pyplot as plt
data=random.normal(loc=0,scale=1,size=500)
stats.probplot(data,dist=stats.norm,sparams=(0,1),plot=plt) # P-P图(probability plot),参数sparams传的是均值与标准差
stats.boxcox_normplot(abs(data),-3,3,plot=plt)              # 不知干啥用,Compute parameters for a Box-Cox normality plot
stats.ppcc_plot(data,-3,3,dist=stats.norm,plot=plt)         # 不知干啥用,Calculate and optionally plot probability plot correlation coefficient.
stats.ppcc_max(data,dist=stats.norm)                        # 不知干啥用,返回 PPCC 取最大时对应的位置

# Univariate and multivariate kernel density estimation
# 核密度估计用于估计未知的密度函数,属於非参数检验方法之一
stats.gaussian_kde([data,data+random.normal(size=500)])     # 不知干啥用,Representation of a kernel-density estimate using Gaussian kernels.

""" ---------------------------------------------------------------------------------------------------------
所有分布都是 rv_continuous(连续型分布) 与 rv_discrete(离散型分布) 的实例
rv_continuous([momtype, a, b, xtol, ...])   A generic continuous random variable class meant for subclassing.
rv_discrete([a, b, name, badvalue, ...])    A generic discrete random variable class meant for subclassing.
rv_histogram(histogram, *args, **kwargs)    Generates a distribution given by a histogram.

Continuous distributions 连续型分布
alpha   An alpha continuous random variable.
beta    A beta continuous random variable.
chi2    A chi-squared continuous random variable.
f       An F continuous random variable.
gamma   A gamma continuous random variable.
lognorm A lognormal continuous random variable.
ncx2    A non-central chi-squared continuous random variable.
ncf     A non-central F distribution continuous random variable.
nct     A non-central Student’s T continuous random variable.
norm    A normal continuous random variable.
pareto  A Pareto continuous random variable.
t       A Student’s T continuous random variable.
uniform A uniform continuous random variable.
wald    A Wald continuous random variable.
……

Multivariate distributions 多元分布
multivariate_normal A multivariate normal random variable.
matrix_normal       A matrix normal random variable.
multinomial         A multinomial random variable.
random_correlation  A random correlation matrix.
……

Discrete distributions 离散型分布
binom       A binomial discrete random variable.
hypergeom   A hypergeometric discrete random variable.
nbinom      A negative binomial discrete random variable.
poisson     A Poisson discrete random variable.
randint     A uniform discrete random variable.
 

参考:

Python机器学习:预测分析核心算法

机器学习漫游指南 最完整的入门书单(外文版)

Q-Q图简介

学习-Python-数据分析&数据挖掘-4 SciPy.stats

时间: 2024-08-15 11:33:06

PP图和QQ图的相关文章

统计工具之QQ图

正态 QQ 图和普通 QQ 图 分位数-分位数 (QQ) 图是两种分布的分位数相对彼此进行绘制的图.评估数据集是否正态分布,并分别研究两个数据集是否具有相似的分布. 如何构建正态 QQ 图 首先,数据值经过排序,且累积分布值按照公式 (i– 0.5)/n 进行计算,其中字母表示总数为 n 的值中的第 i 个值(累积分布值给出了某个特定值以下的值所占的数据比例).累积分布图通过以比较方式绘制有序数据和累积分布值得到(如下图中左上角的图表所示).标准正态分布(平均值为 0 标准方差为 1 的高斯分布

Poj 1659 Frogs' Neighborhood 图的可图性判断

/* 先将所有度数按从大到小排序,取最大的度数为N的节点,将其后面N个节点的度数减一,如果出现负数节点或者后面的节点数量不足N则可以判定无法构成图,重复这个过程,直到所有的度数都为零*/#include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> #include <set> #include <map> #include <vecto

Css Sprite(雪碧图、精灵图)&lt;图像拼合技术&gt;

一.精灵图使用场景: 二.Css Sprite(优点) 减少图片的字节. 减少网页的http请求,从而大大的提高页面的性能. 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率. 更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变.维护起来更加方便. 三.实现原理 css background-position 控制一个层可显示的区域范围大小,通过一个窗口进行背景图的滑动实例: 代码如下

画图实例:一个计算机商店的基于Wed的订单处理系统的DFD图和ER图

DFD图: 0层DFD图: 1层DFD图: 2层DFD图: ER图:

UML学习(类图和序列图等)

visio绘制UML图使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?新建->选择绘图类型->选择软件与数据库模板->选择UML模型图->注意:如果不选择UML模型图的话,可能会出现无法编辑形状文本,提示“此UML形状所在的绘图页不是UML模型图的一部分,该形状设计用于利用UML模型图模板创建的绘图”所以利用Visio绘UML图第一步就是选择绘图类型为软件中的UML模型图. 还可以参考百度云盘的UML学习资料 参考:UML中几种类间关系:

HDU5772 String problem 最大权闭合图+巧妙建图

题意:自己看吧(不是很好说) 分析: 网络流:最大权闭合子图. 思路如下: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分) 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费) 第三类:对于10种字符拆出10个点,每个点的权值为  -(b[x]-a[x]) 那么我们可以得到一个关系图 ,对于第一类中的点Pij,如果想要选择Pij,你就必须要选中第二类中的点i和j,对于第二类中的点

QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg(this); dlg.exec(); 如果不加this,则会在任务管理器里面产生一个新的EXE. 3.如果对话框的标题是自定义,不想使用系统的标题,这时候需要在代码中加入: setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint ); setAttr

【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)

这是最近一个iOS项目需要使用的K线的绘制,在网上大量查阅资料无果,只好自行绘制. 实时数据使用来源API: https://www.btc123.com/kline/klineapi 返回数据说明: 1.时间戳 2.开盘价 3.最高价 4.最低价 5.收盘价 6.成交量 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://github.com/yate1996/Y_KLine,如果帮到了你,麻烦

StarUML 系列,静态图与动态图,用例图,类图【ps:熟悉一下starUML】

大部分:   静态图部分,即静态不动的图 1.用例图, Use case diagram 1.展示系统核心功能及与其交互的用户ACTOR 表示:椭圆 sample1.sample2. 2.标准 使用staruml工具,使用DirectedAssociciation, 点击 export diagram,可以存为图片 二.类图, Class diagram 1.单独的类 手写代码添加参数, 使用冒号,后面添加返回类型,左侧更改访问控制private等,导出为jpeg 2.使用DirectedAss