2
$\begingroup$

A popular method to estimate in project management is the 3 point estimation plus the PERT formula

If I use it for example to estimate how many stories my team is going to be able to complete Sprint over Sprint, I can start by saying that:

  • Min number of stories: 10
  • Most likely number of stories: 20
  • Max number of stories: 30

Which when using the Z-score for 75% confidence tells me that if my assumptions are correct I can be 75% confident that I will be able to complete at least 18 stories.

- Pert Mean=([[Min]]+(4*[[Most Likely]])+[[Max]])/6
- Pert Variance = POWER(([[Max]]-[[Min]])/6,2)
- Pert StDev = SQRT([Pert Variance]) 
  • Pert Mean: 20, StD: 3, Z-score: -0.67 therefore 20+(3*-0.67) = 18

But then it turns out that my team is only able to complete 8 stories, way less than what I expected to be the minimum, initially I had considered to simple update my parameter estimates to:

  • Min number of stories: 8
  • Most likely number of stories: 20
  • Max number of stories: 30

But it didn't feel quite right, so I started reading more and discovered PERT distribution is actually a transformation of the Beta distribution, which meant I could use this to recalibrate.

So I went ahead and translated my initial PERT estimate into a Beta distribution by using this formulas:

Alpha =IF([Weighted Mean]=[Mode],([Lambda]/2)+1,  ([Weighted Mean]-[Min])*(2*[Mode]-[Min]-[Max])/(([Mode]-[Weighted Mean])*([Max]-[Min])))

Beta =[Alpha]*([Max]-[Weighted Mean])/([Weighted Mean]-[Min])

Which gave me this results:

  • Alpha: 3
  • Beta: 3

Adjusting alpha and beta to reflect the fact that we expected to complete 20 stories but only completed 8 is easy:

  • Calibrated Alpha = 3+8 = 11
  • Calibrated Beta = 3+12= 15.

Now the question is how do I translate that back into PERT to be able to use the Z-score to estimate (with 75%) confidence the number of stories that I will be able to complete on the next sprint... I looked and looked and couldn't find anything.... So I went the Montecarlo simulation route and had Excel generate 1 Million random numbers based on the Beta distribution:

FLOOR.MATH(BETA.INV(RAND(),[Alpha],[Beta],[Minimum],[Maximum])

That is:

FLOOR.MATH(BETA.INV(RAND(),11,15,8,30)

I used 8 as the min because is that smallest value I ever had (even if the project has only ran for 1 sprint)

And the result was:

  • Min 9
  • Mode 17
  • Max 26

Which I am now using as parameters to do the PERT estimation for the next iteration...

The problem is that Excel is not really that fast generating 1 millon rows, and I really would like to calculate how things adjust over multiple sprints, so I am now wondering:

  • Is this the only way to adjust the PERT parameters based on the way the team actually performed?
  • Or is there some kind of (Bayesian?) formula that I could use to re-calibrate my PERT estimates?
$\endgroup$
  • $\begingroup$ A million rows? How many iterations are you using for your Monte Carlo simulation? Typically, around 10,000 should be enough to give you stable results. $\endgroup$ – Tom Jan 18 '19 at 6:56
  • $\begingroup$ @Tom Interesting can you please elaborate on the way to measure the impact of the number of iterations? $\endgroup$ – Luxspes Jan 18 '19 at 21:29
  • $\begingroup$ You could run the simulation a number of times with different iteration values and measure the convergence. I go by the literature and by my own experience. I've by now run a few thousand simulations and while results are quite volatile at around 1-2 thousand iterations (which I sometimes use for quick checks if the results themselves are not important, e.g. I'm debugging something) they are fairly stable (about 2-3 significant digits) around 10k and going to 20k doesn't seem to me to improve anything significantly. I might run more extensive tests for a commercial product I'm working on. $\endgroup$ – Tom Jan 19 '19 at 6:51
1
$\begingroup$

This article might be useful

http://pubsonline.informs.org/doi/pdf/10.1287/ited.1080.0013

BTW, When I estimate the beta parameters using the pert parameter you gave (10,20,30) I got alfa=beta=4 (I used equations 4 and 5 in the article above)

Confirm you are using the proper formula.

Good luck, JP

| cite | improve this answer | |
$\endgroup$
  • $\begingroup$ What lambda are you using? $\endgroup$ – Luxspes Sep 22 '16 at 2:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.