In the fourth module of the Intro to ABM course, I am learning to create ABMs from scratch instead of extending an existing model.
The three core steps will be covered
Design
Build
Analyze
Designing an Agent Based Model
One can design a model one of two ways. The first is when you know the pattern that you want to model (Phenomena-Based Modeling). The second is when you start with basic mechanisms and see what they generate (Exploratory Modeling).
A top down approach is a deliberate approach as we thing about designing high level components first
A bottom up approach is less deliberate in that one builds the model while conceptualizing in parallel.
I believe my approach would be top down for the project, but I think it would be more engaging for me to generate some epiphanies while building a bottom up model.
The goal is to create a simple model that is easy to verify and validate. I am concerned that I would overcomplicate it as I play with the system.
I will not add content that does not help answer the question to avoid unnecessary complication.
The example I’m building in this module is going to answer the question “How does novel information spread through a population over time?”
It will use the Bass Model for adoption rate.
References for this type of model:
Mahajan, Vijay, Eitan Muller, and Rajendra K. Srivastava. "Determination of adopter categories by using innovation diffusion models." Journal of Marketing Research (1990): 37-50.
Bass, Frank M. "A new product growth for model consumer durables." Management science 15.5 (1969): 215-227.
7 Design Choices
Bill Rand provides these seven design choices:
Scope / Question
Agents
Properties
Behaviors
Environment
Time Step
Inputs and Outputs
Building the Model
We create a simple model with agents who have the ability to “Adopt” information and have a network of connections. Skipping the details of code, here’s where that brings us:
The unique/interested part of the model build is the networking structure modification.
Using the nw extension, the whole network is generated with nodes and we can now easlily modify the network. I created more link density here:
I then created a new preferential attachment network , which could be analogous to a “rich get richer” scenario. More attachments means higher chance of adoption. Using a density slider, we can control the density of the network created by the nw extension as well.
I added some code to layout the network structure to more easily group the agents by their network connections
Creating Influential Agents and Regular Agents
Using netlogo’s breed (similar to classes in standard languages) - I created two types of agents; influential and regular.
I set a fraction of the agents to be influential and modified the code to make influentials visibly “stars”
Influentials only adopt based on influentials. Same with regulars to regulars.
I modified the adoption rate to handle influentials in this way.
Analysis of The Model
I use behaviorspace to analyze the model. Here are the settings:
I am looking at the data with R Studio. Had some issues with RTools / RStudio in Windows that I had to scrap for now to fix/setup at a later time (hopefully by the project deadline comes in).
Conclusion
This was a great high level view of a the full process of creating a model and analyzing data. Highly recommended. Will be very useful for my project.