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
# 常⽤分布可参考本⽂档结尾处
# 分布可以使⽤的⽅法见下列清单
al(size=1000)
# Statistical functions
stats.describe([1,2,3]) # 返回多个统计量
stats.hmean([2,2,2]) # 调和平均数 n / (1/x1 + 1/x2 + ... + 1/xn)
stats.sem(data) # Calculates the standard error of the mean
stats.skew(data) # 偏度
stats.kurtosis(data) # 峰度
<(data,moment=3) # n阶中⼼矩,3阶就是偏度,4阶就是峰度
stats.skewtest(data) # 检验偏度是否符合正态分布的偏度
stats.kurtosistest(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.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
import numpy as np; ingency.margins(np.array([[10,10,20],[20,20,20]]))# 返回列联表的⾏列和
# Plot-tests
# 图检验:probplot与Q-Q图的差异:P-P图是⽤分布的累计⽐,⽽Q-Q图⽤的是分布的分位数来做检验
双卡通import matplotlib.pyplot as plt
al(loc=0,scale=1,size=500)
stats.probplot(data,,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,,plot=plt) # 不知⼲啥⽤,Calculate and optionally plot probability plot correlation coefficient.
stats.ppcc_max(data,) # 不知⼲啥⽤,返回 PPCC 取最⼤时对应的位置
# Univariate and multivariate kernel density estimation
# 核密度估计⽤于估计未知的密度函数,属於⾮参数检验⽅法之⼀
stats.gaussian_kde([data,al(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 连续型分布
led闪光灯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机器学习:预测分析核⼼算法
机器学习漫游指南最完整的⼊门书单(外⽂版)