Expand your model

Stepwise refinement

The best way to build a model is to start by creating a simple version -- a prototype--which includes some, but far from all of what you think it may need. You can then to extend it in a series of steps each adding further elements. In this way, you’ll get a usable demo early on, something you can show to your colleagues or clients to show progress and get their feedback.

It's often helpful to examine the sensitivities of the simple model to discover which uncertain assumptions, or perhaps missing elements, have the most effect on the results. This helps you set priorities for expanding the model or gathering more data. Even experienced modelers often find that their initial expectations about what parts will matter are wrong. So they use sensitivity analysis to guide the model development to focus on what really matters.

If instead you try to create a large model in a single big step, you run the risk of running out of time or computer resources before you have anything usable. And you may end up putting lots of work into creating an elaborate module for an aspect of the problem that turns out to be of little importance.

Identify ways to improve the model

There are many ways to expand a model:

  • Add variables that you think will be important.
  • Add objectives or criteria for evaluating outcomes.
  • Expand the number of decision options specified for a decision variable, or the number of possible outcomes for a discrete chance variable.
  • Expand a single decision into two or more sequential decisions, with the later decision being made after more information is revealed.
  • For a dynamic model, expand the time horizon (say, from 10 years to 20 years) or reduce the time steps (say, from annual to quarterly time periods).
  • Disaggregate a variable by adding a dimension (say, projecting sales and costs by each division of the company instead of only for the company as a whole).
  • Start with a deterministic model, then add probabilistic inputs to make the model probabilistic.

Before plunging in to one of these approaches to expanding a model, it’s best to list the alternatives explicitly and think carefully about which is most likely to improve the model the most for the least effort. Where possible, perform experiments or sensitivity analysis to figure out how much effect alternative kinds of expansion can have.

Changing the size or numbers of dimensions of tables is a difficult and time-consuming task in conventional modeling environments. Analytica makes it relatively easy, since you only need to change those definitions that directly depend on the dimension (for example, the edit tables), and Analytica propagates the needed changes automatically throughout the model.

Discover what parts are important to guide expansion

A major advantage of starting with a simple model is that you use it to guide extensions in the ways that will be most valuable in improving the model’s results. You can analyze the sensitivities of the simple model (for example, using Importance analysis to identify which sources of uncertainty contribute most to the uncertainty in the results. Typically, only a handful of variables contribute the lion’s share of the overall uncertainty. You can then concentrate your future modeling efforts on those variables and avoid wasting your energy on variables whose influence is negligible.

Early intuitions about what aspects of a model are important are frequently wrong, and the results of the sensitivity analysis might come as a surprise. Consequently, it’s much safer to base model development on sensitivity analysis of simple models than to rely on your intuitions about where to spend your efforts in model construction.

When you have identified the most important variables in your simple model, there are several ways to reduce the uncertainty they contribute. You can refine the estimated probability distribution by consulting a better-informed expert, by analyzing more existing data, by collecting new data, or by developing a more elaborate model to calculate the variable based on other available information.

Simplify where possible

There’s no reason that a model should always grow more complex as you develop it. Sensitivity analysis might reveal that an uncertainty or submodel is just not very important to the results. In this case, consider eliminating it. You might find that some dimensions of a table are unimportant — for example, that there’s little difference in the performance of different divisions. If so, consider aggregating over the divisions and eliminating that dimension from your model.

Simplifying a model has many benefits. It becomes easier to understand and explain, faster to run, and cheaper to maintain. These savings can afford you the opportunity to extend parts of the model that are more important.

Yes, it can feel painful and that you've "wasted your time" when you remove part of a model that you spent energy in creating. But it's helpful to be ruthless. That's why writing teachers famously say you must be willing to "kill your darlings."

See Also


Comments


You are not allowed to post comments.