March 2007
Mon Tue Wed Thu Fri Sat Sun
« Feb   Apr »

Day March 9, 2007

Updates to RandomCopyModel simulation code and new TransmissionLab model

Bandwidth has returned here at the house, so I’m catching up on a backlog of things that needed reasonably comfortable internet connectivity. The Canopy wireless service off Mt. Constitution has been having problems with a power supply and some other stuff for a couple of days, so I’ve been relying on my low-speed backup DSL link, which I have to say lets me get email but otherwise feels more like “super dialup” than “broadband.” Oh well.

I’ve been busy on the simulation modeling front this week, coming out with a “final” version of the RandomCopyModel from an upcoming paper by Alex Bentley, Carl Lipo, Harold Herzog, and Matthew Hahn. I didn’t work on the original model or paper, but Alex graciously allowed me to use the original code as the basis for some future experimental models we’re working on, as well as simulation setups I’ll need for my dissertation research. In return I refactored and made the original simulation a bit clearer to follow in terms of the code, so we’re providing version 1.3 of the RandomCopyModel under the terms of a Creative Commons-GPL license for non-commercial use.

In the meantime, I’ve also been planning the next “version” of the model, which is now a separate codebase managed by Google Code under the name TransmissionLab.

The goal of TransmissionLab is to accurately represent theoretical models of CT (e.g., random copying, prestige-biased transmission, frequency-biased transmission) within a variety of population structures (e.g., complete graphs/well-mixed, sparse random graphs and social networks of varying topologies, spatial lattices), and using a variety of update algorithms (e.g., Moran processes, Wright-Fisher processes, various other birth-death processes). TransmissionLab seeks to also make data collection and “observation” of simulated populations simple, with modules which are completely separate from the simulated population itself thus preventing observational “side-effects” on the model. Analysis flows from data collection, and can be done in a variety of ways.

Naturally we’re not the first people by any means to do agent-based simulation models of cultural transmission, imitation behavior within populations, or the diffusion of innovations. Heck, this isn’t even the first simulation of these sorts of phenomena I’ve been involved with. Where I hope that TransmissionLab differs is that nearly all of my previous simulation models have proven fairly special-purpose, expedient models for working on one particular question or problem, and I’m trying to make TransmissionLab a common platform that can span projects both for myself and my research group.

This is important for a number of reasons:

  1. Stable, well-used models tend to be well-structured, well-tested models. The issues of whether the simulation is showing us artifacts of writing software or the theoretical behavior we’re trying to describe can only be solved by deep investment in design, coding, and testing.
  2. Relating the results of one study to another when each uses different simulation code is a difficult one, for obvious reasons. To the extent that we use the same code framework and models to perform multiple studies, we can make arguments (and even measurements) which relate the results of several research studies to each other.
  3. The relationship issue mentioned in the previous item could span multiple research teams if the model is well-structured and tested enough that others adopt it for research.

Thus, I’m putting some reasonable effort into developing TransmissionLab, and if you have an interest in agent-based modeling and cultural phenomena, I hope you give it a look in a version or two. Right now I’m moving from the older RandomCopyModel to a new set of development tasks, which will be outlined shortly at the googlecode wiki for the project. Once these are checked in, there will be some interesting elements beyond the earlier model to explore. I’ll post when that happens.