Correcting Information - delay and media effects

Correcting Information - delay and media effects preview image

1 collaborator

Default-person Kjirste Morrell (Author)

Tags

networks 

Tagged by Kjirste Morrell about 7 years ago

social networks 

Tagged by Kjirste Morrell about 7 years ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 934 times • Downloaded 50 times • Run 0 times
Download the 'Correcting Information - delay and media effects' 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 looks at the correction of false information in social networks, with variants for different media environments. Information spreads within the network via both broadcast and social influence. Some nodes, called "researchers" which represent either people or organizations, are more resistant to false information and do not adopt it. Since time is required to notice and correct false information, researcher nodes initially have no effect on the spread or correction of information, but exert influence after a user-modifiable delay.

Diffusion of information in this model is based on the Bass model. Three different variants are offered for handling of the broadcast influence component: uniform and affected by node consensus, biased with an irregular shape, and biased with two large regions. Initially broadcast influence only affects adoption of false information. After research-delay ticks have passed, broadcast influence affects both adoption and correction, the effect in either case depends on the broadcast variant chosen.

Changing views (adoption/correction) can occur for regular nodes, but resistance to belief modification is modeled by reducing the likelihood of changing belief after either adoption or correction. The model can be run with or without re-adoption allowed after correction.

Different network structures can also be investigated (random, preferential attachment, Watts-Strogatz small world).

HOW IT WORKS

The SETUP procedure creates a network of the type selected in "network-type" and assigns patches properties used to simulate the media environment, if either "media bias" variant is chosen. Nodes in the network are then assigned to be "regular" or "researcher." The fraction of nodes selected as "researchers" can be modified in the interface. Researchers are resistant to adopting false information, but there is a delay before their influence is included in the social network. The length of this delay can be modified with the research-delay slider. The setup procedure also initializes global variables.

The GO procedure recalculates global variables and handles the spread of information through the network. Once the research-delay has expired, nodes can correct their information. Nodes that have already adopted the false information can correct it but this is more difficult than correcting information prior to adoption. The degree to which views are likely to change can be modified with the "openness-to-change" slider. For regular nodes, both adoption and correction are open to change. (Researchers do not adopt.) The model can be run with regular nodes either permitted or restricted from re-adopting once corrected.

The RESET procedure resets the adoption pattern but leaves the network links and node types in place.

HOW TO USE IT

Inputs

Prior to starting the model, set the variant choice, number of agents, network type and parameters. The parameters at the top of the interface are:

VARIANT: The media environment can be one of:

  • uniform: uniform broadcast influence, after research-delay this is proportional to the percent of nodes that have adopted or corrected information
  • irregular media bias: broadcast media exerts greater influence toward adoption or correction, based on patch voting and represented by patch color. (green: correction, orange: adoption)
  • media bias - block: as with "irregular media bias," but patch y location determines setting.

INITIAL-GREEN-PCT: Sets the percetage of patches which are green (media bias toward correction) in the media bias variants. In the irregular version, this is the intial percent but is modified by voting.

NETWORK-TYPE: Network types can be Preferential Attachment, Random, or Small Worlds. Small worlds uses the Watts-Strogatz model. All networks use the nw extension.

NETWORK-DENSITY: This slider is relevant only for Random networks and is the connection probability for each node. (See nw:generate-random)

NEIGHBORHOOD-SIZE: Used in the small worlds (Watts-Strogatz) network and governs the number of initial links for each node. (See nw:generate-watts-strogatz)

REWIRE-PROBABILITY: Used in small worlds (Watts-Strogatz) network and is probability of each link rewiring (See nw:generate-watts-strogatz)

The next set of sliders govern how many nodes are in the network and the fraction which are researchers. Don't change these if resetting adoption and running on the same network.

NUM-AGENTS: This slider sets the number of nodes in the network.

RESEARCHER-FRAC: Sets the fraction of NUM-AGENTS which are researchers. These will be randomly selected among the nodes. They will be represented by circles.

The lower set of parameters can change between runs on the same network.

