by Mathias 6/8/2008 6:47:00 AM

One of my clients recently asked me to modify an Excel model, so that the adoption of products entering the market would follow a S-curve. After some digging and googling, I came across this excellent post by Juan C. Mendez, where he proposes a clean and very practical way to use the logistic function, and calibrate it through 3 input parameters: the peak value, and the time at which the curve reaches 10% and 90% of its peak value.

The beauty of his approach is that his function is compact so it can be typed in easily in a worksheet cell, and the input very understandable. However, I found it a bit restrictive: transforming it for values other than 10% and 90% requires some recalibration, and more importantly, it cannot accomodate values that are not "symmetrical" around 50%.

So I set to work through a generalized solution to the following problem: find a S-Curve that fits any arbitrary value, rather than just 10% and 90%.

The solution

The formula I ended up with is, not surprisingly, quite a bit longer (and unpleasant) than Mendez's solution:

=Peak/(1+EXP(-((LN(1/Value1-1)-LN(1/Value2-1))

/(Time2-Time1))*(Time-(LN(1/Value1-1)

/((LN(1/Value1-1)-LN(1/Value2-1))

/(Time2-Time1))+Time1))))

(I broke the formula into 4 pieces to make sure it fit on screen. The formula should be in one piece in a single cell.) 

Peak represents the peak market share, i.e. the long-term value of the share of the product (called "Saturation" in Mendez's post). Value1 and Time1 represent the percentage of the Peak share that the product has already reached at time 1, and Value2 and Time2 the percentage of peak share the product has reached at time 2. Time is the time at which the function is to be evaluated.

Illustration: suppose that your product has a long-term market share of 80%, and that it will reach 50% of its peak share (i.e. 50% of 80%, that is, a 40% market share) in April 1st, 2008, and 90% of its peak share (i.e. 90% of 80%, that is, a 72% market share) in July 1st, 2012. In that case, the parameters would be

Peak: 80%

Time1: 2008.25

Value1: 50%

Time2: 2012.5

Value2: 90%

The Excel sheet attached illustrates the curve in action. Given how lengthy the formula for the curve is, I would recommend to consider first whether the formula proposed by Juan Mendez is sufficient for your needs, and, if you really want to go ahead with mine, to write it as a user-defined function, so that you won't have to keep such a large formula in your cells.

S-Curve.xls (26.00 kb)

The math

The equation for the S-curve is given by:

We need to be able to transform this curve so that we control when the growth happens, and its speed. To that effect, we will transform the original curve by adding two parameters Alpha and T0:

In essence, T0 shifts the timeline of the curve, and alpha stretches or compresses time. The chart below illustrates the impact of these parameters on the curve. The Blue curve corresponds to the original S-Curve, with Alpha = 1 and T0 = 0. The Red curve has a value of T0 of 2, which "moves" the curve by 2 units to the right: it reaches 50% at t=T0, instead of t=0. The Green curve has a value of Alpha = 2; it still crosses 50% at t=0, but its growth happens "twice as fast" as the original curve. Where the original curve takes (roughtly) 4 periods to grow from 10% to 90%, the Green curve achieves the same growth in just 2 periods.

Our goal is the following: given two values f1 and f2, and two dates t1 and t2, we want to find the two values Alpha and T0 such that f(t1) = f1 and f(t2) = f2. Playing a bit with the equation f(t1) = f1 yields the following:

Doing the same exercise on f(t2) = f2, we end up with a system of 2 linear equations in two unknowns Alpha and T0:


That system is easily solved and gives us the following values for Alpha and T0:

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Related posts

Comments

6/25/2008 12:36:38 AM

Billy Boyle

Hi Mathias

I've just left a message on Juan's page and saw your generalised solution and thought I'd leave a similar message. I use an interactive Bass curve dashboard to get everyone involved in the ‘what if’ sensitivity analysis process. There is a link to it on my blog page acasoanalytics.wordpress.com/.../. I’ll have a go at doing the same with your approach.

Billy Boyle gb

7/3/2008 5:54:38 PM

pingback

Pingback from acasoanalytics.wordpress.com

Intuitive Bass Diffusion « Acaso Analytics

acasoanalytics.wordpress.com

7/3/2008 6:09:36 PM

Billy Boyle

Hi Mathias,
I've just posted an interactive dashboard of your S curve. The link is here acasoanalytics.wordpress.com/.../
Took me a little while to troubleshoot as the software doesn't support named ranges (only cells) so it kept returning a 'not a number' error. Seems to work fine now. Cheers - Billy

Billy Boyle gb

7/15/2008 10:00:15 AM

Mathias

@ Billy Boyle: very effective (and visually pleasing) way to illustrate the impact of parameters on the shape of the Bass curve. Definitely let me know if you end up creating a dashboard for "my" curve!

Mathias us

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

10/6/2008 8:24:49 PM