Multi-Agent Religion Simulation

From the article "Accidental Atheists? Agent-Based Explanations for the Persistence of Religious Regionalism", Journal for the Scientific Study of Religion (2007)

By Laurence Iannaccone and Michael Makowsky 

The full version of the paper is available here.

Abstract

This paper presents a new, multi-agent approach to the study of religious commitment. Starting with a variant on Schelling’s classic model of mobility and segregation, we develop a multi-agent religion simulation (MARS) that captures a wide range of insights from standard theories of religious choice, social influence, and preference formation. Compared to traditional, statistical methods of analyzing religious change, MARS better describes the actual process by which people make religious choices and better explains the persistence of religious regionalism.  In a mobile and pluralistic society, stable regional patterns require a balanced combination of adaptation to one’s current social environment and attachment to one’s personal identity. 

Citation

Laurence R. Iannaccone and Michael D. Makowsky (2007) 
Accidental Atheists? Agent-Based Explanations for the Persistence of Religious Regionalism 
Journal for the Scientific Study of Religion 46 (1), 1–16

Model: MARS.nlogo (runs on Netlogo version 3.1)

Users’s Guide 

and ending with

Regionalism simulation experiments from the paper

Several simulation experiments are reported in the paper, each starting from initial conditions identical to those the image above. Below you can see the outcomes of these experiments. Click on one of the three subsequent links to view/download the full 2000 turn movie.

Regionalism experiments  (related to figures 2a-2d in the paper) 

        

  Heavy Conformity                                  Moderate Conformity Resistance                           

  2000 step movie: link                               2000 step movie: link  2000 step movie: link                                          


Sect Stability Experiments

Sect Stability Simulation Experiments

related to figures 3a-3d in the paper        

              Imprinting                                 Imprinting + Selective Search             Imprinting, Search, and Community Pull

  2000 step movie: link                         2000 step movie: link  2000 step movie: link                                          

 


OVERVIEW and QUICK START

MARS is a social science simulation of religious migration and conformity created within the Netlogo programmable modeling environment. Agents and the environment they exist within are programmed constructs whose attributes and the rules they operate by are a combination of programmed algorithms, endogenous variables, and exogenous parameters. 

The focus of this guide is to help the user understand the model and what it simulates, and to create his or her own experiments by adjusting the observer controlled parameters and employing the full range of tools available. 

All are encouraged to read the story behind the model, the basics of the observer interface, and the section on getting started. The tools and techniques described in the advanced section are just that - useful to researchers with specific goals, but not necessary for most experiments. 

THE STORY 

Agents exist within a two dimensional space (lattice) not unlike a checkerboard, Divided into a number of regions set by the observer (1 – 4). Agents move randomly, exogenously driven by the program to chosen patches, and upon arrival choose whether or not to maintain their religion (color) based on their original religion (when created), current religion (the one they had before moving), the religions of each of their new neighbors (community). The choice process amounts to evaluating a utility function for each possible choice of religion, and weighting original by the "origin" parameter, current religion by the "inertia" parameter, and the influence of neighbor religions by the "community" parameters. 

Additionally, in more advanced models, agents have a choice to make regarding their congregation attendance, and quantity represented by shading. Attendance is our chosen variable for representation of agent religiosity, as it is the most accepted metric of religiosity and it has a clear cut community dynamic. Similar to religion selection, Attendance decisions are a utility evaluation based on original attendance, current attendance, and community attendance. 


QUICK START 

Using the Scenarios. 

Key sequence: Click Scenario, then click on either "Basic" "Conform" or "Resist" 
You may then either click Run/Pause to run it indefinitely, or Options-->Skip-ahead-n and then choose the exact number of moves for the simulation to run. 

Note: to replicate runs from the paper, the Recall button must be clicked twice after selecting a scenario to begin from the exact starting assortment. 

GETTING STARTED: 

What kind of agents do you want? 

This is for most experiments at the core of what you are trying to accomplish. There are two questions to be asked in the process: 

1) How many different types (religions) of agents do you want? 
2) In what relative ratios do you want them to populate your model? 


These preferences are both met by adjusting the parameter slider adjacent to each color button. If you would like some portion of your agents to be red, simply set the R_num¬ slider to a number greater than zero. Do this for each type you wish to be present. The ratio that will be realized in the initial conditions of your model will simply be that type’s (color’s) assigned number as a fraction of the sum pf all the _num¬ slider settings. 


Where do they go? 

Designing your environment and populating it with agents is an obviously important, and relatively straightforward task. 

1) Choose your number of regions by moving the slider. You may have between one and four regions. 
2) Click Start/End. Notice that if you chose multiple regions that lines of gray patches divide the lattice. 
3) Choose a population density. You have between 1 and 100 percent density. 
4) Click Populate. Each time you click populate a region will fill with agents to your prescribed density. If you have three regions you will have to click populate, then wait for it to fill three successive times 

Note: If after all regions are filled you click populate an additional time the lattice spaces unoccupied will be filled by the density percentage chosen ( ex if there are 10 unoccupied spaces and you click populate with 60% density, 6 of the remaining spaces will be filled). 

Once these basic parameters have been set you may run the model by clicking Run/Pause. Clicking again will pause the model, and it can be restarted by clicking it yet again. 

How much do they move? 

Agents operating within the model once it is running will be exogenously forced to move on a percentage of their turns. The move-rate¬ slider sets this percentage. 

What are their attributes? 

Finally, you wish to design your agents. For each type used within your model you have the option of assigning a set of relative values regarding the religion and attendance related attributes. 

This is accomplished by adjusting a series of sliders that dictate the relative strength and weaknesses of your agents in six different categories. 

- j_ type equals the utility associated with choosing to maintain (or return to) one’s type-of-origin. If zero, then the agent displays no attachment to his religious upbringing. 
- k_ self
equals the utility associated with not changing one’s current type. If zero, then the agent displays no internalized “inertia” across periods. 
- i_ pull
equals the “social” utility that the agent receives from neighbors who share his type. If zero, then neighbors of type-i exert no “pull” on their co-religionists. This effect is weighted by the number of type-i neighbors relative to the number of potential (not actual) neighbors. 




--------------------------------------------------- 
PROGRAMMING NOTES: 



MINOR BUGS: 

- Re. "Store" and "Recall" buttons: Stored state "1" corresponds to state never seen, nor used. It's what would happen *if* each turtle adjusted as it was dropped on board. Nice to know, but not worth computing and saving in general? Delete from "add turtles" procedure and add as a special option? Slows "populate". At the very least, should reverse displayed numbering states "0" and "1", and then suppress display of state "0" except via special command.