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
,17
25、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.25
25、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)
创建一个高矩阵一个
包含变量中存储的一个子集varnames
从airlinesmall
数据集。百分位数高向量对于给定的百分比对细节的步骤提取数据从一个高大的数组。
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.5
25、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
包含第一列的百分位数一个
。
输入参数
一个
- - - - - -输入数组
向量|矩阵|多维数组
输入数组,指定为一个向量,矩阵,或多维数组。
数据类型:单
|双
p
- - - - - -计算百分位数的百分比
标量|向量
百分比来计算百分位数,指定为一个标量或矢量的标量从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
vecdim
- - - - - -向量的维度来操作
向量的正整数
向量的维度来操作,指定为一个向量的正整数。每个元素代表一个维度的输入数据。
输出的大小P
在指定的最小操作维度的长度等于p
。的大小P
中指定的其他操作维度vecdim
是1。的大小P
在所有维度中指定vecdim
仍然是一样的输入数据。
考虑一个2-by-3-by-3输入数组一个
和百分比p
。prctile (p [1 - 2])
返回一个长度(p)
-by-1-by-3数组操作维度和因为1和2分钟([1 - 2])= 1
。每个页面返回的数组包含相应的页面上的元素的百分位数一个
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
更多关于
线性插值
线性插值使用线性多项式y我= f (x我),底层函数的值Y= f (X)分向量或数组x。考虑到数据点(x1,y1)和(x2,y2),y1= f (x1),y2= f (x2),线性插值y= f (x)对于一个给定的x之间的x1和x2作为
类似地,如果100 (1.5 /n)th百分位y1.5 /n100 (2.5 /n)th百分位y2.5 /n线性插值,然后发现100 (2.3 /n)th百分位,y2.3 /n作为
T-Digest
T-digest[2]是一个概率的数据结构的稀疏表示经验累积分布函数(CDF)的数据集。T-digest是用于计算近似rank-based统计局(百分位数和分位数等)从网上或分布式数据的方式允许可控精度,特别是尾巴附近的数据分布。
数据分布在不同的分区,t-digest计算分位数估计和百分比估计分别为每个数据分区,然后结合估计,同时保持constant-memory绑定和常数相对精度的计算( 为问分位数)。由于这些原因,t-digest身高实际来处理数组。
估计分位点在不同的分区分布的数组,第一个建立t-digest每个分区的数据。t-digest集群中的数据分区和总结每个集群通过质心值和累积重量代表样本的数量导致了集群。T-digest使用大型集群(宽距质心)来表示区域附近的运作问= 0.5
并使用小集群(紧密间隔的质心)代表的地区提供附近问= 0
和问= 1
。
T-digest控制集群大小通过使用一个地图的缩放函数分位数问一个索引k用一个压缩参数δ。也就是说,
的映射k和最小值是单调吗k(0,δ)= 0和最大价值k(1,δ)=δ。这图显示了扩展功能δ= 10。
分位数的尺度函数转换问的比例因子k为了适应步骤问。因此,围绕中心集群大小不平等(大分位数和较小的附近问= 0
和问= 1
)。附近的小集群允许更好的准确性的边缘数据。
更新t-digest新观察到的重量和位置,找到最近的集群的新观察。然后,添加重量和更新集群的重心在加权平均基础上,前提是更新后的集群的重量不超过大小限制。
你可以结合独立t-digests每个分区的数据通过工会t-digests和合并他们的重心。结合t-digests,第一个集群中所有独立t-digests集群权重递减的顺序。合并相邻的集群,当他们满足大小限制,形成一个新的t-digest。
一旦你形成一个t-digest代表完整的数据集,您可以估计端点(或范围)的每个集群t-digest然后使用插值每个集群的端点之间找到准确的分位数的估计。
算法
对于一个n元向量一个
,prctile
返回百分位数用sorting-based算法:
排序的元素
一个
作为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)百分位数。
prctile
使用线性插值之间的百分比来计算百分位数100 (0.5 /n)和100年((n- 0.5)/n)。prctile
分配元素的最大或最小值一个
相对应的百分位数百分比的范围之外。
prctile
对待南
作为缺失值和删除它们。
扩展功能
高大的数组
计算和数组的行比装入内存。
使用笔记和限制:
P = prctile (A, P)
使用sorting-based返回准确的百分位数(算法)只有一个
是一个高大列向量。P = prctile (A, P,昏暗的)
返回的百分位数只有当一个这些条件存在:一个
是一个高大列向量。一个
是一个高大数组和昏暗的
不是1
。例如,prctile (A, p, 2)
返回的百分位数沿着一排排高大的数组一个
。
如果
一个
是一个高大数组和昏暗的
是1
,那么你必须指定方法
作为“近似”
使用一个基于近似算法T-Digest计算百分位数。例如,prctile (A, p, 1,“方法”,“近似”)
返回近似百分位数高数组的列一个
。P = prctile (A, P, vecdim)
返回的百分位数只有当一个这些条件存在:一个
是一个高大列向量。一个
是一个高大数组和vecdim
不包括1
。例如,如果一个
是3-by-5-by-2数组,那么prctile (p [2、3])
返回元素的确切的百分位数(我::)
片。一个
是一个高大数组和vecdim
包括1
和所有的尺寸一个
尺寸大于1。例如,如果一个
是10-by-1-by-4数组,那么prctile (A, p, 1 [3])
返回元素的百分位数(:1:)
。
如果
一个
是一个高大数组和vecdim
包括1
但并不包括所有的尺寸一个
尺寸大于1,那么你必须指定方法
作为“近似”
使用近似算法。例如,如果一个
是10-by-1-by-4数组,您可以使用吗prctile (p[1 - 2],“方法”,“近似”)
找到每个页面的近似百分位数一个
。
有关更多信息,请参见高大的数组。
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
的
“所有”
和vecdim
不支持输入。万博1manbetx的
方法
不支持名称参数。万博1manbetx的
昏暗的
输入参数必须是一个编译时常量。如果你不指定
昏暗的
输入参数,工作(或操作)维度可以在生成的代码是不同的。因此,会发生运行时错误。更多细节,请参阅自动尺寸限制(MATLAB编码器)。如果输出
P
是一个矢量,方向的P
不同于MATLAB®当所有这些条件是正确的:你不供应
昏暗的
。一个
是一个适应可变数组,而不是适应向量,在编译时,但一个
在运行时是一个矢量。的方向向量
一个
不匹配的方向向量p
。
在这种情况下,输出
P
匹配的方向一个
,而不是方向p
。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
分布式阵列
分区大数组在内存使用并行计算集群的工具箱相结合™。
这个函数完全支持分布式阵列。万博1manbetx有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱)。
版本历史
之前介绍过的R2006aR2022b:通过小的输入数据来改善性能
的prctile
函数显示改进的性能由于速度输入解析。性能改进是最重要的,当输入解析是一个更大的部分的计算时间。这种情况发生在:
输入数据的规模很小。
数量的百分比来计算百分位数值很小。
计算是在默认操作维度。
例如,这个代码计算四个百分位数为3000 -元素矩阵。代码是5倍的速度比之前的版本。
函数timingPrctile =兰德(300年,10);为k = 1:3e3 P = prctile (A, [20 40 60 80]);结束结束
执行时间大约是:
R2022a:1.0秒
R2022b:0.2秒
时间在Windows的代码®10日,英特尔®至强®v4 @ 3.60 GHz CPU e5 - 1650测试系统使用时间
功能:
时间(@timingPrctile)
R2022a:搬到MATLAB从统计和机器学习工具
在此之前,prctile
需要统计和机器学习的工具箱™。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。