主要内容

prctile

百分位数的数据集

描述

例子

P= prctile (一个,p)返回元素的百分位数输入数据一个的百分比p在区间[0100]。

  • 如果一个是一个矢量,然后呢P是一个标量或矢量长度一样吗pP(我)包含了p(我)百分位。

  • 如果一个是一个矩阵,然后呢P是一个行向量或矩阵的行数的P等于长度(p)。的th排P包含了p(我)百分位数的每一列的一个

  • 如果一个是一个多维数组,那么P包含百分位数计算沿第一个数组大小尺寸大于1。

例子

P= prctile (一个,p“所有的”)返回所有元素的百分位数x

例子

P= prctile (一个,p,昏暗的)沿着维操作昏暗的。例如,如果一个是一个矩阵,然后呢prctile (A, p, 2)在每一行的元素进行操作。

例子

P= prctile (一个,p,vecdim)沿着维向量中指定的操作vecdim。例如,如果一个是一个矩阵,然后呢prctile (p [1 - 2])操作的所有元素一个因为一个矩阵的每个元素都包含在定义的数组切片尺寸1和2。

例子

P= prctile (___“方法”,方法)返回精确或近似基于价值的百分位数方法,使用任何输入参数组合在前面的语法。

例子

全部折叠

计算一个数据集的百分比为给定的百分比。

生成一个数据集的大小7。

rng默认的%的再现性A = randn (7)
一个=1×70.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336

计算元素的第42百分位一个

P = prctile (42)
P = -0.1026

找出数组中所有值的百分位数。

创建一个3-by-5-by-2数组。

rng默认的%的再现性一个= randn (3、5、2)
= (::1)= 0.5377 0.8622 -0.4336 2.7694 0.7254 1.8339 0.3188 0.3426 -1.3499 -0.0631 -2.2588 -1.3077 3.5784 3.0349 0.7147 (:,:2)= -0.2050 1.4090 -1.2075 0.4889 -0.3034 -0.1241 1.4172 0.7172 1.0347 0.2939 1.4897 0.6715 1.6302 0.7269 -0.7873

发现40和60的所有元素的百分位数一个

P = prctile (40 [60],“所有”)
P =2×10.3307 - 0.7213

(1页)40的百分比吗一个,(2页)60百分位的吗一个

计算百分位数的数据矩阵的行和列指定的百分比。

生成一个5-by-5数据矩阵。

= (1:5)* (2:6)
一个=5×52 3 4 5 6 4 6 8 10 12 6 9 12 15 18 8 12 16 20 24 10 15 20 25 30

计算25、50和75百分位数的每一列一个

P = prctile ([25 50 75], 1)
P =3×53.5000 5.2500 7.0000 8.7500 10.5000 6.0000 9.0000 12.0000 15.0000 18.0000 8.5000 12.7500 17.0000 21.2500 25.5000

每一列的矩阵P包含三个百分位数中相应的列矩阵一个7,12,1725、50和75百分位数的第三列的一个与元素4、8、12、16、20。P = prctile (A, [25 50 75])返回相同的结果。

计算25、50和75百分位数的行一个

P = prctile (A, (25 50 75), 2)
P =5×32.7500 4.0000 5.2500 5.5000 8.0000 10.5000 8.2500 12.0000 15.7500 11.0000 16.0000 21.0000 13.7500 20.0000 26.2500

矩阵的每一行P包含三个百分位数中相应的行矩阵一个2.75,4,5.2525、50和75百分位数的第一行吗一个与元素的2、3、4、5、6。

找到一个多维数组的百分位数多个维度。

创建一个3-by-5-by-2数组。

一个=重塑(1:30,[3 5 2])
=(::1)= 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15(:,:2)= 16 19日22日25 28日17日20 23日26日29日18 21 24 27 30

计算每个页面的40和60百分位数一个通过指定尺寸1和2的操作方面。

Ppage = prctile (40 [60], [1 - 2])
Ppage = Ppage (:: 1) = 6.5000 - 9.5000 Ppage (:,: 2) = 21.5000 - 24.5000

Ppage (1, 1, 1)40百分位的第一页一个,Ppage (2, 1, 1)60百分位的第一页一个

计算元素的40和60百分位数(:,我,:)片通过指定尺寸1和3的操作维度。

Pcol = prctile (40 [60], [3] 1)
Pcol =2×52.9000 5.9000 8.9000 11.9000 14.9000 16.1000 19.1000 22.1000 25.1000 28.1000

Pcol (1、4)元素的40百分位在吗(:4:),Pcol (2、4)60百分位的元素在吗(:4:)

计算精确和近似的百分位数高列向量为给定的百分比。

当你执行计算高数组,MATLAB®使用一个平行池(默认如果你有并行计算工具箱™)或当地的MATLAB会话。要运行示例使用当地的MATLAB会话并行计算工具箱后,改变全球执行环境使用mapreduce函数。

