Minority belief spread

Minority belief spread preview image

1 collaborator

Default-person thouraya Bchir (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 144 times • Downloaded 12 times • Run 0 times
Download the 'Minority belief spread' 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 try to explore the spread of a belief from a minority to the majority, through a social network. It is inspired by the article "Minority Rules: Scientists Discover Tipping Point for the Spread of Ideas" at https://news.rpi.edu/luwakkey/2902.

Mainly, it tries to identify the tipping point reprensented by a critical percentage of initial believers, who are people with a new unshakable belief. This percentage have to be around 10% according to the article.

HOW IT WORKS

Every agent holds a belief, some of them have a constant new belief and the others are open to change their opinion. Then each time step (tick), agents will SPEAK and LISTEN to their neighbors, trying to exchange their opinions.

For this, we have the turtles-own property BELIEF to represent their opinion.

  • BELIEF = 0 -> means old opinion -> color WHITE
  • BELIEF = 1 -> means both of the two points of view -> color YELLOW
  • BELIEF = 2 -> means new opinion -> color MAGENTA

Each time step, agents will randomely SPEAK and LISTEN to their neighbors.

There are two kinds of agents :

  • CONSTANTS : are those who holds the minority fixed opinion
  • OPENS : are those who are able to change their opinion

Interactions are :

  • SPEAK : the current turtle will try to convince their neighbors (if they are OPENS), to to adopt its opinion, either by incrementing or by decrementing the value of BELIEF.

  • LISTEN : the current turtle (if it is OPEN) will try the change its own opinion according to its neighbors belief.

The envirnment is a social network, and some of its parameters as the number of nodes and its type are set by the user.

HOW TO USE IT

Use the sliders and the chooser to choose Initially PERCENTAGEOFBELIEVERS, a NUMBERTURTLES, a NETWORKTYPE and a CONNECTION_PROBABILITY.

  • PERCENTAGEOFBELIEVERS : is the number of initial constant belivers
  • NUMBER_TURTLES : sets the total number of turtles / exceptly for the small-world network type where the number is 256.
  • NETWORK_TYPE : sets the type of the network
  • CONNECTION_PROBABILITY : is a parameter used to set the random network

Then press SETUP to create the network. Press GO to run the model. The model will stop running once the percentage of believers reach one.

The model plots the percentage of believers versus time, which allows to compare how initial parameters impacts the evolution of the system.

THINGS TO NOTICE

The model can show two types of behavior depending on the initial parameters :

  • the minority belief can spread to the majority within a reasonnable time
  • the minority will not reach the majority in limited period of time

Also the Small-world network illustrates a tipping point around 10%.

THINGS TO TRY

Try to explore the model with a total number of turtles equal to 200, for percentage like 5% and 14%, using the small-world network.

EXTENDING THE MODEL

The model can be extended to model the co-existence of two types of constant believers, who will try to convince the rest of the population.

NETLOGO FEATURES

RELATED MODELS

CREDITS AND REFERENCES

By Thouraya BCHIR / tbchir@gmail.com

Main ideas are from the article @ https://news.rpi.edu/luwakkey/2902

Comments and Questions

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

Click to Run Model

extensions [nw]
turtles-own [ belief ]  ; can take three value 0, 1 or 2
Breed [constants constant]
Breed [opens open]

to setup

  ; the setup precedure will create a social network

  clear-all

  set-default-shape turtles "person"

  if network_type = "Random"  [ nw:generate-random turtles links Number_turtles  connection-probability ]
  if network_type = "Preferential-attachment" [nw:generate-preferential-attachment turtles links Number_turtles ]
  if network_type = "Small-world" [nw:generate-small-world turtles links world-width / 2 world-height / 2 2.0 false]
  if network_type = "Watts-strogatz" [nw:generate-watts-strogatz turtles links Number_turtles 2 0.1 [ fd 10 ]]

  ask turtles [
    setxy random-xcor random-ycor
    set color cyan
    set belief random 2
    if belief = 1 [set color yellow]
  ]

  ask n-of  ( Percentage_of_belivers * Number_turtles ) turtles [ set breed constants set color magenta  set shape "target"
                                                                  set belief 2]
  ask turtles with [breed != constants ] [set breed opens]
  repeat 30 [ layout-spring turtles links 0.2 5 1 ] ;; lays the nodes in a triangle
  reset-ticks
end 

to go

  ; the GO procedure will ask every turtle to SPEAK and LISTEN to its neighbors in random order

  ask turtles [

    ifelse random 2 = 1
   [
      speak
      listen
   ]
    [
      listen
      speak
    ]
  ]


  repeat 30 [ layout-spring turtles links 0.2 0.4 1 ] ;; lays the nodes in a triangle

  if ( count turtles with [color = magenta ] / count turtles ) = 1 [ stop ]   ; if the opinion spread to the total population then stop
  tick
end 

to speak

  ; for every neighbor who isn't a "CONSTANT" - the turtle will try to spread its opinion and for this it will change
  ; the "BELIEF" property of the neighbor to " 0, 1 or 2 " ( 0 means the turtle is adopting the ordinary belief, 1 means the turtle
  ; is holding both opinions and 2 means that the turtle holds the new belief

  if breed = constants [
  ask  in-link-neighbors with [ breed = opens]
     [
        if belief != 2 and random-float 1.0 < 0.1
          [
           set belief belief + 1
           if belief = 2 [ set color magenta ]
           if belief = 1 [ set color yellow]
          ]
     ]
  ]


  if breed  = opens [

    if belief = 2  and random-float 1.0 < 0.04
    [
      ask in-link-neighbors with [belief = 1 and belief = 0 ]
      [
        set belief belief + 1
        if belief = 1 [ set color yellow ]
        if belief = 2 [ set color magenta ]
      ]
    ]


    if belief = 0  and random-float 1.0 < 0.04
    [
       ask in-link-neighbors with [belief = 1 and belief = 2 ]
      [
        set belief belief - 1
        if belief = 1 [ set color yellow ]
        if belief = 0 [ set color white ]
      ]
    ]
  ]
end 

to listen

  let belief_list (list 3)     ; create and initialize a local list

  if breed = opens and random-float 1.0 < 0.04  [

      ask in-link-neighbors [
                              set belief_list fput belief belief_list      ; fullfil the "list" with the "belief" values of neighbors
                            ]

    ; the foreach instruction will read the belief values in "list" and impact the opinion of the current agent who's listening /
    ; here "belief" is the belief variable of the current agent and x the belief of the neighbor stored in the list
     foreach belief_list  [
      x ->  if ( x = 0  and belief != 0 ) [set  belief belief - 1  if belief = 0 [set color white] if belief = 1 [set color yellow] ]
            if ( x = 2 and belief != 2 ) [set belief belief + 1  if belief = 2 [set color magenta  ] if belief = 1 [set color yellow ]  ]
                          ]

                  ]
end 

to layout_r

   layout-radial turtles links (turtle 0)
end 

There is only one version of this model, created 3 months ago by thouraya Bchir.

Attached files

File Type Description Last updated
Minority belief spread.png preview Preview for 'Minority belief spread' 3 months ago, by thouraya Bchir Download

This model does not have any ancestors.

This model does not have any descendants.