1 分位数(Quantile)

分位数(Quantile),亦称分位点,是连续分布函数中的一个点,该点将一个随机变量的概率分布范围分为几个等份的数值点,这个点对应概率p。若概率0<p<1,随机变量X或它的概率分布的分位数Za,是指满足条件p(X≤Za)=α的实数,常用的有中位数(即二分位数)、四分位数、百分位数等。
分位数对于实际问题能提供更加全面的分析,无论是线性模型还是非线性模型,分位数回归都是一种很好的工具,它对一般回归模型做了有益的补充。分位数回归是对以古典条件均值模型为基础的最小二乘法的延伸,它用几个分位函数来估计整体模型。分位数回归法的特殊情况就是中位数回归(最小一乘回归),用对称权重解决残差最小化问题,而其他条件分位数回归则需要用非对称权重解决残差最小化。
分位数回归采用加权残差绝对值之和的方法估计参数,其优点体现在以下几方面:首先,它对模型中的随机扰动项不需做任何分布的假定,这样整个回归模型就具有很强的稳健性;其次,分位数回归本身没有使用一个连接函数来描述因变量的均值和方差的相互关系,因此分位数回归有着比较好的弹性性质;第三,分位数回归由于是对所有分位数进行回归,因此对于数据中出现的异常点具有耐抗性;第四,不同于普通的最小二乘回归,分位数回归对于因变量具有单调变换性;最后,分位数回归估计出来的参数具有在大样本理论下的渐进优良性。

1.1.二分位数

对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数作为中位数,即二分位数。
一个数集中最多有一半的数值小于中位数,也最多有一半的数值大于中位数。如果大于和小于中位数的数值个数均少于一半,那么数集中必有若干值等同于中位数。
计算有限个数的数据的二分位数的方法是:把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。

1.2.四分位数

四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。
1)第一四分位数(Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;
2)第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字;
3)第三四分位数(Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)。

1.3.百分位数

百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。运用在教育统计学中,例如表现测验成绩时,称PR值。

1.4 分位数计算

为了更一般化,在计算的过程中,我们考虑p分位。当p=0.25 0.5 0.75 时,就是在计算四分位数。首先确定p分位数的位置(有两种方法):
方法1
pos=(n+1)ppos = (n+1)p pos=(n+1)p
方法2
pos=1+(n−1)ppos = 1+(n-1)p pos=1+(n−1)p

2. pandas中的quantile函数

2.1 pandas中的quantile函数定义

quantile(quantile, interpolation='linear', **kwargs)
Calculate the rolling quantile.
Parameters
quantilefloat  Quantile to compute. 0 <= quantile <= 1.
interpolation{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’} This optional parameter specifies the interpolation method to use, when the desired quantile lies between two data points i and j:
linear: i + (j - i) * fraction, where fraction is the fractional part of the index surrounded by i and j.
lower: i.
higher: j.
nearest: i or j whichever is nearest.
midpoint: (i + j) / 2.
**kwargs
For compatibility with other rolling methods. Has no effect on the result.
Returns
Series or DataFrame
Returned object type is determined by the caller of the rolling calculation.

pandas 中使用的方法2确定p分位数的位置。
给定测试数据:

   a    b
0  1    1
1  2   10
2  3  100
3  4  100

计算

df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=['a', 'b'])
print(df.quantile(.1))

结果是

a    1.3
b    3.7
Name: 0.1, dtype: float64

默认使用的是linear 插值

计算a列
pos = 1 + (4 - 1)*0.1 = 1.3
fraction = 0.3
a列中,1.3位置在1~2之间,所以i取第1个数为1,j取第2个数为2,计算分位数:
ret = 1 + (2 - 1) * 0.3 = 1.3

计算b列
pos = 1.3,b列的第1,2个数是1和10,计算分位数为:
ret = 1 + (10 - 1) * 0.3 = 3.7

在b中,假如pos等于2.5呢,即在2-3之间,那i对应就是10,j对应就是100,ret = 10 + (100-10) * 0.3 = 55

