我们使用 Extreme Optimization ( http://www.extremeoptimization.com ) 中的 Extreme Numerics 库作为我们的计算内核。
// portfolio risk is inverse normal cumulative distribution function
double risk = NormalDistribution.InverseDistributionFunction(
_riskProbabilityLevel,
mean,
stdev);
问题是现在我们正在从 C# 转向 Java,我对 Java 不太了解,但我的任务是重写这个特定的函数。
我有要测试的值(value)观:
RiskProbabilityLevel = 0.02
Mean = 0.06618
Standard Dev = 0.057196166520267355
Risk = 0.051286461995869864
但是在查看math3.distribution.NormalDistribution
库中的各种函数时,我找不到可能等效的函数。
任何指导或帮助将不胜感激。 谢谢。
最佳答案
我认为你可以使用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);
}
}
但是您必须记住使用 Maven
或 Gradle
或其他一些依赖项将 apache.commons.math3
库添加到您的项目中经理。
希望这有帮助。
关于java - 逆正态累积分布函数转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593721/