Newcomb communicative acts

No preview image

1 collaborator

Default-person Hannes Bruns (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.0.1 • Viewed 262 times • Downloaded 33 times • Run 0 times
Download the 'Newcomb communicative acts' modelDownload this modelEmbed this model

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


General information

This is a model I used in my bachelor thesis entitled:

Agentenbasierte Simulation in der Sozialwissenschaft. Die Modellierung von Extremismus in Meinungsdynamiken.

(in english: Agentbased simulation in social science. The modelling of extremism in opinion dynamics.)

Basically it's a multidimensional version of a deffuant-style bounded confidence opinion dynamics model. (Deffuant et al. 2000) The design is based on the article "An Approach to the Study of Communicative Acts" by TM Newcomb (1953). There is an extremism rule added. It is based on the simplified version of the relative agreement model (Deffuant et al. 2002) presented by Lorenz (2012).

Interaction rules

Pairs of Agents are randomly picked. They change their opinion according to the "opinion-change" variable (see below) if the average of the differences of their opinions in ALL dimensions is below the value of eps. The opinion modification appears in just ONE dimension that is randomly picked.

This sequence is repeatet (number of agents * number of opinion-dimensions) times per tick.

Also there is an extremism rule. Agents that have a very low or very high opinion in dimension one become extremists. They are characterized by the behavior not to change their opinion in this dimension. In all other dimensions they act normal. The variable extremism-range specifies how high or low the opinion must be to become an extremist.

Elements on the interface tab

num-agents: Selects the number of agents

num-ops: Selects the number of opinons every agent has

eps: Selects the confidence bound

extremism-range: Selects the width of the margins where the extremist? variable set true

opinion-change: Selects different rules for a pair of agents to change their opinion. The rules are:

                       one changes complete:   Agent A adopts the opinion of
                                               agent B. Agent B doesn't change. 

                       both change half:       Agent A and B meet at the average 
                                               of their opinions

visuals: If activated, a visualisation of the dynamic appears in the world. Notice that this is computationally intensive.

The visualisation in the world gives you the opportunity to track the behaviour of the model on a very basic level. The opinion dimensions are stacked. Every pink dot is one opinion. If the opinion is -1, the dot is on the left border of the world, if it's 1 the dot is on the right border. The grey lines connect the dots that belong to the same agent.

It is hardly possible to see the size of the clusters in the world. Therefore the are a number of plot windows plotting histograms of the deviation of opinions in the dimensions. The dimensions they are plotting are listed in the title of the plot window. The lower dimension is plottet as red bars, the higher dimension is plotted as green lines. The dimension one is the upmost dimension in the world view.

The monitor "proportion-extremists" shows the proportion of extremists in the overall population. It can gain values between 0 and 1.

The monitor "distribution-extremists" calculates the number of extremists with a very high opinion minus the number of extremists with a very low opinion, divided by the overall number of extremists. If abs(opinion)>(1-extremism-range) is true, the agent becomes an extremist.

Additional reporters for behaviour space experiments

The reporter "change-occured?" reports false if the opinion profile did not change since 1000 ticks. This can be used to stop runs that reached a stable state.

The reporter "format" creates a string out of the agents current and initial opinion profiles with all values seperated by comma. The data is organized in the following way:

a(X, Y ,Z) stands for opinion Y of agent X. Z can either be c for the current opinion Y of agent X or i for the initial opinion.

the string then looks like:

"a(1,1,c), a(1,2,c),..., a(1,5,c), a(2,1,c),..., a(num-agents,5,c), , ,
a(1,1,i),a(1,2,i),..., a(1,5,i), a(2,1,i),..., a(num-agents,5,i)"

If there are less than 5 opinion dimensions, the missing values are filled with "NA".

References

Deffuant, Guillaume; Neau, David; Amblard, Frederic und Gerard Weisbuch (2000): Mixing beliefs among interacting agents In: Advances in Complex Systems, Vol. 3, 87 - 98.

Deffuant, Guillaume; Amblard, Frederic; Weisbuch Gerard und Thierry Faure (2002): How can extremism prevail? A study based on the relative agreement interaction model In: Journal of Artificial Societies and Social Simulation, Vol. 5 (4)

Lorenz, Jan (2012): Zur Methode der agenten-basierten Simulation in der Politikwissenschaft am Beispiel von Meinungsdynamik und Parteienwettstreit In: Braeuninger, Thomas; Baechtiger, Andre und Susumu Shikano (Hrsg.): Jahrbuch fuer Handlungs- und Entscheidungstheorie. Band 7: Experiment und Simulation. VS Verlag fuer Sozialwissenschaften

Newcomb, Theodore M.(1953): An approach to the study of communicative acts. In: Psychological Review, Vol. 60 (6), 393-404

Comments and Questions

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

Click to Run Model

globals[
  proportion-extremists
  distribution-extremists
  change?
  prev-op
  initial-profile
  ]


breed [agents agent]
breed [points point]  ;; the points are used for visualisation only and don't affect the model's dynamics


agents-own[
  op            ;; a list that holds the opinions of the agent 
  extremist?    ;; a binary value that is set true if the agent's opinion is in the extremism-range
  ]

to setup 
  clear-all
  reset-ticks
  create-agents num-agents [
    set op (list) 
    repeat num-ops [set op lput (random-float 2 - 1) op]
    set hidden? true
    ifelse (abs (item 0 op) > 1 - extremism-range) [set extremist? true][set extremist? false]       
    ]
  
  visualise
  extremism-makro
  mk-initProfile
  set prev-op map [precision ? 2] reduce sentence map  [[op] of ?] sort agents ;; this is important for the change-occured? reporter
  set change? true
end 

to go
  repeat num-agents * num-ops[ ask one-of agents [update-opinion]]
  if ( visuals) [visualise]
  extremism-makro
  tick 
end 

to update-opinion
  ;;turtle procedure
  ;;makes the agents change their opinion values
  
  let i random num-ops
  let B one-of other agents
  let B-op [op] of B
  let AB attraction B-op
  

  if (AB )[
    if (opinion-change = "both change half")[
      let new-op (item i op + item i B-op) / 2
      
      if (not(extremist? and i = 0) )[
          set op replace-item i op (new-op)  
          if (abs (item 0 op) > 1 - extremism-range) [set extremist? true]
          ]
      
      ask B [
        if (not(extremist? and i = 0) )[
          set op replace-item i op (new-op)  
          if (abs (item 0 op) > 1 - extremism-range) [set extremist? true]
          ]
        ]
      ]

    if (opinion-change = "one changes complete")[
      if (not(extremist? and i = 0) )[
          set op replace-item i op (item i B-op)  
          if (abs (item 0 op) > 1 - extremism-range) [set extremist? true]
          ]
      ]
    
  ]  
end 

to-report attraction [liste]
  ;; this reporter calculates the attraction between two agents based on the 
  ;; average of the differences between their opinions in all opinion-dimensions 
 
  
  let i 0
  let erg 0
  repeat num-ops [
    set erg erg + abs(item i op - item i liste)   
    set i i + 1
    ]
  report erg / num-ops < eps
end 

to visualise
  ;; creates the visualisation in the world window. For every opinion of every agent 
  ;; a point is created and set to x coordinates of the world. the different dimensions are stacked to the y axis 
  
  ask points [die]
  foreach sort agents[
    let i 0
    let prev 0 
     create-points num-ops
    [
      set color 125
      set shape "dot"
      if (prev != 0)[create-link-with prev]
      setxy ([item i op] of ? * 9)  ((num-ops - i - 0.5) / num-ops) * max-pycor   
      set i i + 1 
      set prev self]
    
    ]
end 

to extremism-makro
;;calculates the output of the monitors in the interface tab
set proportion-extremists count agents with [extremist?] / num-agents 
ifelse (proportion-extremists != 0)[
  set distribution-extremists (count agents with [extremist? and item 0 op > 0] - count agents with [extremist? and item 0 op < 0]) / count agents with [extremist?]
][set distribution-extremists "NA"]
end 

to-report change-occured?
  ;; this reporter reports false if no change occured for more than 1000 ticks. It is used for behaviour space experiments.
 
  if (ticks mod 1001 = 1000)[
    
    let op-list map [precision ? 2] reduce sentence map  [[op] of ?] sort agents
    let i 0
    
    set change? false
    
    foreach op-list[
      if  (? != item i prev-op) [set change? true]
      set i i + 1] 
 
  set prev-op op-list
  ]  
  report change?
end 

to mk-initProfile
   set initial-profile (list)
  foreach sort agents[
    set initial-profile lput (map [precision ? 2][op] of ?) initial-profile
    repeat 5 - num-ops[set initial-profile lput "NA" initial-profile]]
end 

to-report format
  ;;This reporter organizes the data for statistical analysis.
  let current-profile (list)
  foreach sort agents[set current-profile lput (map [precision ? 2][op] of ?) current-profile
    repeat 5 - num-ops[set current-profile lput "NA" current-profile]]
  
  set current-profile  reduce sentence current-profile
  set initial-profile  reduce sentence initial-profile
  report (word txt current-profile ",," txt initial-profile)
end 

to-report txt [liste]
  let text ""
  foreach liste [set text (word text  ? ",")]
  report text 
end 





















There is only one version of this model, created almost 13 years ago by Hannes Bruns.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.