逆正态累积分布函数转换

Chr*_*ein 0 c# java

我们使用Extreme Optimization(http://www.extremeoptimization.com)的Extreme Numerics库作为我们的计算内核.

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

问题是现在我们正在从C#转向Java,我对Java并不是很了解,但我们的任务是重写这个特定的功能.

我有值得测试的价值:

RiskProbabilityLevel = 0.02
Mean                 = 0.06618
Standard Dev         = 0.057196166520267355

Risk                 = 0.051286461995869864
Run Code Online (Sandbox Code Playgroud)

但是在查看math3.distribution.NormalDistribution库中的各种功能时,我找不到可能相同的功能.

任何方向或帮助将不胜感激.谢谢.

Guy*_*rin 9

我想你可以使用这个库.它被称为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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是你要记得添加apache.commons.math3库使用添加到您的项目MavenGradle或其他一些依赖关系经理.

希望这会有所帮助.