SaraClifton-ReligiousAffiliationSwitching-EECS472

SaraClifton-ReligiousAffiliationSwitching-EECS472 preview image

1 collaborator

Default-person Sara Clifton (Author)

Tags

(This model has yet to be categorized with any tags)
Model group MAM-2016 | Visible to everyone | Changeable by group members (MAM-2016)
Model was written in NetLogo 6.0-M5 • Viewed 249 times • Downloaded 15 times • Run 0 times
Download the 'SaraClifton-ReligiousAffiliationSwitching-EECS472' 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 demonstrates the dynamics of religious affiliation switching. People claiming no religious affiliation constitute the fastest growing religious minority in many countries, including the United States (Martin 2006). In fact, the religious "nones" are the only group growing in all 50 US states (Kosmin 2009). Although many scholars attribute the decline of religious affiliation to generational changes, roughly half of the US population changes religious affiliation at some point in their life, often several times (Pew 2009). This suggests that religious affiliation shift can be modeled as social group competition, with different religious groups competing for members (Abrams 2011). Such models predict that religious coexistence is not a stable state; the unaffiliated group will grow until all organized religion has disappeared. Whether or not this comes to fruition, all people have a stake in the outcome.

HOW IT WORKS

Initially, COMMUNITY-SIZE agents are given a random unaffiliated utility sampled from a normal distribution with mean U-X and standard deviation U-X-VAR (taken to be 0 for initial tests). A proportion INITIAL-X of the population is unaffiliated and the rest are affiliated.

At each tick, affiliated agents switch to unaffiliated with probability TIME-SCALE $u_xx^a$, where $a$ is initially set to 1 to test agreement with \eqref{abramsds}. Unaffiliated agents switch to affiliated with probability TIME-SCALE $* (1-u_x)*(1-x)^a$.

At each tick, people switch affiliations according the previous transition probabilities. However, if an agent switches from affiliated to unaffiliated (or vice versa) in that time step, it will lose some affiliated friends, but it may gain a new unaffiliated friend.

Each time an agent switches from affiliated to unaffiliated, it calculates what proportion of its friends are unaffiliated. If that proportion is less than the MIN-FRIEND-SIMILARITY desired by all agents, the agent break ties with random affiliated friends until the MIN-FRIEND-SIMILARITY proportion is reached.

In addition to losing friends after switching from affiliated to unaffiliated, each agent might gain a new similarly affiliated friend proportional to his loneliness; in other words, the agent will make friends with the nearest similarly affiliated agent with probability NEW-FRIEND-CHANCE / (number-friends + 1). If an agent already has MAX-FRIENDS, it won't attempt to make more friends.

HOW TO USE IT

Using the sliders, choose the COMMUNITY-SIZE and the AVERAGE-NODE-DEGREE (average number of links coming out of each node).

If NETWORK? is on, a network is created based on proximity (Euclidean distance) between nodes. A node is randomly chosen and connected to the nearest node that it is not already connected to. This process is repeated until the network has the correct number of links to give the specified average node degree.

The INITIAL-X slider determines how many of the nodes will start the simulation unaffiliated.

The U-X and U-VAR-X sliders change the mean and standard deviation, respectively, of the distribution of initial unaffiliated utilities for agents.

Then press SETUP to create the network. Press GO to run the model.

The TIME-SCALE slide determines how fast the reactions happen. The AFFILIATION-POWER slider determines the exponent of the power law transition rate.

The MIN-FRIEND-SIMILARITY slide determines the minimum proportion of similarly affiliated friends desired by all agents. The NEW-FRIEND-CHANCE slider is the chance of making a new friend each time step if you have no friends. The MAX-FRIENDS slider determines how many friends an agent must have before it stops looking for more friends.

THINGS TO NOTICE

As the simulation runs, notice how the proportion of unaffiliated and affiliated members of the population changes. Do the group affiliation proportions settle into an equilibrium state?

