Note: This model was uploaded to the Netlogo Modeling Commons during development, and then the final project was added to github for demonstration purposes. The linked site includes clearer code, version history, and a very rough in-browser port.
This is a model written in NetLogo as part of a course on agent-based modeling. It is meant to demonstrate and analyze the growth of a superstition in society.
This repo contains the model, which can be run in NetLogo, along with the full report on the model in pdf form, and the poster used in the poster fair, also in pdf form.
This is a model intended to examine the growth of a superstition in a population. It offers a more in-depth answer to why superstitions occur than the standard assumption that "people just don't understand statistics." It assumes humans are capable of conducting correct statistical experiments, and that they simply have a lower standard for what is "improbable" (alpha value) than statisticians.
Agents move around and keep a log of the last few times they saw a cat, and whether or not that cat was on a red patch. Each time the log changes, they consider the odds that the log has as many or more red patches than it has. This is done using a binomial distribution formula. If the odds are lower than their alpha value, the humans become superstitious and tell other nearby humans to raise their alpha values. The same happens when they stop being superstitious if they see very few red patches. Every tick, if a human is close to a superstitious human, they increase their own alpha, and if they are close to a non-superstitious human, they decrease it by the same amount or less, depending on their superstition bias.
Use setup and go to set the model up and begin running it. Red-patch-percentage controls how many of the patches become red. Number-of-cats sets the number of cats created on setup. Danger? controls whether or not the humans run away from cats when they are superstitious (simulating that the humans are afraid of red patches and would therefore avoid anything causing them. Memory-length controls how many of their recent cat sightings are remembered by humans. Initial-average-alpha controls the mean of the normal distribution of alphas among the humans. Other-human influence controls how much humans adjust their alphas when another human becomes superstitious or not nearby or when they see at least one superstitious or not superstitious human nearby. Superstition-influence-bias determines how much more humans adjust their alpha based on superstitious humans than based on non-superstitious humans.
As you can see, with the default values the population becomes superstitious most of the time, or ends up in a "rut". After some time regardless, the population stops changing its beliefs overall. Also notice how the humans who are avoiding the cats tend to group together.
Try turning off danger and seeing if you can adjust the other sliders to still produce a superstitious population. It becomes almost impossible with realistic settings. Another intersting effect is increasing the percentage of red patches or the number of cats even by a small amount. Once again, it prevents the population becomming superstitious.
One very intersting effect is increasing the percentage of red patches while the model is running. Often, this leads to a large jump in superstitious humans, and sometimes it's impossible to revert this jump.
A potential extension of this model is to improve the communication model. This could include incorperating a network so that humans speak to their friends about their beliefs. Another potential change could be using alpha values to determine how much humans influence each other, instead of just superstitious?.
Another extension could be the incorperation of different types of humans, like skeptics with low alpha values who don't easily shift their alpha values. It could be interesting to see how much impact these skeptics would have, and whether or not they would eventually be convinced.
This model makes extensive use of lists. First, lists are used with fput and bl in order to create a deque like data structure, where new memories are added to the top as old memories are removed from the bottom. Another use of lists is in the probability-list, which follows the rule ((item n list) = (memory-length choose n)). This is done by using n-values to create a list of numbers, foreach with a local value to turn that into a list of factorials, and map to use that list of factorials in numerous iterations of the binomial equation. Creating global mathematic values isn't something that occurs very frequently in models, but it makes sense to skip the factorial step being computed every time in this model.
Rumor mill is a related simulation of the spread of potentially false information. Another example is the Belief Diffusion model available in the modeling commons.
Cosmides, L., Tooby, J.: Are humans good intuitive statisticians after all? Rethinking some conclusions from the literature on judgment under uncertainty. Cognition 58, 1–73 (1996)
Beck, J., Forstmeier, W., 2007. Superstition and belief as inevitable byproducts of an adaptive learning strategy. Hum. Nat. 18, 35.
Wilensky, U. (1999). NetLogo [computer software]. Evanston, IL: Center for Connected Learning and Computer-Based Modeling, Northwestern University. http://ccl.northwestern.edu/netlogo .