RE-ADOPTION: Choose whether to allow regular nodes to readopt after correction.

SOCIAL-INFLUENCE: Degree of influence link neighbors have on individual adoption or correction.

BROADCAST-INFLUENCE: Degree of influence broadcast media have on individual adoption or correction.

RESEARCH-DELAY: Sets the number of ticks before correction begins to counter the adoption of false information.

OPENNESS-TO-CHANGE: This slider sets how likely a node is to changing views once either adopted? or corrected? are true. A value of 1.0 indicates that nodes are open to change, a value of 0 indicates high resistance to view modification. In this version, regular nodes have an individual "change" property which are assigned in an exponential distribution using "openness-to-change" as the mean.

STOP-TICKS: This sets a back-up stop condition for the model. The model will also stop if all nodes are corrected. Since researcher nodes do not adopt, the model does not stop when all nodes have adopted.

SETUP: Sets up the network and node breeds and initializes global variables.

GO: Runs the model adoption and correction and updates global variables.

RESET: Keeps the network, media environment, and node breeds the same, but resets adopted? and corrected? (other than for researchers).

Outputs

%ADOPTED: Plots the percent of the nodes who have adopted over time.

CORRECTION BASIS: Plots the percent of regular nodes who have corrected based on broadcast influence and based on social influence.

PEAK % ADOPTED: Percent of nodes at peak adoption

TICKS TO PEAK ADOPTION: Ticks at which peak adoption first occurs

TICKS TO 50% OFF PEAK: Ticks until the adoption rate drops below 50% of its peak

AGENTS

There are two breeds of turtle, or node, in this model, "researchers" and "regulars."

Regular nodes can adopt information or correct information. Regular nodes are represented by person shapes. Regular nodes have an individual "change" property; the values for these are exponentially distributed with the mean set by the "openness-to-change" slider. Researchers have adopted? and corrected? properties but do not adopt and will always have correct information. Researchers have a research-delay property which affects when they begin to exert influence in the network. Researchers are represented by cyan circle shapes in the network.

Nodes that have not adopted or corrected information are white. Nodes that have adopted are represented by red or pink, depending on whether they adopt based on broadcast or social influence. Nodes that have corrected are blue if corrected based on broadcast, sky if corrected based on social influence.

Patches are also agents in this model, though only affecting the media-bias variants.

Two properties are defined for patches, "vote" and "total". Vote is used to decide patch color, with 0 being light green and 1 light orange, as well as how the patch affects broadcast influence. Total is used in the irregular media bias variant during the setup phase and affects the vote property of the patch. In the irregular media bias variant, patches vote and change color, modifying the shape of the media environment.

There are also links in the network, which are established according to the network type. The links do not have specific properties or actions.

ENVIRONMENT

The environment consists of one of three network types and one of three broadcast media environments.

Network types can be:

  • preferential attachment
  • random
  • Watts-Strogatz small world

The media environment can be:

  • uniform: all nodes have the same broadcast influence, which initially affects adoption only. After research-delay has expired, broadcast influence affects adoption and correction proportional to the overall percentage of nodes which have adopted or corrected information.
  • irregular media bias: in this variant, the media environment is setup during the setup procedure using a voting procedure similar to that in the "Voting Sensitivity Analysis" model in the model library. Once patch color and vote have been finalized, they are used during the go procedure to modify broadcast influence. Nodes on green patches will have a bias toward correction (after research-delay) while nodes on orange patches will have a bias toward adoption. The color of surrounding patches also affects the extent of the bias.
  • media bias - block: this variant is only different from the "irregular media bias" variant during setup and functions the same as it during the go procedure and adoption or correction. During setup, patch color (and vote) are set according to patch y coordinate, depending on the initial-green-pct, with green patches toward the top of the world.

ORDER

Setup:

  1. Clears everything
  2. Sets up default breed shapes
  3. Sets up network
  4. Sets up media environment, if relevant
  5. Assigns breed to nodes
  6. Initializes globals
  7. Restarts ticks