Also notice how the number of links (friendships) changes over time. Are friendships mostly forming or breaking? How does that correlate with the population affiliation breakdown?

Finally notice how the visual representation of the network changes. The initial network is spacially clustered, but how does that change over time?

THINGS TO TRY

Try changing the distribution of utilities using the U-X and U-X-VAR sliders. How does this affect the final state?

Try changing the initial proportion of unaffiliated members INITIAL-X. Does this have any effect on the final outcome?

Try changing the AFFILIATION-POWER? See what the difference is on the equilibrium state for values above and below 1. How does the value change the shape of the affiliation proportion curves?

Try changing MIN-FRIEND-SIMILARITY and NEW-FRIEND-CHANCE. How does this affect the number of links over time? Does it impact the final state or the visual representation of the network?

EXTENDING THE MODEL

Try incorporating birth, death, and immigration into the model. Different affiliations may have different birth and death rates. Immigrants may have different religious affiliations from the current population.

NETLOGO FEATURES

This model does not use the NW extention, so I use layout-spring to make the network more visually appealing.

RELATED MODELS

The network setup is based on Uri Wilensky's Virus on a Network: http://ccl.northwestern.edu/netlogo/models/VirusonaNetwork

CREDITS AND REFERENCES

NetLogo Modeling Commons URL: http://modelingcommons.org/browse/onemodel/4620#modeltabsbrowseinfo

Abrams et al. paper: http://dmabrams.esam.northwestern.edu/pubs/Abrams%20Yaple%20and%20Wiener%20-%20Dynamics%20of%20social%20group%20competition---modeling%20the%20decline%20of%20religious%20affiliation%20-%20PRL%20107,%20088701%20(2011).pdf

Comments and Questions

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

Click to Run Model

;; TODO
;; 3. add birth/death
;; 4. add immigration

turtles-own
[
  unaffiliated-utility                                                  ;; utility of unaffiliation for individual
  affiliation                                                           ;; 1 is unaffiliated, 0 is affiliated
]

to setup
  clear-all
  setup-nodes
  if network? [ setup-spatially-clustered-network ]
  reset-ticks
end 

to setup-nodes
  set-default-shape turtles "person"
  create-turtles community-size
  [
    set size 2
    setxy (random-xcor * 0.95) (random-ycor * 0.95)
    set unaffiliated-utility random-normal u-x u-x-var                    ;; set individual utility for being unaffiliated
    if unaffiliated-utility > 1 [set unaffiliated-utility 1]              ;; make sure utility falls in [0,1]
    if unaffiliated-utility < 0 [set unaffiliated-utility 0]
    set affiliation 0                                                     ;; set all to affiliated first
    set color blue                                                        ;; affiliated will be blue
    if random-float 1 < initial-x [ set affiliation 1 set color red ]     ;; set initial proportion to unaffiliated, will be red
  ]
end 

;; Taken from Uri Wilensky's 'Virus on a Network'

to setup-spatially-clustered-network
  let num-links (average-node-degree * community-size) / 2
  while [count links < num-links ]
  [
    ask one-of turtles
    [
      let choice (min-one-of (other turtles with [not link-neighbor? myself])
                   [distance myself])
      if choice != nobody [ create-link-with choice ]
    ]
  ]
  ; make the network look a little prettier
  repeat 10 [ layout-spring turtles links 0.3 (world-width / (sqrt community-size)) 1 ]
end 

to go
  let affiliated-turtles turtles with [affiliation < 0.5]
  let unaffiliated-turtles turtles with [affiliation > 0.5]

  ifelse network? [ switch-with-network affiliated-turtles unaffiliated-turtles ]
  [ switch-without-network affiliated-turtles unaffiliated-turtles ]

  tick
end 

