欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?分位點(diǎn)(分位值)計(jì)算方式

 更新時(shí)間:2021年12月15日 10:03:32   作者:Think-Yang  
這篇文章主要介紹了Java?分位點(diǎn)(分位值)計(jì)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java 分位點(diǎn)(分位值)計(jì)算

有一個(gè)需求

給出一段時(shí)間的PB(平均市凈率),然后選擇這段時(shí)間的某一天,計(jì)算這天的分位值.

很簡(jiǎn)單的一個(gè)數(shù)理統(tǒng)計(jì)學(xué)科的問題,對(duì)于畢業(yè)多年的學(xué)渣還是有必要記錄以下相關(guān)問題的計(jì)算方法.

例如:

取最近1.1-1.10號(hào)的pb分別是(1,1,2,2,3,3,4,4,5,5),我傳入1.1號(hào)

那么返回我值是:0%,如果傳入1.10號(hào)返回100%

那么怎么建立數(shù)學(xué)模型呢?

注:分位值說明:

Pn為n分位值。表示被調(diào)查群體中有n%的數(shù)據(jù)小于此數(shù)值。n的大小反應(yīng)市場(chǎng)的不同水平,通常使用P10、P25、P50、P75、P90來表示市場(chǎng)的不同水平。

  • 10分位值:表示有10%的數(shù)據(jù)小于此數(shù)值,反映市場(chǎng)的低端水平。
  • 25分位值:表示有25%的數(shù)據(jù)小于此數(shù)值,反映市場(chǎng)的較低端水平。
  • 50分位值:表示有50%的數(shù)據(jù)小于此數(shù)值,反映市場(chǎng)的中等水平。
  • 75分位值:表示有75%的數(shù)據(jù)小于此數(shù)值,反映市場(chǎng)的較高端水平。
  • 90分位值:表示有90%的數(shù)據(jù)小于此數(shù)值,反映市場(chǎng)的高端水平。

例:求下例一組數(shù)據(jù)的25分位,50分位,75分位值:
A=【65 23 55 78 98 54 88 90 33 48 91 84】

解:

方法一:

1、先把上面12個(gè)數(shù)按從小到大排序

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個(gè)數(shù)有11個(gè)間隔,每個(gè)四分位間11/4=2.75個(gè)數(shù)

3、

① 計(jì)算25分位:

第1個(gè)四分位數(shù)為上面12個(gè)數(shù)中的第1+2.75=3.75個(gè)數(shù)

指第3個(gè)數(shù)對(duì)應(yīng)的值48及第3個(gè)數(shù)與第4個(gè)數(shù)之間的0.75位置處,即:48+(0.75)*(54-48)=52.5 (52.5為25分位值)。

② 計(jì)算50分位:

第2個(gè)四分位數(shù)為上面12個(gè)數(shù)中的第1+2.752=6.5個(gè)數(shù)

指第6個(gè)數(shù)對(duì)應(yīng)的值65及第6個(gè)數(shù)與第7個(gè)數(shù)之間的0.5位置處,即:65+(0.5)(78-65)=71.5 (71.5為50分位值)。

【中位值也可以用一種很簡(jiǎn)單的方法計(jì)算,按從小到大排列后:

若數(shù)組中數(shù)的個(gè)數(shù)為奇數(shù),則最中間那個(gè)數(shù)對(duì)應(yīng)的值則為中位值;

若數(shù)組中數(shù)的個(gè)數(shù)為偶數(shù),則取中間兩個(gè)數(shù)值的平均值則為中位值,如上78+65)/2=71.5】

③ 計(jì)算75分位:

第3個(gè)四分位數(shù)為上面12個(gè)數(shù)中的第1+2.753=9.

指第9個(gè)數(shù)對(duì)應(yīng)的值88及第9個(gè)數(shù)與第10個(gè)數(shù)之間的0.25位置處,即:88+(0.25)(90-88)=88.5 (88.5為75分位值)。

【將1到100分為10等分,則有10個(gè)10分位,用以上的方法可計(jì)算10分位值和90分位值。(以上實(shí)例的P10=34.5,P90=90.9)】

下面用Java 代碼實(shí)現(xiàn)

相關(guān)方法

private static double getPercentile(List<Double> dataList, double p) {
        int n = dataList.size();
        dataList.sort(new Comparator<Double>() {
            //從小到大排序
            @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);
        }
    }

測(cè)試接口

    @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("查詢服務(wù)數(shù)據(jù)");
    }

正常輸出

