Very early this morning I dropped into Hacker Dojo in Mountain View. Founder Brian Klug was still there from the night before and invited me in. Accomplace Luke offered up a great cup of French-pressed coffee from Brazil while we discussed an R package for ecological simulations called simecol.
The design goals of simecol are set out in an article written in the Journal of Statistical Software (Petzoldt and Rinke) that describes simecol as R's "standard protocol for describing individual-based and agent-based models."
Suppose you have a natural system of states with interdependent variables. A classic example is the Lotka-Volterra predator-prey model of differential equations. There are several factors that influence the behavior of the system. Take an insect species and the existence of another organism that feeds on the insects. The initial conditions of the system are stated in terms of the initial density of each of the agent populations. The behavior of the system depends on the interaction of agents - the independent growth rate of the organisms, the predation rate of the prey when they encounter predators, the rate of reproduction of predator and prey, the death rate of predators, and systemic boundaries. There are points in the system that exhibit a resurgence of prey with concurrent decrease in predator population. If prey density is low enough, predators will start to die off.
The simecol package places the various system parameters, functions, and initial conditions into the model as objects of the simObj class. sim(simObjects, ...) is the core function that makes simObjects work. The result of each simulation is a modified version of the original simObject.
The charts above illustrate the concurrent behavior of predator-prey population densities.



It seems crazy not to plot them both on the same diagram, so the fundamental comparison described in the text above ("points ... that exhibit a resurgence of prey with concurrent decrease in predator population") can be made without trying to flip back and forth between two plots that don't fit on the screen together.
It's not like there's so much information in one plot that you can't cope with a second series.
Posted by: GB | December 01, 2009 at 15:17
Or at the least, a pair of plots compressed more in the vertical direction, (say via par(mfrow=c(2,1)) ) to make an across-plot comparison simpler.
Posted by: GB | December 01, 2009 at 15:21