Superstition

No preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Model group MAM-2016 | Visible to everyone | Changeable by the author
Model was written in NetLogo 6.0-M5 • Viewed 297 times • Downloaded 26 times • Run 0 times
Download the 'Superstition' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

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 grow than "people just don't understand statistics." It assumes humans are capable of running correct statistical experiments, and that they simply have a lower standard for what is "improbable" than statisticians.

HOW IT WORKS

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 long 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.

HOW TO USE IT

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.

THINGS TO NOTICE

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.

THINGS TO TRY

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.

EXTENDING THE MODEL

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.

NETLOGO FEATURES

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.

RELATED MODELS

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.

CREDITS AND REFERENCES

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 .

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

 breed [cats cat]
breed [humans human]

globals [number-superstitous probability-list number-of-switches human-influence-range belief-influence]
humans-own [alpha superstitious? red-count cat-sighting-memory introduced?]

to setup
  clear-all
  reset-ticks
  set human-influence-range 5
  set number-of-switches 0
  set belief-influence 24
  set-default-shape humans "person"
  set-default-shape cats "wolf"
  setup-consideration-math
  create-cats number-of-cats
  [
    set color gray
    setxy random-xcor random-ycor
  ]
  create-humans 75
  [
    set color blue
    set introduced? false
    set cat-sighting-memory n-values memory-length [0] ;; Start by remembering no red patches under cats
    setxy random-xcor random-ycor
    set alpha random-normal initial-average-alpha 5
    set superstitious? false
    set red-count 1 ;; Avoids starting out with unrealistic probabilities, defaults to .33 or .66 for red-probability
  ]
end 

to go
  color-patches
  ask cats [
    cat-wiggle
  ]
  ask humans [
    wiggle
    adjust-alpha
    look
  ]
  tick

  ;set c c + count patches with [pcolor = red and any? cats-here] / count patches with [pcolor = red]
  ;set true-p c / ticks
  ;;set avg-alpha (sum [alpha] of n-of 20 humans) / 20

  set number-superstitous count humans with [superstitious?]
end 

to cat-wiggle ;;cat procedure
   ;;cats move more slowly than humans, so that humans probably don't see the same cat twice
  rt 30
  lt 30
  fd .1
end 

to color-patches
  if ticks mod 50 = 0 [
    ask patches [
      ifelse random 100 < red-patch-percentage
      [set pcolor red]
      [set pcolor black]
    ]
  ]
end 

to adjust-alpha ; human procedure
  if any? humans in-radius human-influence-range with [superstitious?]
  [
    set alpha alpha + other-human-influence
    set introduced? true
  ]
  if introduced? and not any? humans in-radius human-influence-range with [superstitious?]
  [
    set alpha alpha - other-human-influence / superstition-influence-bias
  ]

  if alpha < 0 [set alpha 0]
  if alpha > 100 [set alpha 100]
end 

to wiggle ; human procedure
  ifelse superstitious? and danger?
  [face max-one-of cats [distance self]
    rt 180
    rt random 45
    lt random 45
    fd 3]
  [
  rt random 90
  lt random 90
  fd 3]
end 

to look
  if any? neighbors with [pcolor = red] [set red-count red-count + 1]
  if any? neighbors with [any? cats-here] [
    let patches-sighted count neighbors with [pcolor = red and any? cats-here]
    ifelse patches-sighted = 0 and superstitious?
    [ if random 100 > alpha [
      set cat-sighting-memory bl fput count neighbors with [pcolor = red and any? cats-here] cat-sighting-memory
    ]]
    [set cat-sighting-memory bl fput count neighbors with [pcolor = red and any? cats-here] cat-sighting-memory] ;;Remembers the danger of the patch, or 0 if there aren't any red patches under cats
    consider
  ]
end 


;; Calculates the probability of having seen n or more red patches out of memory-length viewings by starting with the probability of 0 or more and removing the probability of 0-(n-1) using a binomial distribution.

to consider ;human procedure
  let p 1.0   ;Represents probability 0 or more
  let n 0
  let danger-impression 0
  let red-probability red-count / (ticks + 3 )
  foreach cat-sighting-memory [   ; Subtracts probability of seeing n patches when memory contains n+1 cases of seeing a patch
    if ( ? >= 1)
    [ set p p - ((item n probability-list) * (1 - red-probability) ^ (memory-length - n) * (red-probability) ^ n )
      set n n + 1
    ]
    set danger-impression danger-impression + ? - 1
  ]

  ifelse p * 100 <= alpha + danger-impression / memory-length
    [
      if not superstitious? [
        set number-of-switches number-of-switches + 1
        set alpha alpha + belief-influence
        set cat-sighting-memory n-values memory-length [1]
        set superstitious? true
        set color orange
        ask humans in-radius human-influence-range [set alpha alpha + other-human-influence]
      ]

    ]
    [
      if superstitious? [
        set number-of-switches number-of-switches + 1
        set superstitious? false
        set color blue
        ask humans in-radius human-influence-range [set alpha alpha - other-human-influence]
        set alpha alpha - belief-influence]
      ]
end 

;; Creates a list where [(item n list) == (memory-length choose n)]
;; seperated to clean up setup code and remove complicated math from it

to setup-consideration-math ;observer procedure
  set probability-list n-values (memory-length + 1) [?]
  let factorial-list (list)
  let factorial 1
  foreach probability-list [
    if ? > 0 [
      set factorial factorial * ?
    ]
    set factorial-list lput factorial factorial-list
  ]
  set probability-list map [(item (memory-length) factorial-list)/((item ? factorial-list) * (item ((memory-length) - ?) factorial-list))] probability-list
end 

There are 5 versions of this model.

Uploaded by When Description Download
Christopher Hartman over 9 years ago Tiny default value switch Download this version
Christopher Hartman over 9 years ago Final Model Download this version
Christopher Hartman over 9 years ago Updated to include memory for humans Download this version
Christopher Hartman over 9 years ago Added memory to human and danger to patches Download this version
Christopher Hartman over 9 years ago Initial upload Download this version

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.