Go:

  1. Updates global values
  2. Checks for stop conditions
  3. If research-delay has passed, asks nodes which do not have corrected? if they want to correct information.
  4. If re-adoption is not allowed, asks nodes with neither corrected? nor adopted? if they would like to adopt.
  5. If re-adoption is allowed, asks nodes that have not adopted if they would like to adopt.
  6. Advances ticks

THINGS TO NOTICE

If re-adoption is off, try running with the ticks slowed down so that you can see the initial adoption spread through the network.

Correction is often slower than initial adoption, which corresponds to the difficulty in the real world of changing ideas once adopted. Some settings will result in correction occuring more quickly, both research-delay and openness-to-change make a difference here.

Some settings result in adoption persisting in parts of the network until stop-ticks (for stop-ticks in the 1000-5000 range).

The media bias settings can result in local groups that persist with a view that is different from consensus.

THINGS TO TRY

Oscillation in the adoption rate can occur when re-adoption is permitted. Keeping other parameters the same try both settings for re-adoption.

With the media bias variants, it's easier to see what regions are green or orange with the preferential attachment network.

EXTENDING THE MODEL

The patches/media environment could change as the network adoption rate changes.

A network model known to represent a real world social media environment could replace the networks generated here.

Research-delay could vary among researchers. Currecntly the individual delay property isn't fully used, but it could be used to allow researchers to affect correction and adoption of information on an individual schedule.

NETLOGO FEATURES

This model uses the Network extension (nw) to generate networks.

RELATED MODELS

Preferential attachment, Spread of disease, Virus on a network, Unit 4, Model 7 (Intro to Agent-Based Modeling, summer 2017, Santa Fe Institute, instructor was William Rand), Voting Sensitivity Analysis

CREDITS AND REFERENCES

Preferential Attachment model used for parameters in layout of preferential attachment network. Virus on a Network and Unit 4 models used as starting point.

This model was submitted as a student project for the Intro to Agent-Based Modeling class, summer 2017, offered by Santa Fe Institute and taught by William Rand.

Comments and Questions

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

Click to Run Model

extensions [ nw ]      ;;  Use the network extension

;; Used in outputs
globals [
  %adopted             ;; % turtles that have adopted incorrect information
  peak%                ;; peak % turtles that have adopted
  peakticks            ;; ticks before peak %adopted reached
  offpeakticks         ;; ticks before %adopted drops 50% from peak val
]

;; Version that has media environment represented by patches
patches-own
[
  vote   ;; my vote (0 or 1)
  total  ;; sum of votes around me
]

turtles-own[
  adopted?             ;; True indicates turtle has adopted incorrect information
  corrected?           ;; True indicates that the turtle has correected information
]

;; create 2 breeds of turtle
;; regulars - adopt based on broadcast and social influence
;; researchers are resistant to adoption and influence network only after a time delay
;; Initially had influentials as well, did not seem to add insight here.
breed [ regulars regular ]
breed [ researchers researcher ]

;; researchers have a time delay
researchers-own [ delay ]

;; regulars have individual openness-to-change
regulars-own [ change ]

;;---------------------------------------------
;; Main procedures (setup, go, reset)
;;---------------------------------------------

;; Setup procedure

to setup
  ca

  ;;set default shapes
  set-default-shape regulars "person"
  set-default-shape researchers "circle"

  ;; create network based on chooser
  setup-network

  ;; Setup media environment by setting patches
  ;; do in separate procedure
  ;; Only relevant in media bias variants
  if variant = "media bias - block" [
    setup-media-block
  ]
  if variant = "irregular media bias" [
    setup-media-voting
  ]


  ;; Set up the breeds of turtles
  ;; For now - define the researchers first
  ask n-of (researcher-frac * num-agents ) turtles [
    set breed researchers
    set corrected? TRUE
    set color cyan
    set delay research-delay   ; Researcher delay until active
  ]

  ; Set all other turtles to regulars for now
  ; Set propensity to change to a random number w exponential distribution
  ; and mean of "openness-to-change".
  ask turtles [
    if breed != researchers [
      set breed regulars
      set change random-exponential openness-to-change
    ]
  ]

  ;;  Initialize globals that should start at 0
  set peakticks 0
  set peak% 0
  set offpeakticks 0

  reset-ticks
