Bret Victor’s video of a slick iPad app for interactive visualization of the Lotka-Voltera equations has been making the rounds:
Coincidentally, this came to my notice around the same time that I got interested in the debate over wolf reintroduction here in Montana. Even simple models say interesting things about wolf-elk dynamics, which I’ll write about some other time (I need to get vaccinated for rabies first).
To ponder the implications of the video and predator-prey dynamics, I built a version of the Lotka-Voltera model in Vensim.
After a second look at the video, I still think it’s excellent. Victor’s two design principles, ubiquitous visualization and in-context manipulation, are powerful for communicating a model. Some aspects of what’s shown have been in Vensim since the introduction of SyntheSim a few years ago, though with less Tufte/iPad sexiness. But other features, like Causal Tracing, are not so easily discovered – they’re effective for pros, but not new users. The way controls appear at one’s fingertips in the iPad app is very elegant. The “sweep” mode is also clever, so I implemented a similar approach (randomized initial conditions across an array dimension) in my version of the model. My favorite trick, though, is the 2D control of initial conditions via the phase diagram, which makes discovery of the system’s equilibrium easy.
The slickness of the video has led some to wonder whether existing SD tools are dinosaurs. From a design standpoint, I’d agree in some respects, but I think SD has also developed many practices – only partially embodied in tools – that address learning gaps that aren’t directly tackled by the app in the video:
- The good ol’ stock and flow diagram beats equations and time series graphs for conveying structure by a country mile, especially with models that are bigger than second order. Yes, it’s true that most people don’t understand them, but I think that the solution for that is education, not avoidance. The mapping between ODEs and a stock-flow diagram is pretty fundamental, so I’d argue that eschewing diagrams almost requires dumbing down your structure presentation. Maybe we can improve on existing visual conventions, but I don’t think we can do without something like the stock-flow diagram.
- More generally, SD has a number of habits for conveying operational descriptions, in plain language, that help the user to understand what is in the model and how the world works. It would be nice to formalize and automate these.
- It’s nice for a user to explore a model as an artifact, like a slinky or a skateboard, but it’s equally important to assist the user in exploring the limitations of the model (like the atto-fox problem in the Lotka-Volterra equations), by identifying suspect behavior as it occurs and providing cues for experiments that reveal pathologies. Vensim’s Reality Check is one way to do this, though it’s under-utilized (even by its creators).
There’s also a lot of territory that no tool I’m aware of covers particularly well:
- It’s nice to have explorable equations, but they need some support – comprehensible variable names (as in the app) and documentation and units (as presented in Vensim when a user hovers over a variable) help, but there’s still likely to be a gulf between the user’s mental model of how a process works, and the implementation in equation structure. This is particularly acute where there’s aggregation from discrete events to continuous flows. There ought to be some way to help convey the rationale for the choice of y = ax + b vs. y = x/(1+ax) vs. …
- It’s easy to rationalize behavior that emerges from a model, especially when one is unfamiliar with it. It would be nice if there were some automated way to capture prior expectations and compare them with model output, so that the user could learn from failed mental simulation attempts. Over longer time scales, a similar approach could facilitate tracking and evaluating predictions from the model.
- Time series output is not the only model output to explore:
- In most cases, some runs represent better outcomes than others. Mapping the payoff surface for such outcomes makes it possible to quickly choose desirable and undesirable policies.
- Uncertainty matters, so it would be helpful to have elegant ways of capturing subjective probability distributions and visualizing their impact on model behavior.
- Like phase diagrams, neither of these concepts is familiar to many people, so a mix of education and intuitive presentation will be required.
- There’s a lot of room for improvement in browsing of complex models.
- It’s nice to see behavior and structure, but understanding how behavior emerges from structure is much more useful. Formally, this means eigenvalue/eigenvector analysis and similar methods, as here, here, and here. Currently the fraction of potential model consumers who can interpret an eigenvalue is pretty tiny, so a lot will have to happen to make such metrics intuitive.
This is a long way of saying that we’re just beginning to scratch the surface of the possibilities for beautiful, functional and intuitive use of models.