Modeling Customers Switching Between Brands – The General Case
This is the last installment of a four-part series. The first three parts can be accessed by clicking on the links below.
Methods for Using Arrays Effectively
Modeling a Watershed with Arrays
Modeling Customers Switching Between Brands
Generalizing the Model
When I showed Steve Peterson (at Lexidyne) my brand switching model, he told me there is a more general version that separates the customer loss fraction from the fraction won by another competitor. This has been presented in Pharmaceutical Product Strategy by Mark Paich, Corey Peck, and Jason Valant.
In my original formulation, the switching probability matrix was the product of these two variables. However, in many practical cases, the data available comes from two different places and reflects these two separate components. The revised model structure is shown below.
Instead of one composite switching probability, this model uses a switching out probability that is distinct from the switching in probability. The switching out probability is a one-dimensional array that, for each product, contains the fraction of customers lost to rivals every time unit (in our case, month). A sample for the five brands A, B, C, D, and E appears below.
| Brand | Fraction Lost |
| A | 0.091 |
| B | 0.170 |
| C | 0.046 |
| D | 0.026 |
| E | 0.071 |
switching out probability
We can see from this table that Brand B is losing 17% of its customers to rivals each and every month! Whoever is managing that product had better do something quickly.
The other side of the story has to do with which brand the customers are switching to. The switching in probability matrix contains, for each brand, the fraction of lost customers that migrate to a rival brand. Thus, each row of this matrix must add up to one (100% of lost customers). A sample appears below.
| From\To | A | B | C | D | E |
| A | 0.00 | 0.11 | 0.33 | 0.55 | 0.01 |
| B | 0.18 | 0.00 | 0.29 | 0.41 | 0.12 |
| C | 0.22 | 0.02 | 0.00 | 0.44 | 0.32 |
| D | 0.04 | 0.00 | 0.77 | 0.00 | 0.19 |
| E | 0.02 | 0.07 | 0.28 | 0.63 | 0.00 |
switching in probability
Note the diagonal will always be zero.
We can determine a lot of things from this table. For example, brand B offers no competition to brand D, brand D is the biggest rival of all the other brands, and brand C is brand D’s biggest rival.


A module is a container for lower-level model structure. It is designed to support a process of top-down model design and development.
A module input is a variable that can become the ghost of another variable at a different level of the module hierarchy. It becomes the ghost when you assign it to that other variable. After it is assigned, it is referred to both as a cross-level ghost and an assigned module input. All of this is managed transparently if you use the ghost tool.
When a variable is designated as a module output, you are telling the software that this variable can be ghosted on a different level of the module hierarchy. While any variable can be a module output, it is important to carefully manage which variables you intend to be shared across modules.