輸入1也就是100%,正常輸出5.0,輸入0.5,輸出3.0

在這里插入圖片描述

完成需求

上面的分析是,知道百分位,求百分位對(duì)應(yīng)的數(shù)值? 而我們的需求是利用樣本時(shí)間里面的某個(gè)值,求對(duì)應(yīng)的百分位是多少?經(jīng)過查閱很多資料沒有找到相關(guān)公式,當(dāng)然有大佬知道可以提示一下.總歸問題還是要解決的. 這邊使用的解決方案是,把樣本數(shù)據(jù)分成100個(gè)點(diǎn),求每個(gè)百分位對(duì)應(yīng)的數(shù)值,然后與樣本中的目標(biāo)數(shù)據(jù)一 一對(duì)比,求其最接近的那個(gè)數(shù).就間接取到了目標(biāo)數(shù)據(jù)的百分位值

核心代碼

在這里插入圖片描述

Java 求百分位數(shù)

說明一下

百分位數(shù),統(tǒng)計(jì)學(xué)術(shù)語(yǔ),如果將一組數(shù)據(jù)從小到大排序,并計(jì)算相應(yīng)的累計(jì)百分位,則某一百分位所對(duì)應(yīng)數(shù)據(jù)的值就稱為這一百分位的百分位數(shù)??杀硎緸椋阂唤Mn個(gè)觀測(cè)值按數(shù)值大小排列。如,處于p%位置的值稱第p百分位數(shù)。

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];
  }
 }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot線程池和Java線程池的使用和實(shí)現(xiàn)原理解析

    SpringBoot線程池和Java線程池的使用和實(shí)現(xiàn)原理解析

    這篇文章主要介紹了SpringBoot線程池和Java線程池的用法和實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器

    Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器

    本篇文章主要介紹了Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-05-05
  • Java數(shù)組中的元素刪除并實(shí)現(xiàn)向前移的代碼

    Java數(shù)組中的元素刪除并實(shí)現(xiàn)向前移的代碼

    這篇文章主要介紹了Java數(shù)組中的元素刪除并實(shí)現(xiàn)向前移的代碼的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • java切分字符串的2種方法實(shí)例

    java切分字符串的2種方法實(shí)例

    在我們?nèi)粘9ぷ髦薪?jīng)常遇到截取字符串的需求,下面這篇文章主要給大家介紹了關(guān)于java切分字符串的2種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java實(shí)例講解枚舉enum的實(shí)現(xiàn)

    Java實(shí)例講解枚舉enum的實(shí)現(xiàn)

    枚舉法的本質(zhì)就是從所有候選答案中去搜索正確的解,枚舉算法簡(jiǎn)單粗暴,他暴力的枚舉所有可能,盡可能地嘗試所有的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 一文教你如何更改IDEA已有項(xiàng)目的路徑/名稱

    一文教你如何更改IDEA已有項(xiàng)目的路徑/名稱

    由于IDEA項(xiàng)目路徑中有中文、空格等特殊符號(hào),影響正常使用,想要修改路徑名稱,怎么正確修改IDEA項(xiàng)目名稱,使其正常運(yùn)行呢?所以本文小編講給大家詳細(xì)的介紹了更改IDEA已有項(xiàng)目的路徑/名稱解決方案,需要的朋友可以參考下
    2023-11-11
  • java迷宮算法的理解(遞歸分割,遞歸回溯,深搜,廣搜)

    java迷宮算法的理解(遞歸分割,遞歸回溯,深搜,廣搜)

    本文主要使用的算法(自動(dòng)生成地圖:遞歸分割法、遞歸回溯法;尋找路徑:深度優(yōu)先、廣度優(yōu)先算法),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2021-06-06
  • Spring中的SpringData詳細(xì)說明

    Spring中的SpringData詳細(xì)說明

    這篇文章主要介紹了Spring中的SpringData詳細(xì)說明,Spring Data 是Spring 的一個(gè)子項(xiàng)目, 旨在統(tǒng)一和簡(jiǎn)化對(duì)各類型持久化存儲(chǔ), 而不拘泥于是關(guān)系型數(shù)據(jù)庫(kù)還是NoSQL 數(shù)據(jù)存儲(chǔ),需要的朋友可以參考下
    2023-11-11
  • Java HtmlParse提取標(biāo)簽中的值操作

    Java HtmlParse提取標(biāo)簽中的值操作

    這篇文章主要介紹了Java HtmlParse提取標(biāo)簽中的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評(píng)論