Model of Social Identity Theory (slight update)
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model is a conceptual extension of Social Identity Theory from social psychology, attributable primarily to Turner and Tajfel (1979, 1982, 1986). Social psychology research holds that individuals possess a wide variety of social identities, and that which identity is most "present" or "important" for an individual at any given time will guide their behavior in particular ways. For example, many people consider themselves to have a gender identity, a national identity, and a family identity. Each of those identities has particular behavioral and motivational patterns associated with it - which one is most important at a given time will affect individual behavior in predictable ways.
According to Tajfel and Turner, there are three main mechanistic contributors to determining one's current identification: normative fit, comparative fit, and perceiver readiness. (Note that this is not a decision-making process, and often happens automatically, without individuals paying attention. If paying attention, individuals can also influence the process). These definitions are key: - Normative fit: the extent to which people acting as a certain level of a certan social dimension fit the prototype (or stereotype) of that level of that dimension. - Comparative fit: the relationship between ingroup similarity and the degree of similarity between ingroup and outgroup members. - Perceiver readiness is the broadest of the three, encompassing a wide range of contextual and individual-level factors. Two specific parts of perceiver readiness are: Social Identification, the degree to which one has historically used a given identity, and Contextual Information, which is picked up from non-person information sources in the environment (for example, books, media, etc).
By breaking down perceiver readiness in this way, we have a set of four contributors to current identification to consider in this model.
This model is aimed specifically at exploring three gaps in the theory: - This theory as it has been executed so far in social psychology does not provide information about the relative importance of each of these four mechanisms in determining current identification. - These mechanisms as discussed in the psychological literature have historically assumed that a person can only have one identity active at a particular time. (I.e. one can either enact one's female identity within the social Dimension of gender, OR one's gay identity within the social Dimension of sexuality, etc). However, emerging work in psychology is pointing out the importance of intersectional identities. - This theory does not consider aggregate-level outcomes of these individual processes.
HOW IT WORKS
Two terms that appear a lot in this script and interface are "Dimension" and "level," which have specific meanings. A social Dimension is something like gender - a type of social identity, with subdimensions. These subdimensions (for instance, men, women, and genderqueer people) are called levels. In the social psychological literature, these levels are what would be considered the social identities of the people. For the purposes of this netlogo script, I've set up 3 total dimensions, and each Dimension has a flexible number of levels. Just as a person might have a female identity within the social Dimension of gender, a person has a level 2 identity within Social Dimension 1.
At the start of the model, each person is assigned a specific level of each of the three social dimensions, as well as their current identification for the first tick of the model. They open a levelspace model brain that represents their possible identities and the relative weights of each possible identification as those are calculated on each tick. Not directly represented in the levelspace brains, but relevant to calculation of Normative and Comparative fit, each person is also assigned a random quantity of each possible trait.
Each patch is assigned a random amount of salience for each level of each Dimension.
On each tick, each agent moves and calculates several things about each of their three discrete identities to determine their relative importance. If the most important one is not the one they're currently enacting, they switch current identification on the next tick.
Normative Fit. This value concerns how closely the individuals currently enacting a given identity adhere to it's prototype (i.e. how close the traits of individuals representing the identity are to the average traits of all individuals who possess that identity). In this model, each person calculates this by evaluating the difference between the set of traits possessed by people currently identifying with its level of each Dimension and the average of all people who possess that level of that Dimension, whether or not they are identifying with that level. In social psychology, higher normative fit makes a given identity more useful because it is better understood; therefore, the agent is more likely to identify in this way.
Comparative Fit. This value concerns the relationship between ingroup homogeneity and ingroup-outgroup differences. Each person calculates (a) its average distance from all other people expressing one of its identities and (b) its average distance from all people not expressing that identity. Comparative fit is the latter divided by the former. The higher comparative fit, the more useful the identity is in defining an ingroup, and therefore the person is more likely to enact it.
Items 3 and 4, conceptually, cluster under something called "perceiver readiness." To make the model more comprehensible, and because how they cluster and what else is included in perceiver readiness is unclear in the literature, I have kept them distinct.
Environmental Salience. They pick this up directly from the environment - each patch has a set amount of salience for each level of each Dimension. On each turn, the people move, and that exposes them to new levels of environmental salience. This is either entirely random, or clustered, according to a parameter. If environmental salience was the only thing that determined identity expression, people should change very frequently.
Social Identification. The more a person has enacted a given identity, they more likely they are to continue to enact that identity. This is calculated as percentage of total time that a given identity has been enacted. If social identification was the only thing that determined identity expression, people should never change.
These are conceptually calculated in the same way whether intersectionality is permitted or not. If it is permitted, each agent has six options for how to identify (Dimension 1 Level, Dimension 2 Level, Dimension 3 Level, Dimension 1 + 2 Level Intersection, Dimension 2 + 3 Level Intersection, Dimension 1 + 3 Level Intersection), and any of those could be most important. If it is not, each person has only 2 options (Dimension 1 Level, Dimension 2 Level, Dimension 3 Level).
HOW TO USE IT
The parameters it's possible to manipulate are listed below.
number-of-agents: How many people are in the model.
levels-social-dimension1: How many possible levels are within social dimension 1.
levels-social-dimension2: How many possible levels there are in social dimension 2.
levels-social-dimension3: How many possible levels there are in social dimension 3.
intersectionality?: Either intersectional identities are or are not permitted to be enacted within the program.
number-of-traits: This variable determines how many traits you decide are relevant for each person to have (real-life examples could be physical like hair color, psychological like extroversion, or preferential like taste in food). Each person is assigned an amount of each trait from 1 to 100. These is used in the calculation of Comparative Fit and Normative Fit.
environmental-salience-weight: The relative weight assigned to environmental salience in determining identity importance. This is not a percentage of total possible influence, but rather how it is weighted relative to the other three contributing mechanisms.
comparative-fit-weight: The relative weight assigned to comparative fit in determining identity importance. This is not a percentage of total possible influence, but rather how it is weighted relative to the other three contributing mechanisms.
normative-fit-weight: The relative weight assigned to normative fit in determining identity importance. This is not a percentage of total possible influence, but rather how it is weighted relative to the other three contributing mechanisms.
social-identification-weight: The relative weight assigned to social identification in determining identity importance. This is not a percentage of total possible influence, but rather how it is weighted relative to the other three contributing mechanisms.
PersonColors: There are three possible displays for the people. If you're running this in behaviorspace, or without visual update, these are not relevant. (1) Dominant Dimension. This assigns people to display whichever identity they're enacting. All Dimension1 identities are red, and different levels within that Dimension are different reds. In the same way, Dimension2 identities are yellow, and Dimension3 identities are blue. If intersectional identities are an option, identities that are Dim1-Dim2 are levels of orange; Dim2-Dim3 are green; and Dim3-Dim1 are violet. (2) In An Ingroup: People display whether they are or are not in the ingroup of any other person (i.e. whether any other person considers them an ingroup member). People in an ingroup are green, and not in an ingroup are gray. (3) Switched on Last Tick: People display whether they did or did not switch which identity they're enacting on the last tick. Green is switched, gray is not.
THINGS TO NOTICE
The primary outcomes of interest in this model are: - How often agents are switching the identity they're expressing. Is this something that happens a lot? Does it barely happen? How does the weighting of the four psychological mechanisms affec this? - How many agents are enacting an intersectional identity? How does this change based on the variable parameters? - What is the size of each agent's ingroup? Do they consider many or few of the other agents to be their ingroup? How many people of the whole group are excluded entirely (i.e. not in anybody's ingroup)?
These outputs are graphed over time in the right part of the interface, and are each designed to be an individual reporter, should a BehaviorSpace experiment be needed.
THINGS TO TRY
Inspect: Clicking on inspect and then a given agent in the model gives you view access to that agent's brain as it determines the importance of different possible identifications. The visualization is such that each agent has the same number of nodes and links, in the same organization. The nodes are set up such that all the nodes in the same vertical line are levels in the same social Dimension. Each agent has one node from each of the three columns activated - these are possible identities. The links between the three active nodes are also active. If intersectionality is enabled, then these are the intersectional identities. The active people and links in the brain models adjust their size at each tick to display their relative importance.
Looking at the unique effect of each mechanism is useful in validating this model - try each of the four ways you can have one contributing mechanism matter, but none of the others. What happens? Is it surprising?
NETLOGO FEATURES
This model uses Levelspace to create brains for each agent (The file is called "05302016_Brain1.nlogo").
CREDITS AND REFERENCES
Hjorth, A. Head, B. & Wilensky, U. (2015). LevelSpace NetLogo extension [computer software]. Evanston, IL: Center for Connected Learning and Computer Based Modeling, Northwestern University. http://ccl.northwestern.edu/rp/levelspace/index.shtml .
Tajfel, H., & Turner, J. C. (1979). "An integrative theory of intergroup conflict". In W. G. Austin & S. Worchel. The social psychology of intergroup relations. Monterey, CA: Brooks/Cole. pp. 33–47.
Tajfel, H. and Turner, J. C. (1986). The social identity theory of inter-group behavior. In S. Worchel and L. W. Austin (eds.), Psychology of Intergroup Relations. Chigago: Nelson-Hall
Turner, J. C. (1982). Towards a cognitive redefinition of the social group. In H. Tajfel (ed.), Social Identity and Intergroup Relations. Cambridge: Cambridge University Press.
Wilensky, U. (1999). NetLogo [computer software]. Evanston, IL: Center for Connected Learning and Computer-Based Modeling, Northwestern University. http://ccl.northwestern.edu/netlogo .
Comments and Questions
; Natalie Gallagher ; June 2016 extensions [ls] globals [ x ; useful for iteration stuff, basically empty variables z a b c all-ingroup-turtles prototypes-dim1 prototypes-dim2 prototypes-dim3 dimension1-colors dimension2-colors dimension3-colors num-ticks intersectionality ] turtles-own [ brain ; where you open the level-space brain dim1-level dim2-level dim3-level dimension-dominant ; which category identity is dominant at any given time. This will always include the three basic dimensions. In some cases, it will also include intersections (i.e. 1-2, 1-3, 2-3, and 1-2-3) and individual (i.e. no collective identity activated) dimension-dominant-next ; which category identity will be dominant/expressed at the next tick switched-on-last-tick ; did this turtle change their identity on the last tick ingroup-agentset ingroup-size in-ingroup trait-values num-times-switched ] patches-own [ dim1-salience-from-context dim2-salience-from-context dim3-salience-from-context ] to Setup clear-all ifelse intersectionality? [ ; is intersectionality part of this model? set intersectionality 1][ set intersectionality 0] create-turtles number-of-agents [ setxy random-xcor random-ycor ; set each turtle to a random location set shape "circle" set size 1.5 set dim1-level (random levels-social-dimension1) + 1 set dim2-level (random levels-social-dimension2) + 1 set dim3-level (random levels-social-dimension3) + 1 set trait-values n-values number-of-traits [random 101] ; set each turtle to a random set of traits set num-times-switched 0 set switched-on-last-tick 0 ifelse intersectionality = 1 [ set dimension-dominant one-of (list 1 2 3 12 23 13) ][ set dimension-dominant (random 3) set dimension-dominant dimension-dominant + 1] set ingroup-agentset nobody ] set all-ingroup-turtles nobody set dimension1-colors (list 13 13.5 14 14.5 15 15.5 16 16.5 17 17.5) ;these are useful for coloring-turtles (used lists to deal with intersectional cases efficiently) set dimension2-colors (list 43 43.5 44 44.5 45 45.5 46 46.5 47 47.5) set dimension3-colors (list 103 103.5 104 104.5 105 105.5 106 106.5 107 107.5) setup-brain ask turtles [ define-ingroup] set all-ingroup-turtles (turtle-set [ingroup-agentset] of turtles) ask turtles [ determine-if-in-ingroup] ask patches [generate-patch-salience] setup-prototypes recolor-turtles reset-ticks tick end to Go ask turtles [ move ; move to another patch within their distance (ls:ask brain [gather-salience ?1 ?2 ?3 ?4] dim1-salience-from-context dim2-salience-from-context dim3-salience-from-context intersectionality) ; tell the child model to pick up all the salience from that place (ls:ask brain [define-comparative-fit ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 ?10 ?11 ?12 ?13] sharedlevel-distance-dim1 sharedlevel-distance-dim2 sharedlevel-distance-dim3 notsharedlevel-distance-dim1 notsharedlevel-distance-dim2 notsharedlevel-distance-dim3 sharedlevel-distance-intersection12 sharedlevel-distance-intersection23 sharedlevel-distance-intersection13 notsharedlevel-distance-intersection12 notsharedlevel-distance-intersection23 notsharedlevel-distance-intersection13 intersectionality) (ls:ask brain [define-normative-fit ?1 ?2 ?3 ?4 ?5 ?6 ?7] normative-fit-dim1 normative-fit-dim2 normative-fit-dim3 normative-fit-intersection12 normative-fit-intersection23 normative-fit-intersection13 intersectionality) set num-ticks ticks (ls:ask brain [set-social-identification ?1 ?2 ?3] num-ticks dimension-dominant intersectionality) (ls:ask brain [determine-next-dimension ?1 ?2 ?3 ?4 ?5 ?6] normative-fit-weight comparative-fit-weight environmental-salience-weight social-identification-weight intersectionality dimension-dominant) set dimension-dominant-next (ls:report brain [dimension-dominant-next-child]) define-ingroup] set all-ingroup-turtles (turtle-set [ingroup-agentset] of turtles) ask turtles [ determine-if-in-ingroup dominant-identity-switch] recolor-turtles tick end to setup-prototypes ; first, generate the list of lists that I'll populate with prototypes from the actual agents set prototypes-dim1 n-values levels-social-dimension1 [n-values number-of-traits [0]] set prototypes-dim2 n-values levels-social-dimension2 [n-values number-of-traits [0]] set prototypes-dim3 n-values levels-social-dimension3 [n-values number-of-traits [0]] set a 1 set b 1 set c 1 while [a <= levels-social-dimension1] [ ; this will iterate for each level of Dimension1 ; collate list of lists of all agents with each level of each category if any? turtles with [dim1-level = a] [ set x (map [[trait-values] of ?] sort turtles with [dim1-level = a]) set z 1 ; this will iterate for each TRAIT while [z <= number-of-traits] [ set prototypes-dim1 replace-item (a - 1) prototypes-dim1 (replace-item (z - 1) (item (a - 1) prototypes-dim1) mean (map [item (z - 1) ?] x)) set z z + 1]] set a a + 1] while [b <= levels-social-dimension2] [ ; this will iterate for each level of Dimension2 ; collate list of lists of all agents with each level of each category if any? turtles with [dim2-level = b] [ set x (map [[trait-values] of ?] sort turtles with [dim2-level = b]) set z 1 ; this will iterate for each TRAIT while [z <= number-of-traits] [ set prototypes-dim2 replace-item (b - 1) prototypes-dim2 (replace-item (z - 1) (item (b - 1) prototypes-dim2) mean (map [item (z - 1) ?] x)) set z z + 1]] set b b + 1] while [c <= levels-social-dimension3] [ ; this will iterate for each level of Dimension3 ; collate list of lists of all agents with each level of each category if any? turtles with [dim3-level = c] [ set x (map [[trait-values] of ?] sort turtles with [dim3-level = c]) set z 1 ; this will iterate for each TRAIT while [z <= number-of-traits] [ set prototypes-dim3 replace-item (c - 1) prototypes-dim3 (replace-item (z - 1) (item (c - 1) prototypes-dim3) mean (map [item (z - 1) ?] x)) set z z + 1]] set c c + 1] end to setup-brain while [length ls:models < count turtles] [ (ls:load-headless-model "05302016_Brain1.nlogo")] let available-brains ls:models ask turtles [ set brain first available-brains set available-brains but-first available-brains ls:set-name brain (word "Brain of " self) (ls:ask brain [setup ?1 ?2 ?3] levels-social-dimension1 levels-social-dimension2 levels-social-dimension3) (ls:ask brain [activate-levels ?1 ?2 ?3 ?4] dim1-level dim2-level dim3-level dimension-dominant)] end to move ; turtles move some random amount in a random direction, so they're exposed to new "environmental" or "patch" influences lt random 360 rt random 360 fd random 5 end to dominant-identity-switch ; agent procedure ifelse dimension-dominant != dimension-dominant-next [ ; if the current category doesn't match the "next" category, set dimension-dominant dimension-dominant-next set switched-on-last-tick 1 set num-times-switched num-times-switched + 1] [ set switched-on-last-tick 0] end to generate-patch-salience set dim1-salience-from-context n-values levels-social-dimension1 [(random 100) + 1] ; for each level of each category, each patch has a random % salience set dim2-salience-from-context n-values levels-social-dimension2 [(random 100) + 1] set dim3-salience-from-context n-values levels-social-dimension3 [(random 100) + 1] end to define-ingroup ; turtle procedure if [dimension-dominant] of self = 1 [ set ingroup-agentset agentset-enacting-my-dim1-level with [WHO != [WHO] of myself]] if [dimension-dominant] of self = 2 [ set ingroup-agentset agentset-enacting-my-dim2-level with [WHO != [WHO] of myself]] if [dimension-dominant] of self = 3 [ set ingroup-agentset agentset-enacting-my-dim3-level with [WHO != [WHO] of myself]] if [dimension-dominant] of self = 12 [ set ingroup-agentset agentset-enacting-my-dim1-dim2-intersection with [WHO != [WHO] of myself]] if [dimension-dominant] of self = 23 [ set ingroup-agentset agentset-enacting-my-dim2-dim3-intersection with [WHO != [WHO] of myself]] if [dimension-dominant] of self = 13 [ set ingroup-agentset agentset-enacting-my-dim1-dim3-intersection with [WHO != [WHO] of myself]] set ingroup-size count ingroup-agentset end to determine-if-in-ingroup ; this is where each turtle determines whether it is, at all, in an ingroup ifelse member? self all-ingroup-turtles [ ; ask each turtle to determine whether it is a member of the overall ingroup, and set its value accordingly set in-ingroup 1][ set in-ingroup 0] end to recolor-turtles if (TurtleColors = "Dominant Dimension") [ ; if the switch is set for turtles to display their dominant category, do this ask turtles [ ; set overall color based on categorydominant, and then each level within each category is a particular color if dimension-dominant = 1 [ set color item (dim1-level - 1) dimension1-colors] if dimension-dominant = 2 [ set color item (dim2-level - 1) dimension2-colors] if dimension-dominant = 3 [ set color item (dim3-level - 1) dimension3-colors] if dimension-dominant = 12 [ set color (20 + (((item (dim1-level - 1) dimension1-colors) + (item (dim2-level - 1) dimension2-colors) - 50) / 2))] if dimension-dominant = 23 [ set color (50 + (((item (dim3-level - 1) dimension3-colors) + (item (dim2-level - 1) dimension2-colors) - 140) / 2))] if dimension-dominant = 13 [ set color (110 + (((item (dim1-level - 1) dimension1-colors) + (item (dim3-level - 1) dimension3-colors) - 110) / 2))]]] if (TurtleColors = "In An Ingroup") [ ask turtles [ if in-ingroup = 1 [ set color green] if in-ingroup = 0 [ set color gray]]] if (TurtleColors = "Switched On Last Tick") [ ask turtles [ if switched-on-last-tick = 1 [ set color green] if switched-on-last-tick = 0 [ set color gray]]] end ;; Below here is all reporters. to-report percent-excluded ifelse any? all-ingroup-turtles [ report 100 - ((count all-ingroup-turtles / count turtles) * 100)] [report 100] end to-report mean-ingroup-size ifelse any? all-ingroup-turtles [ report mean([ingroup-size] of turtles)] [report 0] end to-report percent-switched-on-last-tick report ( count turtles with [switched-on-last-tick = 1] / count turtles) * 100 end to-report percent-expressing-dim1 report (count turtles with [dimension-dominant = 1]) * 100 / (count turtles) end to-report percent-expressing-dim2 report (count turtles with [dimension-dominant = 2]) * 100 / (count turtles) end to-report percent-expressing-dim3 report (count turtles with [dimension-dominant = 3]) * 100 / (count turtles) end to-report percent-expressing-intersection12 report (count turtles with [dimension-dominant = 12]) * 100 / (count turtles) end to-report percent-expressing-intersection23 report (count turtles with [dimension-dominant = 23]) * 100 / (count turtles) end to-report percent-expressing-intersection13 report (count turtles with [dimension-dominant = 13]) * 100 / (count turtles) end to-report percent-intersectional report (count turtles with [dimension-dominant = 12 or dimension-dominant = 23 or dimension-dominant = 13])/(count turtles) * 100 end to-report mean-percent-switches-per-turtle ifelse ticks != 0 [ report 100 * mean([num-times-switched] of turtles) / ticks][ report 0] end ; Relevant for the calculation of Comparative Fit to-report query-distance [ person ] let othertraitlist [trait-values] of person let traitdistance mean ( map [ abs(?1 - ?2)] othertraitlist trait-values) report traitdistance end to-report agentset-enacting-my-dim1-level report turtles with [dimension-dominant = 1 and dim1-level = [dim1-level] of myself] end to-report agentset-enacting-my-dim2-level report turtles with [dimension-dominant = 2 and dim2-level = [dim2-level] of myself] end to-report agentset-enacting-my-dim3-level report turtles with [dimension-dominant = 3 and dim3-level = [dim3-level] of myself] end to-report agentset-enacting-my-dim1-dim2-intersection report turtles with [dimension-dominant = 12 and dim1-level = [dim1-level] of myself and dim2-level = [dim2-level] of myself] end to-report agentset-enacting-my-dim2-dim3-intersection report turtles with [dimension-dominant = 23 and dim2-level = [dim2-level] of myself and dim3-level = [dim3-level] of myself] end to-report agentset-enacting-my-dim1-dim3-intersection report turtles with [dimension-dominant = 13 and dim1-level = [dim1-level] of myself and dim3-level = [dim3-level] of myself] end to-report sharedlevel-distance-dim1 ifelse any? agentset-enacting-my-dim1-level [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim1-level))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim1-level))]] [report 100] ; if there are no turtles enacting my level of category 1, then ingroup homogeneity is as high as possible (it's only me), which is the number of traits on which differing is possible, times the maximum possible difference on any single trait, which is 100 end to-report sharedlevel-distance-dim2 ifelse any? agentset-enacting-my-dim2-level [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim2-level))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim2-level))]] [report 100] end to-report sharedlevel-distance-dim3 ifelse any? agentset-enacting-my-dim3-level [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim3-level))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim3-level))]] [report 100] end to-report sharedlevel-distance-intersection12 ifelse any? agentset-enacting-my-dim1-dim2-intersection [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim1-dim2-intersection))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim1-dim2-intersection))]] [report 100] end to-report sharedlevel-distance-intersection23 ifelse any? agentset-enacting-my-dim2-dim3-intersection [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim2-dim3-intersection))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim2-dim3-intersection))]] [report 100] end to-report sharedlevel-distance-intersection13 ifelse any? agentset-enacting-my-dim1-dim3-intersection [ ifelse (round( mean([query-distance myself] of agentset-enacting-my-dim1-dim3-intersection))) = 0 [ report 1] [ report round( mean([query-distance myself] of agentset-enacting-my-dim1-dim3-intersection))]] [report 100] end to-report notsharedlevel-distance-dim1 ifelse any? other turtles with [not member? self agentset-enacting-my-dim1-level] [ ifelse (round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-level]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-level])))]] [report 100] end to-report notsharedlevel-distance-dim2 ifelse any? other turtles with [not member? self agentset-enacting-my-dim2-level] [ ifelse ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim2-level]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim2-level])))]] [report 100] ; if there are no turtles outside of the identity I'm considering, intergroup is as high as possible end to-report notsharedlevel-distance-dim3 ifelse any? other turtles with [not member? self agentset-enacting-my-dim3-level] [ ifelse ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim3-level]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim3-level])))]] [report 100] end to-report notsharedlevel-distance-intersection12 ifelse any? other turtles with [not member? self agentset-enacting-my-dim1-dim2-intersection] [ ifelse ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-dim2-intersection]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-dim2-intersection])))]] [report 100] end to-report notsharedlevel-distance-intersection23 ifelse any? other turtles with [not member? self agentset-enacting-my-dim2-dim3-intersection] [ ifelse ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim2-dim3-intersection]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim2-dim3-intersection])))]] [report 100] end to-report notsharedlevel-distance-intersection13 ifelse any? other turtles with [not member? self agentset-enacting-my-dim1-dim3-intersection] [ ifelse ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-dim3-intersection]))) = 0 [ ; if this rounds down to zero report 1][ report ( round (mean([query-distance myself] of other turtles with [not member? self agentset-enacting-my-dim1-dim3-intersection])))]] [report 100] end ; Relevant for calculation of Normative Fit to-report distance-from-prototype-dim1 report mean(map [ abs( ?1 - ?2)] trait-values item (dim1-level - 1) prototypes-dim1) end to-report distance-from-prototype-dim2 report mean( map [ abs( ?1 - ?2)] trait-values item (dim2-level - 1) prototypes-dim2) end to-report distance-from-prototype-dim3 report mean( map [ abs( ?1 - ?2)] trait-values item (dim3-level - 1) prototypes-dim3) end to-report distance-from-prototype-intersection12 report mean( map [abs (?1 - ?2)] trait-values (map[(?1 + ?2) / 2] item (dim1-level - 1) prototypes-dim1 item (dim2-level - 1) prototypes-dim2)) end to-report distance-from-prototype-intersection23 report mean( map [abs (?1 - ?2)] trait-values (map[(?1 + ?2) / 2] item (dim2-level - 1) prototypes-dim2 item (dim3-level - 1) prototypes-dim3)) end to-report distance-from-prototype-intersection13 report mean( map [abs (?1 - ?2)] trait-values (map[(?1 + ?2) / 2] item (dim1-level - 1) prototypes-dim1 item (dim3-level - 1) prototypes-dim3)) end to-report normative-fit-dim1 ifelse any? agentset-enacting-my-dim1-level [ ; are there any turtles that have my level of category 1 and are expressing it, including myself? ifelse round( mean([distance-from-prototype-dim1] of agentset-enacting-my-dim1-level)) = 0 [ ; if so, how distant are those turtles expressing my level of category 1 from the prototype of my level of category 1 report 1][ report round( mean([distance-from-prototype-dim1] of agentset-enacting-my-dim1-level))]] [report 100] end to-report normative-fit-dim2 ifelse any? agentset-enacting-my-dim2-level [ ifelse round( mean([distance-from-prototype-dim2] of agentset-enacting-my-dim2-level)) = 0 [ ; if so, how distant are those turtles expressing my level of category 1 from the prototype of my level of category 1 report 1][ report round( mean([distance-from-prototype-dim2] of agentset-enacting-my-dim2-level))]] [report 100] end to-report normative-fit-dim3 ifelse any? agentset-enacting-my-dim3-level [ ifelse round( mean([distance-from-prototype-dim3] of agentset-enacting-my-dim3-level)) = 0 [ ; if so, how distant are those turtles expressing my level of category 1 from the prototype of my level of category 1 report 1][ report round( mean([distance-from-prototype-dim3] of agentset-enacting-my-dim3-level))]] [report 100] end to-report normative-fit-intersection12 ifelse any? agentset-enacting-my-dim1-dim3-intersection [ ifelse round(mean([distance-from-prototype-intersection13] of agentset-enacting-my-dim1-dim3-intersection)) = 0 [ report 1][ report round(mean([distance-from-prototype-intersection13] of agentset-enacting-my-dim1-dim3-intersection))]] [report 100] end to-report normative-fit-intersection23 ifelse any? agentset-enacting-my-dim2-dim3-intersection [ ifelse round(mean([distance-from-prototype-intersection23] of agentset-enacting-my-dim2-dim3-intersection)) = 0 [ report 1][ report round(mean([distance-from-prototype-intersection23] of agentset-enacting-my-dim2-dim3-intersection))]] [report 100] end to-report normative-fit-intersection13 ifelse any? agentset-enacting-my-dim1-dim3-intersection [ ifelse round(mean([distance-from-prototype-intersection13] of agentset-enacting-my-dim1-dim3-intersection)) = 0 [ report 1][ report round(mean([distance-from-prototype-intersection13] of agentset-enacting-my-dim1-dim3-intersection))]] [report 100] end
There is only one version of this model, created over 9 years ago by Natalie Gallagher.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.