2016-11-29 190 views
1

我對某些風險執行蒙特卡羅操作,系統正常工作,但標準偏差完全關閉。當我模擬這個值時,系統是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才能正常工作)。我如何得到這個值?

任何幫助更準確的方程將不勝感激! :)

+0

你在這裏建模什麼樣的分佈?我原本以爲你在描述一個三角形分佈,但只需要最小值,最大值和模式來計算標準偏差。 – andand

+0

我正在使用三角形,然後應用概率。我在這裏應用了這個概率作爲一個測試,所以如果你認爲它不應用在這裏,請忽略這個概率。 –

+0

仍然不確定你在哪裏想出了你所做的等式,但是我已經發布了一個我希望能夠幫助的答案。如果計算三角形分佈的標準偏差有不同的來源,請提供;否則,我不會立即看到您的代碼是如何計算stdev所需的。 – andand

回答

1

考慮到與minmaxmode三角分佈,平均由下式給出:

mean = (min + max + mode)/3 

和方差由 [source]給出:

var = (min^2 + max^2 + mode^2 - min*max - min*mode - max*mode)/18 

因此標準偏差由 [source]給出:

stdev = sqrt(var) 
     = sqrt((min^2 + max^2 + mode^2 - min*max - min*mode - max*mode)/18) 
+0

謝謝,這就是我一直在尋找的東西,我在電動汽車中取代了模式,因爲這使我更接近於比較價值! –