Monte Carlo 标准差方程
Monte Carlo Standard Deviation Equation
我正在对一些 Risks 执行 Monte Carlo 操作,系统工作正常,但标准差完全不对。我模拟这个值的时候,系统是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,概率 = 75%)。如果我 运行 这个风险通过我的系统,标准差是 26.2。我知道正确的值是 94(尽管这需要 /2 才能正常运行)。我如何获得这个值?
如能提供更准确方程式的任何帮助,我们将不胜感激! :)
我正在对一些 Risks 执行 Monte Carlo 操作,系统工作正常,但标准差完全不对。我模拟这个值的时候,系统是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,概率 = 75%)。如果我 运行 这个风险通过我的系统,标准差是 26.2。我知道正确的值是 94(尽管这需要 /2 才能正常运行)。我如何获得这个值?
如能提供更准确方程式的任何帮助,我们将不胜感激! :)