2013-03-30 2 views
1

Java의 데이터 세트에서 95% percentile을 계산하려고합니다. 내 데이터 세트는 this-지도의 데이터 세트를 사용하여 Java에서 95 백분위 수를 계산하는 방법

나는 10 호출이 30 밀리 초에 돌아왔다 의미 this-

Key = 30 
Value = 10 

같은 키 값 쌍을하는 ConcurrentHashMap를 낳게 될 것 같은 것을해야합니다

또 다른 예 - 의미

Key = 20 
Value = 5 

, 5 호출은 20 밀리 초에 돌아왔다

위의지도에서 Java에서 95 % 백분위 수를 계산하려고합니다.

누구든지 위의 맵에서 Java로이를 수행하는 방법을 제공 할 수 있습니까? 도움을 주셔서 감사합니다

업데이트 코드 : - 아래

은 맵 -에서 95 %를 계산합니다 내가 가지고 코드입니다

/** 
* A simple method to log 95th percentile information 
*/ 
private static void logPercentileInfo() { 

    double total = 0; 
    for (Map.Entry<Long, Long> entry : CassandraTimer.histogram.entrySet()) { 
     long value = entry.getKey() * entry.getValue(); 
     total += value; 
    } 

    double sum = 0.95*total; 

    double totalSum = 0; 

    SortedSet<Long> keys = new TreeSet<Long>(CassandraTimer.histogram.keySet()); 
    for (long key : keys) { 

     totalSum += CassandraTimer.histogram.get(key); 

     if(totalSum >= sum) { 
      System.out.println(key); 
     } 
    } 

} 

누구를 살펴보고 나에게 할 수 내가 올바르게 쓰는지 알아?

+0

에서 기술 통계학 좀 걸릴 수 있습니다. 그리고 자바에서 같은 일을하는 방법을 모르겠습니다. – ferhan

+1

"수학을하는 법을 모르겠습니다"또는 "수학을하는 법을 알고 있지만 Java로 구현하는 방법을 모르겠습니다" – mbeckish

+0

@OliCharlesworth이 게시물은 매우 오래된 것을 알고 있습니다. 필자가 작성한 코드로 내 질문을 업데이트했습니다. 올바르게 작성했는지 여부를 알려주시고 알려주십시오. 같은 질문에 대해 새 게시물을 열지 않습니다. 도와 주셔서 감사합니다. – ferhan

답변

5

알고리즘은지도의 모든 값을 합계하고 합계의 95 %를 계산하고 누적 합계를 유지하면서 오름차순으로지도 키를 반복하며 합계가 이전에 계산 된 총 합계의 95 % 이상인 경우 , 키는 95 백분위 수이어야합니다.

+0

나는 이것이 아주 오래된 게시물입니다 알고있다. 백분위 수를 계산하는 코드를 작성했습니다. 내 코드가 맞는지 아닌지 알려주시겠습니까? 도와 주셔서 감사합니다. – ferhan

+0

괜찮아 보인다. 하지만 더 쉽지는 않을 것입니다. 코드의 출력을 Excel에서 얻은 결과와 비교하는 것이 더 신뢰할 수 있습니다. 의견에서 모으는 방법을 알고 있습니까? (당신이 답을 얻었을 때 유일하게 명백한 것은 루프를 빠져 나오거나 더 좋은 결과를 얻는 것입니다; 즉, 95 백분위 수 이상의 모든 값을 인쇄하고 있습니다). – Amadan

관련 문제