我正在对某些风险执行蒙特卡罗操作,系统正常工作但标准偏差完全关闭。当我模拟这个值时,系统是100%准确的。
我所拥有的风险的输入变量是最佳案例成本值,最坏情况成本值,最可能成本价值,风险发生概率和估计值(平均值*概率)。
我目前的实现是这个(在Java / Apex中):
public static Double calculateStandardDeviation(Decimal max, Decimal min, Decimal mostLikely, Decimal eV, Decimal prob){
Double sum = 0,
probability = prob;
//uses standard SD calculation
sum += (min - eV) * (min - eV);
sum += (max - eV) * (max - eV);
sum += (mostLikely - eV) * (mostLikely - eV);
//if the probability is not 100%, apply it to the calculation
if(prob != 0){
sum *= prob;
}
return Math.sqrt(sum);
}
进一步的例子:
如果我的风险值为:(最大值= 300,最小值= 100,最大值= 200,eV = 150,Prob = 75%)。如果我通过我的系统运行此风险,则标准偏差为26.2。我知道的值是正确的是94(虽然这需要/ 2才能正常工作)。我怎样才能得到这个值?
非常感谢任何关于更精确等式的帮助! :)