2016-07-26 9 views
-1

私たちは計算カーネルにExtreme Optimization(http://www.extremeoptimization.com)のExtreme Numericsライブラリを使用しました。逆正規累積分布関数変換

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

問題は、今、私たちは、JavaにC#の間を移動されていると私は本当にジャワに関するすべてのことはあまり知りませんが、この特定の機能を再書き込みする使命を帯びてきました。

私はに対してテストする値があります。

RiskProbabilityLevel = 0.02 
Mean     = 0.06618 
Standard Dev   = 0.057196166520267355 

Risk     = 0.051286461995869864 

をしかしmath3.distribution.NormalDistributionライブラリ内のさまざまな機能を通して見ている中で、私は同等であるかもしれないものを見つけることができません。

いずれの方向またはヘルプも高く評価されます。ありがとう。

+0

これはトピックではないと思っていた人には申し訳ありませんが、本当に「x」から「y」に変換する方法が1つしかないと考えると、その方法が広すぎます。それにもかかわらず、人は私の仕事を救った。 –

答えて

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ライブラリを追加するために覚えておく必要がMavenまたはGradleまたはいくつかの他の依存性マネージャを使用してプロジェクトに追加。

これが役に立ちます。

+0

あなたの答え、人生の節約に感謝します! –

関連する問題