python q-q图 和PP图

2023-11-05

 转载于https://www.cnblogs.com/king-lps/p/7840268.html以供学习,侵权即删

一. 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 画P-P图

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.
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python q-q图 和PP图 的相关文章

  • 如何删除django中级联的一对一相关模型?

    背景 我在 Django 1 8 5 中定义了以下模型 class PublishInfo models Model pass class Book models Model info models OneToOneField Publis
  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • Python 2.7 将比特币私钥转换为 WIF 私钥

    作为一名编码新手 我刚刚完成了教程 教程是这样的 https www youtube com watch v tX XokHf nI https www youtube com watch v tX XokHf nI 我想用 1 个易于阅读
  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 paramiko 查看(日志)文件传输进度?

    我正在使用 Paramiko 的 SFTPClient 在主机之间传输文件 我希望我的脚本打印文件传输进度 类似于使用 scp 看到的输出 scp my file user host user host password my file 1
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • springboot+vue商城项目实战-springboot后端搭建

    搭建Spring Boot Vue商城后端项目 要搭建Spring Boot Vue商城后端项目 你需要掌握一系列的技术背景 下面我将为你介绍 开发这种项目所需的主要技术要求 Spring Boot框架 Spring Boot是一个开发Ja
  • redis常见操作命令-list

    1 将1个或者多个的value压入key的表头 LPUSH key value value 127 0 0 1 6379 gt LPUSH list abc integer 1 127 0 0 1 6379 gt LGET list err
  • Nginx设置成网站为https

    首先 获取SSL证书 我的证书是阿里云获取的 免费版dv证书 一年有效期 购买后 自动跳转到证书控制台 点击申请 然后选择如下设置 打码内容填入自己的个人信息 等待审核通过 我大概等了半小时 然后下载证书 解压 获得以下两个文件 在服务器的
  • 多益网络人工智能面试和入职问题

    以下几点是我在技术面试中技术hr问到的一些问题 1 简单自我介绍 2 网测的智商检测问题怎么看 3 分别介绍两个项目 4 基于第一个项目 有没有做过法律相关的知识图谱构建来优化模型结果 5 基于第二个项目 在做方案研究的时候就只是模型的融合
  • hello paddle

    文章目录 一 用飞桨定义模型的计算 二 准备好运行飞桨 三 告诉飞桨怎么样学习 四 运行优化算法 五 机器学习出来的参数 import paddle 导入飞桨paddle和numpy import numpy print paddle pa
  • ssh普通用户(非root用户)的密钥登录

    原文地址 ssh原理 ssh普通用户 非root用户 的密钥登录 这里以用户名 zhangsan 为例 由于个人习惯问题 我把用户zhangsan的默认目录改了 在使用密钥登录的过程中 始终提示要输入用户密码 而 var log secur
  • 群晖硬盘已损毁 Linux 修复,群晖NAS提示空间损毁修复纪实

    注 以下操作有丢失数据的风险 请慎重考虑按本文提示操作 前几天 家里的服务器RAID卡告警 提示阵列掉盘 后花了一天时间进行重新挂盘并重建数据 不是重建阵列哈 开机 OK ESXI一切正常 运行各种系统没有问题 当打开NAS时 提示报错 重
  • stm32单片机基础(一)

    stm32单片机 串口复用 IO口功能如何查看 GPIO配置选择 GPIO 如何确定外设的时钟是APB1还是APB2 概念 时钟周期 机器周期 双工 半双工 单工含义区别 串口复用 一定要记得使能复用时钟 AFIO 端口IO功能复用时钟 某
  • 线程共享和私有的数据

    引用 windows程序员面试指南 堆上的数据是线程共享的 栈上的数据是线程私有的 1 堆上共享的数据 a 进程 代码段 b 进程 数据段 c 进程打开的文件描述符 d 信号的处理器 e 进程的当前目录和 f 进程用户 ID 与进程组 ID
  • 全网最牛,接口自动化-Linux系统安装Jenkins+Ant详细步骤

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • vld(Visual Leak Detector)下载地址和源码地址

    安装包下载页面 https kinddragon github io vld eg https github com KindDragon vld releases download v2 5 1 vld 2 5 1 setup exe 源
  • kafka存储原理介绍

    几个基本概念 Topic 消息主题 每一条消息都必须要指定主题 kafka集群可以同时进行多个topic的分发 Broker 消息处理的节点 可以立即为每个broker是一个单独的kafka进程 一般部署在不同的机器上 多个broker共同
  • js 计算月份差 ,天数差

  • Linux 安装 RocketMQ(Server)

    安装 linux版 官网下载地址 解压上传至 usr local 进入上传文件目录 cd usr local rocketmq all 4 7 0 source release bin 修改runbroker sh 修改runserver
  • chatgpt赋能python:如何通过Python赚钱

    如何通过Python赚钱 介绍 Python是一种高级编程语言 广泛用于Web开发 数据分析 机器学习等领域 Python具有简单易学 功能强大 易于维护等特点 因此非常受欢迎 而且 Python开源免费 可以在各个平台上运行 不需要花费太
  • Java设计模式-里氏替换原则

    里氏替换原则 Liskov Substitution Principle 定义1 如果对每一个类型为 T1的对象 o1 都有类型为 T2 的对象o2 使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时 程序 P 的行为没
  • 虚拟机ubantu连接物理机外部代理

    1 关闭windows防火墙 2 手动设置虚拟机代理 首先代理的允许局域网连接要打开 并且端口信息是根据v2rayN左下角的端口信息填写的 注意本地监听端口和局域网监听端口不一样
  • 【MATLAB第73期】# 源码分享

    MATLAB第73期 源码分享 基于MATLAB的不同类型数据排列方式合集 学习参考链接 1 对数组的行进行排序 单元格 字符串 类别 表 2 按字符代码对文本进行排序 3 对文件名 文件夹名或文件路径进行排序 4 对字符串 单元格 分类数
  • 原理图和PCB设计--EMC审查项(具体实施需结合公司实际项目做合理变更)

    原理图EMC设计检查要点 PCB EMC设计检查要点
  • python q-q图 和PP图

    转载于https www cnblogs com king lps p 7840268 html以供学习 侵权即删 一 QQ图 分位数图示法 Quantile Quantile Plot 简称 Q Q 图 统计学里Q Q图 Q代表分位数 是