mapreduce (0)

创建一个数据存储airlinesmall数据集。治疗”NA”价值观缺失的数据,数据存储取代他们值。指定的工作ArrTime变量。

ds =数据存储(“airlinesmall.csv”,“TreatAsMissing”,“NA”,“SelectedVariableNames”,“ArrTime”);

创建一个高表tt在数据存储、高表的数据提取到一个高的向量一个

tt =高(ds)
tt = mx₁高表ArrTime _________ 735 1124 2218 1431 746 1547 1052 1134::
一个= tt {:,:}
mx₁高双列向量A = 735 1124 2218 1431 746 1547 1052 1134::

计算的确切50百分位一个。因为一个是一个高大的列向量和p是一个标量,prctile默认返回准确的百分比值。

p = 50;Pexact = prctile (A, p)
双Pexact =高?

计算的近似50百分位一个。指定“近似”方法使用一个基于近似算法T-Digest计算百分比。

Papprox = prctile (A, p,“方法”,“近似”)
Papprox = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :

评价高的数组并把结果到内存中使用收集

[Pexact, Papprox] =收集(Pexact Papprox)
评估高表达式使用当地的MATLAB会话:通过1 4:在0.69秒完成,通过2 4:在0.25秒完成,通过3 4:在0.38秒完成,通过4 4:在0.32秒完成评估在2.2秒完成
Pexact = 1522
Papprox = 1.5220 e + 03

确切的值百分比和近似百分比显示的四位数是相同的。

计算精确和近似的百分位数高矩阵指定的百分比在不同的维度。

当你执行计算高数组,MATLAB®使用一个平行池(默认如果你有并行计算工具箱™)或当地的MATLAB会话。要运行示例使用当地的MATLAB会话并行计算工具箱后,改变全球执行环境使用mapreduce函数。

mapreduce (0)

创建一个高矩阵一个包含变量中存储的一个子集varnamesairlinesmall数据集。百分位数高向量对于给定的百分比对细节的步骤提取数据从一个高大的数组。

varnames = [“ArrDelay”,“ArrTime”,“DepTime”,“ActualElapsedTime”];ds =数据存储(“airlinesmall.csv”,“TreatAsMissing”,“NA”,“SelectedVariableNames”,varnames);tt =高(ds);一个= tt {:, varnames}
= Mx4高双矩阵8 735 642 53 8 21 1124 1021 63 2218 2055 83 1431 1332 59 746 629 77 59 1547 1446 61 3 1052 928 84 11 1134 859 155::::::::

当操作在一个维度,不是1,prctile函数计算确切的百分位数只有这样它可以计算有效地使用sorting-based算法(见算法)而不是基于一个近似算法T-Digest

计算准确的25、50和75百分位数一个第二个维度。

p = [25 50 75];Pexact = prctile (A, p, 2)
Pexact = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :

当沿着第一维度和功能操作p是一个向量的百分比,你必须使用近似算法基于t-digest计算百分位数。使用sorting-based算法找到百分位数沿着一个高大数组的第一个维度是计算密集型的。

计算近似25、50和75百分位数一个第一个维度。因为默认的尺寸是1,您不需要指定一个值昏暗的

Papprox = prctile (A, p,“方法”,“近似”)
Papprox = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :

评价高的数组并把结果到内存中使用收集

[Pexact, Papprox] =收集(Pexact Papprox);
评估高表达式使用当地的MATLAB会话:通过1 1:在1.5秒完成评估在1.9秒完成

显示前五行的25日,50,第75百分位数的第二个维度一个

:Pexact (1:5)
ans =5×3103×0.0305 0.3475 0.6885 0.0355 0.5420 1.0725 0.0520 1.0690 2.1365 0.0360 0.6955 1.3815 0.0405 0.3530 0.6875

矩阵的每一行Pexact包含三个百分位数中相应的行一个30.5,347.5,688.525、50和75百分位数,分别的第一行吗一个

显示了近似25、50和75百分位数一个第一个维度。

Papprox
Papprox =3×41030×-0.0070 1.1149 0.9322 0.0700 1.5220 1.3350 0.1020 0.0110 1.9180 1.7400 0.1510

矩阵的每一列Papprox包含三个百分位数中相应的列一个。第一列的Papprox包含第一列的百分位数一个

输入参数

全部折叠

输入数组,指定为一个向量,矩阵,或多维数组。

数据类型:|

百分比来计算百分位数,指定为一个标量或矢量的标量从0到100。

例子:25

例子:(25、50、75)

数据类型:|

维操作,指定为一个正整数标量。如果你不指定维度,那么默认的是第一个数组大小尺寸大于1。

考虑一个输入矩阵一个和一个向量的百分比p:

  • P = prctile (P - 1)计算列的百分位数一个的百分比p

  • P = prctile (A, P, 2)计算百分位数的行一个的百分比p

