Contagion on a Grid

Contagion on a Grid preview image

2 collaborators

Default-person Darin England (Author)
Default-person Amanda Page (Team member)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.1.1 • Viewed 134 times • Downloaded 17 times • Run 0 times
Download the 'Contagion on a Grid' 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 model is an implementation of best-response decision-making when players are arranged on either a line or a grid. Each agent can choose one of two possible actions:

action 0 or action 1. Each agent will attempt to maximize her own payoff by coordinating her action with the actions of her neighbors. The purpose of the model is to understand the conditions under which all agents end up taking action 1 (contagion).

## HOW IT WORKS

Agents play a coordination game with each neighbor. When two neighbors each take action 0, the payoff to each is q. When two neighbors take action 1, the payoff to each is 1-q. The payoff for miscoordination is zero. In other words, each pair of agents that are connect by an edge play the following two-person game.

```

0 1

------------------

0 | q,q | 0,0 |

1 | 0,0 | 1-q,1-q |

------------------

```

Before taking an action, agents check to see how many of neighbors are taking action 1. Each agent then chooses the action (either 0 or 1) that will maximize her own total payoff. Initially all agents are set to take action 0. The user can select which agents will (at least initially) take action 1.

Contagion (when all agents end up taking action 1) only occurs under certain conditions. For example, for agents arranged along a line (1-dimension), contagion can only occur when q <= 1/2. In 1-dimension the threshold of 1/2 is called the contagion threshold, the largest value of q for which contagion is possible (please see the article by Morris that is referenced below). Contagion is also possible only when certain agent sets are intitially taking action 1. In 1 dimension, contagion will occur when two neighboring agents initially take action 1 (and q <= 1/2).

The color of an agent indicates which action is currently beging taken. Black indicates action 0 and white indicates action 1.

## HOW TO USE IT

The q slider sets the payoff when agents coordinate on action 0. The DIMENSION chooser sets the grid to be either 1 or 2 dimensions.

The SELECT NODES button allows the user to select agents with the mouse. The selected agents will take action 1 (at least initially).

SETUP resets all agents to take action 0.

When GO ONCE is pressed, agents play the coordination game one time. Pressing GO causes the agents to play the game repeatedly (at each tick).

## THINGS TO NOTICE

Under certain starting conditions that actions of all agents stop changing after some number of rounds. This means that agents have no incentive to switch their action. In other words, an equilibirium has been found. Under other conditions, equilibrium does not occur. We note that in this model agents are always allowed to switch their action. This differs from much of the literature where once an agent switches from action 0 to action 1, she is not allowed to switch back to action 0.

## THINGS TO TRY

Try to find conditions under which contagion occurs. In 1 dimension, contagion will occur when two neighboring agents initially take action 1 (and q <= 1/2). Are there other configurations of agents initially taking action 1 that will lead to contagion. What about 2 dimensions.

## EXTENDING THE MODEL

For the 2 dimensional grid in this model, each agent has four neighbors. One could modify the grid so that the "diagonal" agents are also neighbors (each agent would have eight neighbors).

Try implementing the contagion model on a tree.

Try implementing the contagion model on other types of networks.

## NETLOGO FEATURES

Networks are represented using turtles (nodes) and links. The user is able to use the mouse to select the agents that initially take action 1.

## RELATED MODELS

Language Change

## CREDITS AND REFERENCES

This model is an implemetation of the example described in Morris (2000), "Contagion", Review of Economic Studies: Vol 67, pp 57-78.

## HOW TO CITE

If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

* England, D. and Page, A. (2020). NetLogo Contagion on a Grid.

https://github.com/bx549/ABM

Please cite the NetLogo software as:

* Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

## COPYRIGHT AND LICENSE

Copyright 2020 Darin England

![CC BY-NC-SA 3.0](http://ccl.northwestern.edu/images/creativecommons/byncsa.png)

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Comments and Questions

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

Click to Run Model

; a model for contagion in 1 or 2 dimensions
; this model corresponds to the following article:
; Stephen Morris, Contagion, Review of Economic Studies, Vol 67, 2000

breed [nodes node]

nodes-own [
  action        ; action (either 0 or 1)
  orig-action   ; each person's initially assigned action
  action-1-sum  ; number of neigbors that will take action 1 (or based on beliefs)
]

to setup
  clear-all
  set-default-shape nodes "circle"
  ask patches [ set pcolor gray ]
  ifelse dimension = 1 [
    make-nodes-1
  ] [
    make-nodes-2
  ]
  distribute-actions
  create-network
  reset-ticks
  ;action-dbg
end 

to make-nodes-1 ; create the nodes for a 1-dimensional lattice
  foreach (range -40 41 5) [ i ->
    create-nodes 1 [
      set xcor i
      set ycor 0
      set size 2
      set action 0
      set color black
    ]
  ]
end 

to make-nodes-2 ; create the nodes for a 2-dimensional lattice
  foreach (range -40 41 5) [ i ->
    foreach (range -40 41 5) [ j ->
      create-nodes 1 [
        set xcor i
        set ycor j
        set size 2
        set action 0
        set color black
      ]
    ]
  ]
end 

to distribute-actions ; initialize nodes to start with action 0
  ask nodes [
    set action 0
    set orig-action action
    update-color
  ]
end 

to create-network ; create links to neighbors
  ask turtles [
    let nbrs other turtles in-radius 5
    ; other omits the turtle itself
    create-links-with nbrs [ set color white ]
    ; only one undirected link between any two turtles is created
  ]
end 

to update-color
  ; nodes that take action 0 are black, action 1 are white
  set color ifelse-value action = 0 [black] [white]
end 

to go
  ; in the ask commands below the order of node exection is random, hence the separate steps
  ask nodes [ check-neighbors ] ; first all nodes note the actions of their neighbors (or form beliefs)
  ask nodes [ take-action ]     ; then all nodes take the action with the highest expected payoff
  ask nodes [ update-color ]
  tick
  ;action-dbg
end 

to check-neighbors
  set action-1-sum sum [action] of link-neighbors
end 

to take-action
  ; an agent will take the action that maxmizes the sum of her payoffs
  ; from the interactions with each of her neighbors.
  ; action 1 is a best response to the actions of her neighbors if
  ; at least proportion q of her neighbors choose action 1.
  let num-neighbors count link-neighbors
  set action ifelse-value (action-1-sum / num-neighbors >= q) [1] [0]
end 

to action-dbg  ; debugging, show actions of all nodes
  foreach sort-by[ [a b] -> [xcor] of a < [xcor] of b ] nodes [ i ->
    ask i [
      let num-neighbors count link-neighbors
      show (action-1-sum / num-neighbors)
    ]
  ]
end 

to select-nodes ; use the mouse to select which nodes take action 1
  if mouse-down? [
    ask turtles with [distancexy mouse-xcor mouse-ycor < 2] [
      set action 1
      update-color
      display ; update the display
    ]
  ]
end 

There are 2 versions of this model.

Uploaded by When Description Download
Darin England over 4 years ago Edit to info tab Download this version
Darin England over 4 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Contagion on a Grid.png preview Preview image over 4 years ago, by Darin England Download

This model does not have any ancestors.

This model does not have any descendants.