百分位(Percentile)是统计学中常用的一个指标,用于衡量一个数据点在一组数据中的相对位置。比如,25百分位表示数据中有25%的值低于这个数值。
在PowerBI中,我们可以使用DAX函数来计算百分位,并在报表中实现动态分析。
常用的两个计算百分位的函数是PERCENTILE.INC和PERCENTILE.EXC,它们代表的是统计学中两种不同的百分位计算方法,主要区别在于是否考虑端点值
。
下面以这个简单的数据为例,来看看这两个函数的用法和它们的计算逻辑。
假如要计算上述数据的25%分位,这两个函数的写法分别为:
25%分位-INC
= PERCENTILE.INC( '表'[数据], 0.25 )
25%分位-EXC
=
PERCENTILE.EXC( '表'[数据], 0.25 )
从用法上来说,这两个函数完全一样,都是这样的写法,第一个参数是数据列,第二个参数是百分位k。
同样是计算百分位的函数,为什么结果不同呢,这就要说到两个函数的计算逻辑了。
PERCENTILE.INC函数的计算逻辑和步骤如下:
这个例子中,k是0.25,N是10,则0.25*(10-1)+1=3.25
3、3.25介于第3和第4个位置之间,对应值为30和40。
4、使用线性插值:30+0.25×(40−30)=32.5
结果:PERCENTILE.INC函数计算的25%分位值为32.5。
PERCENTILE.EXC函数的计算逻辑和步骤如下:
1、按升序排列数据。
2、计算位置,位置公式为k×(N+1)
这个例子中,k是0.25,N是10,则0.25*(10+1)=2.75
3、2.75介于第2和第3个位置之间,对应值为20和30。
4、使用线性插值:20+0.0.75×(30−20)=27.5
结果:PERCENTILE.EXC函数计算的25%分位值为27.5。
通过以上的计算逻辑,可以看出,两个函数主要的区别在于计算百分比位置的逻辑不同导致的,PERCENTILE.INC的百分位置是k×(N−1)+1、PERCENTILE.EXC的百分位置是k×(N+1)。
k值越远离0.5,二者的计算差异越大,越靠近0.5,差异越小,当k值等于0.5时,二者的结果是一致的,都返回的是中位数。
对于PERCENTILE.INC,它的k值可以从0到1的任意一个值(包括0和1);而PERCENTILE.EXC的k值只能在1/(N+1)与N/(N+1)之间,超出这个范围将报错(N是数据点的数量)。
比如对于上面的数据,PERCENTILE.EXC中的k值范围应该在1/11和10/11之间,如果要计算用95%分位,它超出了10/11,结果将会报错:
因为按PERCENTILE.EXC的计算逻辑,95%的位置应该是0.95*(10+1)=10.45,而数据点总共才10个,所以报错了,这就是它的k值有特定范围的原因。
通过这两个DAX函数,PowerBI可以轻松实现百分位的计算和展示,一般来说,
PERCENTILE.INC 更适合离散分布的有限数据集,更适用于分布较均匀或数据点较少的情况。
而PERCENTILE.EXC 的算法更加适合更适合用于连续分布的样本数据,因其排除端点,能够避免极端值的影响。
不同的领域和应用场景可根据特定的需求和假设选择不同的方法和函数。
Excel中也有这两个函数,也是同样的计算逻辑,在PowerBI,还有对应的迭代函数PERCENTILEX.INC和PERCENTILEX.EXC,用于更灵活的百分位计算,它们的具体用法与区别,与前面介绍的SUM与SUMX一样: