Minority belief spread
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model tries 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
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 are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Minority belief spread.png | preview | Preview for 'Minority belief spread' | over 7 years ago, by thouraya Bchir | Download |
This model does not have any ancestors.
This model does not have any descendants.