end 

;; Go procedure

to go
  ;; Update globals
  set %adopted (count turtles with [ adopted? ] / count turtles)

  ;; Check if this is a peak for adoption
  peak-adopted

  ;; Check if %adopted has fallen to 50% of peak
  ticks-to-50%-off-peak


  ;; Stop if all the turtles have correct information, or if ticks to stop reached
  if ((ticks > stop-ticks) or (not any? turtles with [not corrected?] )) [
    stop
  ]

  ; first check for corrected? - this takes place only after research-delay
  if (ticks > research-delay) [
    ask turtles with [ not corrected? ] [
      correct
    ]
  ]

  ;; Have been running two possibilities, one where turtles can continue to change views
  ;; after correction of information, and one where they cannot re-adopt after correction
  if re-adoption = "no re-adoption" [
    ask turtles with [ not (adopted? or corrected?) ] [
      adopt
    ]
  ]
  if re-adoption = "re-adoption allowed" [
    ask turtles with [ not (adopted?) and not (breed = researchers) ] [
      adopt
    ]
  ]

  tick
end 

;; Reset network - starts with same network and same turtles are researchers

to reset-adoption
  ask turtles with [ adopted? ] [
    set color white
    set adopted? FALSE
  ]
  ask regulars with [ corrected? ] [
    set color white
    set corrected? FALSE
  ]
  clear-all-plots

  ;;  Set up globals that should start at 0
  set peakticks 0
  set peak% 0
  set offpeakticks 0

  reset-ticks
end 

;;---------------------------------------------
;; Procedures called by setup
;;---------------------------------------------

;; Setup the network based on chooser

to setup-network

  ;; random network - uses the network density slider
  if network-type = "random" [
    nw:generate-random turtles links num-agents network-density [
      set adopted? FALSE              ;; initialize adoption policy
      set corrected? FALSE            ;; initialize corrected?
      set color white
      set shape "person"
      setxy random-xcor random-ycor   ;; separate turtles spatially
    ]
    repeat 30 [ layout-spring turtles links 0.3 (world-width / 2 ) 1 ]
  ]

  ;; Preferential attachment network
  ;; preferential attachment doesn't use any of the sliders
  if network-type = "preferential" [
    nw:generate-preferential-attachment turtles links num-agents [
      set adopted? FALSE              ;; initialize adoption policy
      set corrected? FALSE            ;; initialize correction of info
      set color white
      set shape "person"
      setxy random-xcor random-ycor   ;; separate turtles spatially
    ]
    ;; Using Preferential Attachment model from library to help with layout
    ;; Use factor based on number of turtles to control the layout
    let factor sqrt count turtles
    repeat 300 [
    ;; Numbers here are from Preferential Attachment model - looked nicer
      layout-spring turtles links (1 / factor) (7 / factor) (1 / factor)
    ]
  ]

  ;; small worlds network - use the Watts-Strogatz model from the network extension
  ;; since that is more traditional small world structure than the small world generator
  ;; in the extension
  ;; Uses neighborhood-size and rewireprobability sliders
  if network-type = "small-world" [
    nw:generate-watts-strogatz turtles links num-agents neighborhood-size rewire-probability [
      set adopted? FALSE              ;; initialize adoption of info
      set corrected? FALSE            ;; initialize correction
      set color white
      set shape "person"
      setxy random-xcor random-ycor
    ]
    ;; try to get good layout
    repeat 300 [
      layout-spring turtles links 0.3 (world-width / 3) 3
    ]
  ]
end 

;; Media environment - setup by coloring patches
;; This version just colors a contiguous block of patches

