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?
Best Answer
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