分为点p位于两个数数据点 i and j 之间时”,比如 y= [1,10,100,100],x= [0,1,2,3],对应于[0,0.333,0.667,1],当p=0.4时,i、j分别为10、100,因此,pos = 1 + (4-1)0.4=2.2,pos取小数部分即0.2,也即fraction=0.2(fraction由计算得到的pos的小数部分),,,故值为10+(100-10) 0.2=28 。 验证: df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=[‘a’, ‘b’]) print df.quantile([0.1,0.2,0.4,0.5, 0.75])

在这里插入图片描述

pandas中quantile函数浅解相关推荐

  1. pandas中describe函数详解

    describe()函数可以查看DataFrame中数据的基本情况 参数: include:包含哪类数据.默认只包含连续值,不包含离散值:include = 'all' 设置全部类型 percenti ...

  2. Pandas中resample方法详解

    Pandas中resample方法详解 Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法.重新取样时间序列数据. 方便的 ...

  3. python read_excel 参数_对Python 2.7 pandas 中的read_excel详解

    对Python 2.7 pandas 中的read_excel详解 发布时间:2020-08-28 03:32:56 来源:脚本之家 阅读:106 作者:G_66_hero 导入pandas模块: i ...

  4. pandas的quantile函数

    pandas的quantile函数 quantile : 分位数的意思 一般为 0.25 0.5 0.75分位数 中数值的计算方法 设分位数为p : 分位数的值 = 1 + (n - 1) * p, ...

  5. Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面、索引行复合索引中的一个切面

    Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面.索引行复合索引中的一个切面 目录

  6. pandas中align函数的使用示例

    pandas中align函数的使用示例 pandas align函数生成的结果为一个元组 align(),DataFrame与Series或DataFrame之间连接运算,常用的有内联,外联,左联,右 ...

  7. Matlab中 pdist 函数详解

    学习笔记,仅供参考,有错必纠 转载自:Matlab中 pdist 函数详解(各种距离的生成); pdist Pairwise distance between pairs of objects. Sy ...

  8. c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, si ...

  9. Pandas中describe()函数的使用介绍

    Pandas中describe()函数的使用介绍 一.describe()函数介绍 pandas 是基于numpy构建的含有更高级数据结构和工具的数据分析包,提供了高效地操作大型数据集所需的工具.pa ...

最新文章

  1. SAP MM已经转成PO的采购申请Item依旧可以被删除?
  2. 国庆七天学Linux技能,休闲假期不负时光
  3. oracle 五种索引创建
  4. weblogic在处理jsp tag的scope属性时的BUG???
  5. Windows server 2012 部署活动目录 AD
  6. 改变定时器获取传感器频度_一文读懂传感器原理、作用及技术特点
  7. linux dump备份svn,svnadmin dump+load库中的某个目录用svndumpfilter 可实现
  8. 计算机核心期刊加拿大,ssci或cssci期刊北京大学图书馆版核心期刊国外学术.doc...
  9. python整人代码大全_整人代码大全
  10. 软路由安装矿工无盘服务器,NAS,PT,软路由app服务端安装
  11. 代码覆盖率工具lcov
  12. 去银行当程序员是一种什么体验
  13. python编写抢红包程序软件_如何科学的抢红包:写个程序抢红包
  14. 关于Google您的连接不是私密连接问题的解决方法 (Chrome 地址栏 Google 搜索错误处理 隐私设置错误)
  15. spring boot自动化配置
  16. 双(三氟甲基磺酰基)酰亚胺钠 cas91742-21-1白色-类白色晶体-粉末 分子量:303.1358892
  17. 21个微信快速加好友方法
  18. uname命令的用法
  19. 搜狗输入法2017老版本 v8.8.0.1814电脑版
  20. 如何清除木马--104种木马手工清除方法

热门文章

  1. 图片粘贴上传(方法二)
  2. 自学python可以找到工作吗_通过自学python能找到工作吗
  3. Revit二次开发5、外部事件(ExternalEvent)
  4. B站视频开源代码flv.js的使用部署心得(代码案例应用)
  5. STM32开发——点亮LED
  6. 【视频学习】更自信,气质女生的衣品必修课
  7. 从华为跳槽到银行科技岗,好难!
  8. python学习笔记-马哥2017
  9. Flask框架环境搭建
  10. php打开页面的快捷键,窗口切换快捷键是什么