to setup-media-block
  ;; Setup media environment in two blocks
  ;; Base green portion on height of world
  let green-y% (max-pycor - (world-height * initial-green-pct / 100))

  ;; Upper part of world set to green
  ask patches [
    ifelse pycor > green-y%
      [ set vote 0 ]
      [ set vote 1 ]
    recolor-patch
  ]
end 

;; This is from Voting Sensitivity Analysis, but not
;; doing exactly the same and not giving all the options
;; for different types of voting.

to setup-media-voting
  ;; First, set all the patches to something
  ask patches [
    ifelse random 100 < initial-green-pct
      [ set vote 0 ]
      [ set vote 1 ]
    recolor-patch
  ]
  ;; Want to set the media environment before start,
  ;; so loop through a few times here
  ;; alternatively, could do until no votes changed.
  ;; just in case, add a counter and a stop count
  let stop-count 100
  let counter 0
  loop [
    let any-votes-changed? FALSE
    ;; Patches total votes of neighbors
    ask patches [
      set total (sum [ vote ] of neighbors )
    ]
    ; Patches set votes based on neighbors
    ask patches [
      let previous-vote vote
      if total < 3 [ set vote 0 ] ;; if majority of your neighbors vote 0, set your vote to 0
      if total = 3 [
        set vote 0
      ]
      if total = 4  [
        set vote (1 - vote) ;; invert the vote if tied
      ]
      if total = 5 [
        set vote 1
      ]
      if total > 5 [ set vote 1 ] ;; if majority of your neighbors vote 1, set your vote to 1
      if vote != previous-vote [ set any-votes-changed? true ]
      recolor-patch
    ]
    set counter counter + 1
    ; Check if end conditions reached
    if not any-votes-changed? or counter = stop-count [ stop ]
  ]
end 

to recolor-patch  ;; patch procedure
  ifelse vote = 0
    [ set pcolor 58 ]   ; light green to avoid conflicting with turtle colors
    [ set pcolor 28 ]   ; light orange - avoiding blues and reds
end 

;; This procedure checks to see if the SETUP procedure sets up the model with
;; roughly expected numbers, given the value of the initial-green-pct slider

to check-setup
  let expected-green (count patches * initial-green-pct / 100)
  let diff-green (count patches with [ vote = 0 ]) - expected-green
  if diff-green > (.1 * expected-green) [
    print "Initial number of green voters is more than expected."
  ]
  if diff-green < (- .1 * expected-green) [
    print "Initial number of green voters is less than expected."
  ]
end 

;;---------------------------------------------
;; Procedures called by go
;;---------------------------------------------

;;  Adopt procedure

to adopt
  ;; Adoption could occur from broadcast influence
  let broadcast-adoption broadcast-influence

  if variant = "irregular media bias" or variant = "media bias - block" [
    ;; In this version, broadcast-influence environment is different depending on patch
    ;; Patch color green (58) corresponds to corrective influence,
    ;; patch color orange (28) corresponds to adoptive influence
    let near-adopt-pct (count neighbors with [ pcolor = 28 ] / 8 )
    let own-adopt 0
    ifelse pcolor = 28
      [ set own-adopt 1 ]
      [ set own-adopt 0 ]
    set broadcast-adoption ( broadcast-influence * 0.5 * (near-adopt-pct + own-adopt ) )
  ]
  if variant = "uniform" [
    ;; In this version, broadcast inflence is proportional to overall turtle consensus
    ;; after research-delay has passed, otherwise is just broadcast-influence value
    if ticks > research-delay [
      ;case where research now available
      set broadcast-adoption ( broadcast-influence * %adopted )
    ]
  ]
  if (random-float 1.0 < broadcast-adoption) [
      set adopted? TRUE      ;; adopt
      set corrected? FALSE
      set color red
  ]

  ;; Adoption could occur from social influence in local network
  ;; set up a few variables that are common to next ifelse
  let neighbors-adopted link-neighbors with [ adopted? ]
  let total-neighbors link-neighbors
  let adopt-influence 0

  if (count total-neighbors > 0)[
    set adopt-influence ((count neighbors-adopted)/(count total-neighbors))
  ]

  ;; If haven't adopted or been corrected - more easily influenced.
  ;; Once already have correct information - "openness-to-change" used to
  ;; model persistence of belief (make more difficult to alter view).
  ifelse not corrected? [
    if (random-float 1.0 < (social-influence * adopt-influence))[
        set adopted? TRUE
        set color pink
    ]
  ]
  [
    ;; this is the case where the turtle is corrected already and breed = regulars
    ;; Won't occur if re-adoption is not allowed
    if (random-float 1.0 < (social-influence * adopt-influence * change))[
        set adopted? TRUE
        set corrected? FALSE
        set color pink
    ]
  ]
