2016-07-26 88 views
-1

我們使用Extreme Optimization的極限數值庫(http://www.extremeoptimization.com)作爲我們的計算內核。反向正態累積分佈函數轉換

// portfolio risk is inverse normal cumulative distribution function 
double risk = NormalDistribution.InverseDistributionFunction(
    _riskProbabilityLevel, 
    mean, 
    stdev); 

的問題是我們現在正在從C#移動到Java,我真的不知道那麼多關於Java,但一直負責重新寫這個特定的功能。

我得值再次進行測試:

RiskProbabilityLevel = 0.02 
Mean     = 0.06618 
Standard Dev   = 0.057196166520267355 

Risk     = 0.051286461995869864 

但在尋找通在math3.distribution.NormalDistribution庫中的各種功能,我找不到什麼可能是等價的。

任何方向或幫助,將不勝感激。 謝謝。

+0

對不起,認爲這是脫離主題的人,考慮如何真的只有一種方法來將'x'轉換爲'y'我不確定它的方式太廣泛。無論如何,男人救了我的工作。 –

回答

6

我想你可以使用this庫。它被稱爲apache commons.math3。這很受歡迎。從http://www.extremeoptimization.com提供的文檔,我認爲你可以使用下面的代碼:

import org.apache.commons.math3.distribution.NormalDistribution; 

public class TestProbabilites { 

    public static void main(String[] args) { 
     double riskProbabilityLevel = 0.02D; 
     double mean = 0.06618D; 
     double standardDev = 0.057196166520267355D; 
     double expectedRisk = 0.051286461995869864D; 

     NormalDistribution distribution = new NormalDistribution(mean, standardDev); 
     double outcomeRisk = distribution.inverseCumulativeProbability(riskProbabilityLevel); 
    } 
} 

但是你要記得添加apache.commons.math3庫使用MavenGradle或其他一些依賴管理員添加到項目中。

希望這有助於。

+0

感謝您的回答,拯救生命! –

相關問題