本文介绍了“什么是Java分位数计算方法”的知识。很多人在实际案件操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
00-101
Java 分位点(分位值)计算
给出一段时间内的PB(平均P/B比),然后选择这段时间内的某一天计算出这一天的分位数值。
这是一个简单的数理统计问题。对于毕业多年的同学,还是有必要记录下以下相关问题的计算方法。
例如:
最近的1.1-1.10的pb是(1,1,2,2,3,3,4,4,5,5),我通过了1.1。
那么返回给我的值是:0%,如果传入1.10就是100%。
00-1010注:分位数值描述:
Pn是n分位数。这意味着被调查人群中有n%的数据小于这个值。n的大小反映了市场的不同层次,通常用P10、P25、P50、P75、P90来代表市场的不同层次。
10十分值:表示有10%的数据小于这个值,反映市场的低水平。
25-十分位数值:表示有25%的数据小于这个值,反映了市场的较低水平。
50十分值:表示50%的数据小于这个值,反映市场的中等水平。
第75百分位值:意味着75%的数据小于这个值,反映了市场的更高水平。
第90百分位值:表示90%的数据小于这个值,反映了市场的高端水平。
示例:在以下示例中查找一组数据的第25百分位、第50百分位和第75百分位值:
A=【65 23 55 78 98 54 88 90 33 48 91 84】
解决方案:
方法一:
1.首先将前12个数字从小到大排序。
1 23
2 33
3 48
4 54
5 55
6 65
7 78
8 84
9 88
10 90
11 91
12 98
2到12个数字之间有11个区间,每个四分位数之间有11/4=2.75个数字。
3、
计算25分位:
第一个四分位数是上述12个数字中的第一个2.75=3.75。
指第三个数对应的值48和第三个数与第四个数之间的0.75位置,即48 (0.75)*(54-48)=52.5 (52.5为25百分位值)。
计算50分位:
第二个四分位数是上面1 2个数字中的前1个2.752=6.5。
是指第6个数字对应的值65和第6个数字与第7个数字之间的0.5位置,即65 (0.5)(78-65)=71.5 (71.5为第50百分位值)。
【中值也可以用很简单的方法计算,后从小到大排序。
如果数组中的数字个数为奇数,则中间数字对应的值为中值;
如果数组中的数字个数为偶数,中间两个数的平均值为中值,如78 ^ 65)/2=71.5所示]
计算75分位:
上述1 2个数字中的第三个四分位数是1 2.753=9。
指第9个数字对应的值88和第9个数字与第10个数字之间的0.25位置,即88 (0.25)(90-88)=88.5 (88.5为第75百分位值)。
【把1到100分成10等份,那么就有10十分位数,10十分位数和90十分位数的值可以用上面的方法计算出来。(上例中P10=34.5,P90=90.9)】
00-1010相关方法
privatedstatiddoublegetpercenter(list doubledatalist,double p){ 0
int n=DataList . size();
datalist . sort(new comparator double(){ 0
n
bsp; //从小到大排序
@Override
public int compare(Double o1, Double o2) {
if(o1 == null || o2== null){
return 0;
}
return o1.compareTo(o2);
}
});
double px = p*(n-1);
int i = (int)java.lang.Math.floor(px);
double g = px - i;
if(g==0){
return dataList.get(i);
}else{
return (1-g)*dataList.get(i)+g*dataList.get(i+1);
}
}
测试接口
@RequestMapping("CalcPercentile") @ResponseBody public R CalcPercentile(@Param("per") double per){ double[] arrs = {2,4,5,1,3,3,4,1,2,5}; List<Double> doubleList = new ArrayList<>(); for (double currArr : arrs) { doubleList.add(currArr); } double percentile = getPercentile(doubleList, per); return R.ok().message("查询服务数据"); }
正常输出
输入1也就是100%,正常输出5.0,输入0.5,输出3.0
完成需求
上面的分析是,知道百分位,求百分位对应的数值? 而我们的需求是利用样本时间里面的某个值,求对应的百分位是多少?经过查阅很多资料没有找到相关公式,当然有大佬知道可以提示一下.总归问题还是要解决的. 这边使用的解决方案是,把样本数据分成100个点,求每个百分位对应的数值,然后与样本中的目标数据一 一对比,求其最接近的那个数.就间接取到了目标数据的百分位值
核心代码
Java 求百分位数
说明一下
百分位数,统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。
java代码
public static double percentile(double[] data,double p){ int n = data.length; Arrays.sort(data); double px = p*(n-1); int i = (int)java.lang.Math.floor(px); double g = px - i; if(g==0){ return data[i]; }else{ return (1-g)*data[i]+g*data[i+1]; } }
“Java分位点计算方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149058.html