end 

;;  correct procedure
;;  Regular turtles only get corrected information after delay tics have passed.
;;  Broadcast influence based on % of total turtles that have corrected informatio
;;  Social influence via neighbor links in
;;  network, links to researchers in this model

to correct
  let neighbors-corrected link-neighbors with [ corrected? ]
  let reg-total-neighbors link-neighbors with [ breed = regulars ]
  let correct-local-influence 0
  let broadcast-correction broadcast-influence
  let consensus-broadcast-influence (count turtles with [corrected?] / count turtles )

  if variant = "irregular media bias" or variant = "medai bias - block" [
    ;; Correction could occur from broadcast influence
    ;; In this version, broadcast-influence environment is different depending on patch
    ;; Patch color green (58) corresponds to corrective influence,
    ;; patch color orange corresponds to adoptive influence
    let near-correct-pct (count neighbors with [ pcolor = 58 ] / 8 )
    let own-correct 0
    ifelse pcolor = 58
      [ set own-correct 1 ]
      [ set own-correct 0 ]
    set broadcast-correction ( broadcast-influence * 0.5 * (near-correct-pct + own-correct ) )
  ]
  if variant = "uniform" [
    ;; Variant where corrective effect of media depends on consensus - initially few turtles
    ;; with corrected (only researchers)
    set broadcast-correction ( broadcast-influence * consensus-broadcast-influence )

  ]
  ;; Correction could occur from broadcast influence - base
  ;; broadcast influence extent on % turtles with that view
  if (random-float 1.0 < broadcast-correction ) [
      set adopted? FALSE
      set corrected? TRUE    ;; correct
      set color blue
  ]


  ;; Or correction by local social influence
  if count neighbors-corrected > 0 [
    ;;  the more corrected turtles, the more likely to adopt views
    set correct-local-influence (( count neighbors-corrected / count link-neighbors))

    ;; if haven't adopted, then more likely to correct.  Assign corrected? based
    ;; on weighting or on random variable
    if not adopted? [
      if (random-float 1.0 < social-influence * correct-local-influence ) [
        set corrected? TRUE
        set color sky
      ]
    ]

    ;; if have adopted, then more difficult to be corrected, use openness-to-change
    ;; as multiplier.  Can modify to see how this affects results.
    if adopted? [
      if (random-float 1.0 < social-influence * correct-local-influence * change) [
        set corrected? TRUE
        set adopted? FALSE
        set color sky
      ]
    ]
  ]
end 

;;  Procedures and reporters to update globals that are displayed in monitors

;;  Peak % adopted

to peak-adopted
  if %adopted > peak% [
    set peak% %adopted
    set peakticks ticks
    set offpeakticks 0
  ]
end 

;;  Ticks until drops 50% off peak.
;;  Might want to define this from when peak hit instead, right now it is from start.

to ticks-to-50%-off-peak
  if ((%adopted <= peak% / 2) and (offpeakticks = 0)) [
    set offpeakticks ticks
  ]
end 

There is only one version of this model, created about 7 years ago by Kjirste Morrell.

Attached files

File Type Description Last updated
Correcting Information - delay and media effects.png preview Preview for 'Correcting Information - delay and media effects' about 7 years ago, by Kjirste Morrell Download

This model does not have any ancestors.

This model does not have any descendants.