天软金融分析.NET函数大全 > TSL函数 > 数学函数 > 次序统计量

Percentile    

简述
计算序列百分点PCT的值。
定义
Percenttile(Data:Array of Real; PCT:Real;RC:Int;ML:Int;ASSIGN:Int|String|array;ABNORMAL:Int;FILL:Any):Real;
参数
名称类型说明
DataArray of Real数组,存放实数的数组
PCTReal实数,表示百分点,从0开始,以1结束
可选参数:
RCInt行列选择:0求列第PCT个百分点的值;1求行第PCT个百分点的值;默认为0
MLInt整型,移动步长,取当前行向前ML个长度序列的百分点的值,为0时取整个序列(默认)。
ASSIGNInt|String|array下标或下标序列,对字段筛选,指定某些行列求百分点的值,为nil时为全部(默认)。
ABNORMALInt整型,
异常处理参数,按照存储位来进行管理:
第一位管理的是是否忽略字符串异常值(这里nil值是默认跳过的),
第三位管的是计算移动长度的时候,nil值及字符串是否包括在内。
这样的话:
0表示一般处理,即字符串报错(默认情况);
1表示,字符串不报错;
4表示字符串报错,计算移动单位时忽略nil值;
5表示字符串也不报错,计算移动单位时忽略nil值和字符串值;
FiLLAny 数据data为空时的返回值。
  • 算法

    对序列从小到大排序,数据长度为n,则
    (1)
    求(n-1)* PCT,记整数部分为i,小数部分为j
    (2)
    所求结果=(1-j)*序列第(i+1)个数+j*序列第(i+2)个数
    范例

    范例1:序列百分点的值
    //返回数组Data的第3个百分点
    Data:=array(5,3,6,8,9,10,4);
    return Percentile(Data,0.3);
    //结果:4.8

    范例2:二维数组各列百分点的值
    a:=array('A':('g':1,'f':2,'k':3),
            'B':('g':10,'f':20,'k':30),
            'C':('g':100,'f':200,'k':300),
            'D':('g':1000,'f':2000,'k':3000),
       );
    return Percentile(a,0.5,0);

    范例3:二维数组指定列指定步长的百分点的值
    a:=array('A':('g':1,'f':2,'k':3),
            'B':('g':10,'f':20,'k':30),
            'C':('g':100,'f':200,'k':300),
            'D':('g':1000,'f':2000,'k':3000),
       );
    return Percentile(a,0.5,0,2,array('f','k'));
    参考
    统计函数功能拓展 Large Small 
相关