我对某些风险执行蒙特卡罗操作,系统正常工作,但标准偏差完全关闭。当我模拟这个值时,系统是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,mostLikely = 200,eV = 150,Prob = 75%)。如果我通过我的系统运行这个风险,那么标准偏差是26.2。我知道的值是正确的是94(尽管这需要/ 2才能正常工作)。我如何得到这个值?
任何帮助更准确的方程将不胜感激! :)
你在这里建模什么样的分布?我原本以为你在描述一个三角形分布,但只需要最小值,最大值和模式来计算标准偏差。 – andand
我正在使用三角形,然后应用概率。我在这里应用了这个概率作为一个测试,所以如果你认为它不应用在这里,请忽略这个概率。 –
仍然不确定你在哪里想出了你所做的等式,但是我已经发布了一个我希望能够帮助的答案。如果计算三角形分布的标准偏差有不同的来源,请提供;否则,我不会立即看到您的代码是如何计算stdev所需的。 – andand