昏暗的显示的尺寸P一样的长度p

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

向量的维度来操作,指定为一个向量的正整数。每个元素代表一个维度的输入数据。

输出的大小P在指定的最小操作维度的长度等于p。的大小P中指定的其他操作维度vecdim是1。的大小P在所有维度中指定vecdim仍然是一样的输入数据。

考虑一个2-by-3-by-3输入数组一个和百分比pprctile (p [1 - 2])返回一个长度(p)-by-1-by-3数组操作维度和因为1和2分钟([1 - 2])= 1。每个页面返回的数组包含相应的页面上的元素的百分位数一个

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

方法计算百分位数,指定这些值之一:

  • “准确”——计算确切的百分位数的算法使用排序。

  • “近似”——计算近似算法,使用百分位数T-Digest

更多关于

全部折叠

线性插值

线性插值使用线性多项式y= f (x),底层函数的值Y= f (X)分向量或数组x。考虑到数据点(x1,y1)和(x2,y2),y1= f (x1),y2= f (x2),线性插值y= f (x)对于一个给定的x之间的x1x2作为

y = f ( x ) = y 1 + ( x x 1 ) ( x 2 x 1 ) ( y 2 y 1 )

类似地,如果100 (1.5 /n)th百分位y1.5 /n100 (2.5 /n)th百分位y2.5 /n线性插值,然后发现100 (2.3 /n)th百分位,y2.3 /n作为

y 2.3 n = y 1.5 n + ( 2.3 n 1.5 n ) ( 2.5 n 1.5 n ) ( y 2.5 n y 1.5 n )

T-Digest

T-digest[2]是一个概率的数据结构的稀疏表示经验累积分布函数(CDF)的数据集。T-digest是用于计算近似rank-based统计局(百分位数和分位数等)从网上或分布式数据的方式允许可控精度,特别是尾巴附近的数据分布。

数据分布在不同的分区,t-digest计算分位数估计和百分比估计分别为每个数据分区,然后结合估计,同时保持constant-memory绑定和常数相对精度的计算( ( 1 ) 分位数)。由于这些原因,t-digest身高实际来处理数组。

估计分位点在不同的分区分布的数组,第一个建立t-digest每个分区的数据。t-digest集群中的数据分区和总结每个集群通过质心值和累积重量代表样本的数量导致了集群。T-digest使用大型集群(宽距质心)来表示区域附近的运作= 0.5并使用小集群(紧密间隔的质心)代表的地区提供附近= 0= 1

T-digest控制集群大小通过使用一个地图的缩放函数分位数一个索引k用一个压缩参数δ。也就是说,

k ( , δ ) = δ ( 1 ( 2 1 ) π + 1 2 ) ,

的映射k和最小值是单调吗k(0,δ)= 0和最大价值k(1,δ)=δ。这图显示了扩展功能δ= 10

尺度函数绘制与q轴和k的轴

分位数的尺度函数转换的比例因子k为了适应步骤。因此,围绕中心集群大小不平等(大分位数和较小的附近= 0= 1)。附近的小集群允许更好的准确性的边缘数据。

更新t-digest新观察到的重量和位置,找到最近的集群的新观察。然后,添加重量和更新集群的重心在加权平均基础上,前提是更新后的集群的重量不超过大小限制。

你可以结合独立t-digests每个分区的数据通过工会t-digests和合并他们的重心。结合t-digests,第一个集群中所有独立t-digests集群权重递减的顺序。合并相邻的集群,当他们满足大小限制,形成一个新的t-digest。

一旦你形成一个t-digest代表完整的数据集,您可以估计端点(或范围)的每个集群t-digest然后使用插值每个集群的端点之间找到准确的分位数的估计。

算法

对于一个n元向量一个,prctile返回百分位数用sorting-based算法:

  1. 排序的元素一个作为100 (0.5 /n),100 (1.5 /n),…100 ([n- 0.5)/n)百分位数。例如:

    • 等五个元素的数据向量{6 3 2 10 1},排序元素{1、2、3、6、10}分别对应于10日,30日,五十,70,第90百分位数。

    • 等六个元素的数据向量{6 3 2,10 8 1},排序元素{1、2、3、6、8、10}分别对应于(50/6),(150/6),(250/6),(350/6),(450/6),和(550/6)百分位数。

  2. prctile使用线性插值之间的百分比来计算百分位数100 (0.5 /n)和100年((n- 0.5)/n)。

  3. prctile分配元素的最大或最小值一个相对应的百分位数百分比的范围之外。

prctile对待作为缺失值和删除它们。

引用

[1]朗格弗德,大肠“小学四分位数统计”,统计教育杂志。14卷,3号,2006年。

[2]邓宁,T。,o . Ertl。”使用T-Digests计算非常准确的分位数。2017年8月”。

扩展功能

版本历史

之前介绍过的R2006a

全部展开

另请参阅

||