2016-11-29 2 views
1

J'effectue une opération de Monte-Carlo sur certains risques, le système fonctionne correctement mais l'écart-type est complètement éteint. Lorsque je simule cette valeur, le système est précis à 100%. Les variables d'entrée du risque que je possède est la meilleure valeur de coût, la valeur du coût le plus défavorable, la valeur de coût la plus probable, la probabilité de risque et la valeur estimée (probabilité moyenne *).Équation de Monte-Carlo Ecart-type

Ma mise en œuvre est de ce type (en 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); 
    } 

Autre exemple:

Si j'ai un risque avec les valeurs: (max = 300, Min = 100, mostlikely = 200, eV = 150, Prob = 75%). Si je cours ce risque dans mon système, l'écart-type est de 26,2. La valeur que je sais correcte est 94 (bien que cela doive être/2 pour fonctionner correctement). Comment aurais-je cette valeur?

Toute aide sur une équation plus précise serait grandement appréciée! :)

+0

Quelle distribution modélisez-vous ici? À l'origine, je pensais que vous étiez en train de décrire une distribution triangulaire, mais cela ne nécessite que le minimum, le maximum et le mode pour calculer l'écart-type. – andand

+0

J'utilise triangulaire puis j'applique la probabilité. J'ai appliqué cette probabilité ici comme un test donc s'il vous plaît ignorer le prob si vous pensez qu'il ne devrait pas être appliqué ici. –

+0

Vous ne savez toujours pas où vous avez trouvé l'équation que vous avez faite, mais j'ai posté une réponse ci-dessous qui, je l'espère, vous aidera. Si vous avez une source différente pour calculer l'écart-type d'une distribution triangulaire, veuillez le fournir; Sinon, je ne vois pas immédiatement comment votre code est similaire à celui nécessaire pour calculer stdev. – andand

Répondre

1

Compte tenu d'une distribution triangulaire avec min, max et mode, la moyenne est donnée par:

mean = (min + max + mode)/3 

et la variance est donnée par [source]:

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

Par conséquent, l'écart-type est donné par [source]:

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

Merci, c'est ce que je cherchais, j'ai subbed dans l'EV au lieu du mode car cela me rapproche des valeurs que je compare contre! –