to switch-without-network [ affiliated-turtles unaffiliated-turtles ]
  ;; affiliated turtles switch with probability
  ask affiliated-turtles [
     if random-float 1 < time-scale * (unaffiliated-utility * proportion-unaffiliated ^ affiliation-power)
        [ set affiliation 1 set color red ]
  ]
  ;; unaffiliated turtles switch with probability
  ask unaffiliated-turtles [
     if random-float 1 < time-scale * ((1 - unaffiliated-utility ) * (1 - proportion-unaffiliated) ^ affiliation-power)
        [ set affiliation 0 set color blue ]
  ]
end 

to switch-with-network [ affiliated-turtles unaffiliated-turtles ]
  ;; affiliated turtles switch with probability
  ask affiliated-turtles [
     if random-float 1 < time-scale * (unaffiliated-utility * proportion-neighbors-unaffiliated ^ affiliation-power) [
       change-affiliation unaffiliated-turtles affiliated-turtles ]
     if count unaffiliated-turtles > 0 [make-friends unaffiliated-turtles]
  ]
  ;; unaffiliated turtles switch with probability
  ask unaffiliated-turtles [
     if random-float 1 < time-scale * ((1 - unaffiliated-utility ) * (1 - proportion-neighbors-unaffiliated) ^ affiliation-power) [
       change-affiliation affiliated-turtles unaffiliated-turtles ]
     if count affiliated-turtles > 0 [make-friends affiliated-turtles]
  ]
  ;; make network more elastic
  pretty-network
end 

;; turtle procedure

to change-affiliation [ in-group out-group ]
  ifelse color = blue [ set color red ] [ set color blue ]
  ifelse affiliation > 0.5 [ set affiliation 0 ] [ set affiliation 1 ]
  let diff-neighbors link-neighbors with [abs(affiliation - [affiliation] of myself) > 0.5]
  if count diff-neighbors > 0 [ break-friendships diff-neighbors ]
end 

;; turtle procedure

to break-friendships [diff-neighbors]
  ;; if you have more differently affiliated friends than you want, kill friendships
  let num-unwanted-friends count diff-neighbors - round ( (1 - min-friend-similarity) * count link-neighbors)
  if num-unwanted-friends > 0 [
    let unwanted-friends n-of num-unwanted-friends diff-neighbors
    ask unwanted-friends [ ask link-with myself [ die ] ]
  ]
end 

;; turtle procedure

to make-friends [in-group]
  ;; make a similarly affiliated nearby friend proportional to your loneliness (i.e. inversely proportional to number of friends)
  if random 100 < (new-friend-chance / ( count link-neighbors + 1 )) and count link-neighbors < max-friends [
  ask min-one-of in-group [distance myself] [create-link-with myself] ]
end 

to pretty-network
  repeat 10 [ layout-spring turtles links 0.3 (world-width / (sqrt community-size)) 1]
end 

to-report proportion-unaffiliated
  report ( count turtles with [affiliation > 0.5] ) / ( count turtles )
end 

to-report proportion-neighbors-unaffiliated
  ifelse count link-neighbors > 1 [
  report ( count link-neighbors with [affiliation > 0.5] ) / ( count link-neighbors ) ]
  [ report 0 ]
end 

There is only one version of this model, created over 8 years ago by Sara Clifton.

Attached files

File Type Description Last updated
SaraClifton-FinalProjectReport.pdf pdf Final project report (June 3, 2016) over 8 years ago, by Sara Clifton Download
SaraClifton-ReligiousAffiliationSwitching-EECS472.png preview Preview for 'SaraClifton-ReligiousAffiliationSwitching-EECS472' over 8 years ago, by Sara Clifton Download
SaraClifton_May16.pdf pdf Progress report #2 (May 16, 2016) over 8 years ago, by Sara Clifton Download
SaraClifton_May23.pdf pdf Progress report #3 (May 23, 2016) over 8 years ago, by Sara Clifton Download
SaraClifton_May9.pdf pdf Progress report #1 (May 9, 2016) over 8 years ago, by Sara Clifton Download

This model does not have any ancestors.

Children:

Graph of models related to 'SaraClifton-ReligiousAffiliationSwitching-EECS472'