Depression-ANetworkApproach
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 network- representation of major depression. The nodes in this model represent the symptoms of major depression. According to the DSM-IV (APA, 2000) there are 14 symptoms: (1) depressed mood, (2) loss of interest, (3) weight loss, (4) weight gain, (5) decreased appetite, (6) increased appetite, (7) insomnia, (8) hypersomnia, (9) psychomotor agitation, (10) psychomotor retardation, (11) fatigue, (12) worthlessness or guilt, (13) concentration problems, and (14) suicidal thoughts.
In this model, we hypothesize that symptoms of mental disorders have direct causal relations with one another and is called the causal network perspective. For instance, if one develops a symptom of major depression (e.g., insomnia) then this increases the likelihood of developing other symptoms (e.g., fatigue, lack of concentration). Conversely, if one of the symptoms disappears, this increases the likelihood that other symptoms disappear as well.
In terms of this network, the vulnerabilities of a person are represented as connection strengths between the above symptoms. Higher connection strengths mean the person is more vulnerable to get the symptoms and consequently more likely to get into a depression. A lower connection strength (vulnerable) individual is less likely to sustain long depression episodes. Additionally, the kindling effect is used to represent the time varying nature of the vulnerabilities. The phenomenon states that stressful life events play the greatest role in the first onset of Major Depression. Subsequent episodes are then caused by less and less severe life events (Monroe, Torres, Guillaumot, Harkness, Roberts, Frank & Kupfer, 2006). So after each depression episode the vulnerabilites (connection strengths) are made stronger resulting into an earlier tipping point into a depression epsiode. Life events like severe marital problems give the depression network additional push, increasing the likelihood of triggering more depression symptoms over time. This is modelled as 'external-activation' parameter which can be altered in the model interface. Hystersis effect takes into account that strongly connected networks need interventions greater than what was required initially to get the system to depressed state. For instance, a person with substance abuse may not recover from depression even after he stops using substance. Conversely, a jolly person will recover soon from a relationship breakup even if he doesnot find a new partner.
HOW IT WORKS
1) At each 'tick' (time point) the probability a symptom 'i' becomes activated is calculated using logistic equation:
1 / 1 + e^(b - A)
where b is the individual threshold of symptom 'i' determined from empirical data and A is the total amount of stress on the symptom 'i'.
2) A depressive episode is recognised when the person has atleast 7 symptoms (black cut-off line in Network status plot) in the last consecutive 2 weeks. (from DSM III R Manual)
3) Turning on 'kindling-effect' makes the connections strong by 0.001 each time the person has a new episode.
4) Hitting the 'adminsiter-shock' gives the network a shock which deactivates all the symptoms and gives the system a fresh start. However, keep in mind that turning on the kindling effect will have already increased the connection strengths to some degree. So adminstering shock and turning on kindling-effect again will start the system from the point where kindling-effect was stopped (if it was turned on previously).
HOW TO USE IT
1) Start the model by hitting the 'setup' button.
2) 'go' starts the simulations.
3) 'connection-strength' represents the vulnerability of a person while 'external-activation' is the external stress caused by significant life events.
4) Use the individual symptom sliders to see the effect of a specifc symptom, which may be useful to target a specific symptom having greatest impact on the network status.
5) Hit 'administer-shock' to give the network a fresh start. This deactivates all the active symptoms momentarily.
THINGS TO NOTICE
1) The person is said to be having a depression episode if the network status plot stays above the cutoff (black line) for at least 14 consecutive ticks. You can also see this as a new episode recorded in the Depression episodes plot.
2) Targeting specific symptoms has different effects on the network. For instance, you observe person cycling between depressed and non-depressed state continuosuly at some specific parameter values.
THINGS TO TRY
1) You can try to see for which values of connection-strength or external-activation the person goes into depression.
2) Turning on the kindling-effect changes the dynamics of system in intresting ways. A thing to note is that adminstering shocks brings the system back to healthy state momentarily however this has the net effect of increasing the episode count which requires a person to go back to healthy state, which in turn increases the connection strength. However, this happens at some parameter settings. Test this and feel free to make the dynamics even more interesting.
CREDITS AND REFERENCES
- Van Borkulo, C.D., Van der Maas, H.L.J., Borsboom, D., and Cramer, A.O.J. (2013). NetLogo VulnerabilitytoDepression.
http://ccl.northwestern.edu/netlogo/models/community/VulnerabilitytoDepression. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL. - Borsboom, 2008
- Cramer, Waldorp, van der Maas & Borsboom, 2010
- Schmittmann, Cramer, Waldorp, Epskamp, Kievit & Borsboom, 2011
- Cramer, Borsboom, Aggen, & Kendler, 2012
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Comments and Questions
breed [symptoms symptom] symptoms-own [ symptom-present? ;; if true, the symptom is a present symptom b ;; the threshold of regression activation ;; =0 if symptom-absent, =1 if symptom-present total-activation ;; total activation from network chance-to-become-activated ;; calculates the likelihood with logistic function to become active individual-stress Act ] links-own [ weight-edge ] globals [ mood external-stress shock episode-cntr episode episode-continue? connection-strength-after-episode ] ;;;;;;;;;;;;;;;;;;;;;;;; ;;; Setup Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all setup-symptoms ask symptom 0 [set b 2.3129 set label "Depmood"] ask symptom 1 [set b 3.1946 set label "Lossint"] ask symptom 2 [set b 4.3092 set label "Wloss"] ask symptom 3 [set b 3.8332 set label "Wgain"] ask symptom 4 [set b 3.9153 set label "Dapp"] ask symptom 5 [set b 3.9012 set label "Iapp"] ask symptom 6 [set b 3.0246 set label "Insom"] ask symptom 7 [set b 4.4480 set label "Hypersom"] ask symptom 8 [set b 3.1753 set label "Pagit"] ask symptom 9 [set b 4.3372 set label "Pretar"] ask symptom 10 [set b 2.8269 set label "Fatigue"] ask symptom 11 [set b 4.4272 set label "Worthless"] ask symptom 12 [set b 4.0421 set label "Conc"] ask symptom 13 [set b 5.8303 set label "Death"] setup-network set mood [] set episode-cntr 0 set episode 0 set episode-continue? false set connection-strength-after-episode connection-strength set external-stress external-activation reset-ticks end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Setup symptoms: creates symptoms with a nice layout ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup-symptoms create-symptoms 14 [ set shape "circle"] layout-circle (sort symptoms) max-pxcor - 4.5 ask symptoms [ setxy (xcor * 0.71) (ycor * 0.71) become-symptom-absent ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Setup network: creates fully connected network, assigns ;; ;; weights to the links ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup-network ask symptom 0 [create-link-with symptom 1] ask symptom 0 [create-link-with symptom 2] ask symptom 0 [create-link-with symptom 3] ask symptom 0 [create-link-with symptom 4] ask symptom 0 [create-link-with symptom 5] ask symptom 0 [create-link-with symptom 6] ask symptom 0 [create-link-with symptom 7] ask symptom 0 [create-link-with symptom 8] ask symptom 0 [create-link-with symptom 9] ask symptom 0 [create-link-with symptom 10] ask symptom 0 [create-link-with symptom 11] ask symptom 0 [create-link-with symptom 12] ask symptom 0 [create-link-with symptom 13] ask symptom 1 [create-link-with symptom 2] ask symptom 1 [create-link-with symptom 3] ask symptom 1 [create-link-with symptom 4] ask symptom 1 [create-link-with symptom 5] ask symptom 1 [create-link-with symptom 6] ask symptom 1 [create-link-with symptom 7] ask symptom 1 [create-link-with symptom 8] ask symptom 1 [create-link-with symptom 9] ask symptom 1 [create-link-with symptom 10] ask symptom 1 [create-link-with symptom 11] ask symptom 1 [create-link-with symptom 12] ask symptom 1 [create-link-with symptom 13] ask symptom 2 [create-link-with symptom 3] ask symptom 2 [create-link-with symptom 4] ask symptom 2 [create-link-with symptom 6] ask symptom 2 [create-link-with symptom 11] ask symptom 2 [create-link-with symptom 12] ask symptom 2 [create-link-with symptom 13] ask symptom 3 [create-link-with symptom 4] ask symptom 3 [create-link-with symptom 5] ask symptom 3 [create-link-with symptom 6] ask symptom 3 [create-link-with symptom 7] ask symptom 3 [create-link-with symptom 10] ask symptom 3 [create-link-with symptom 11] ask symptom 4 [create-link-with symptom 6] ask symptom 4 [create-link-with symptom 7] ask symptom 4 [create-link-with symptom 8] ask symptom 4 [create-link-with symptom 9] ask symptom 4 [create-link-with symptom 10] ask symptom 4 [create-link-with symptom 11] ask symptom 4 [create-link-with symptom 12] ask symptom 4 [create-link-with symptom 13] ask symptom 5 [create-link-with symptom 7] ask symptom 5 [create-link-with symptom 8] ask symptom 5 [create-link-with symptom 9] ask symptom 5 [create-link-with symptom 10] ask symptom 5 [create-link-with symptom 13] ask symptom 6 [create-link-with symptom 7] ask symptom 6 [create-link-with symptom 8] ask symptom 6 [create-link-with symptom 10] ask symptom 6 [create-link-with symptom 12] ask symptom 6 [create-link-with symptom 13] ask symptom 7 [create-link-with symptom 9] ask symptom 7 [create-link-with symptom 10] ask symptom 7 [create-link-with symptom 11] ask symptom 7 [create-link-with symptom 12] ask symptom 7 [create-link-with symptom 13] ask symptom 8 [create-link-with symptom 10] ask symptom 8 [create-link-with symptom 11] ask symptom 8 [create-link-with symptom 12] ask symptom 8 [create-link-with symptom 13] ask symptom 9 [create-link-with symptom 10] ask symptom 9 [create-link-with symptom 11] ask symptom 9 [create-link-with symptom 12] ask symptom 9 [create-link-with symptom 13] ask symptom 10 [create-link-with symptom 11] ask symptom 10 [create-link-with symptom 12] ask symptom 11 [create-link-with symptom 12] ask symptom 11 [create-link-with symptom 13] ask symptom 12 [create-link-with symptom 13] ask link 0 1 [set weight-edge 2.1407 set color 2] ask link 0 2 [set weight-edge 0.7232 set color 2] ask link 0 3 [set weight-edge 0.2041 set color 2] ask link 0 4 [set weight-edge 1.1296 set color 2] ask link 0 5 [set weight-edge 0.5217 set color 2] ask link 0 6 [set weight-edge 1.0530 set color 2] ask link 0 7 [set weight-edge 0.9409 set color 2] ask link 0 8 [set weight-edge 0.7484 set color 2] ask link 0 9 [set weight-edge 0.6849 set color 2] ask link 0 10 [set weight-edge 1.0979 set color 2] ask link 0 11 [set weight-edge 1.8733 set color 2] ask link 0 12 [set weight-edge 1.0211 set color 2] ask link 0 13 [set weight-edge 2.0693 set color 2] ask link 1 2 [set weight-edge 0.1766 set color 2] ask link 1 3 [set weight-edge 0.2811 set color 2] ask link 1 4 [set weight-edge 0.5763 set color 2] ask link 1 5 [set weight-edge 0.2392 set color 2] ask link 1 6 [set weight-edge 0.4273 set color 2] ask link 1 7 [set weight-edge 0.5311 set color 2] ask link 1 8 [set weight-edge 0.4459 set color 2] ask link 1 9 [set weight-edge 0.6564 set color 2] ask link 1 10 [set weight-edge 0.5070 set color 2] ask link 1 11 [set weight-edge 0.6826 set color 2] ask link 1 12 [set weight-edge 0.8178 set color 2] ask link 1 13 [set weight-edge 0.4986 set color 2] ask link 2 3 [set weight-edge -0.6082 set color 2] ask link 2 4 [set weight-edge 2.9840 set color 2] ask link 2 6 [set weight-edge 0.2045 set color 2] ask link 2 11 [set weight-edge 0.3772 set color 2] ask link 2 12 [set weight-edge 0.1063 set color 2] ask link 2 13 [set weight-edge 0.252 set color 2] ask link 3 4 [set weight-edge -0.5389 set color 2] ask link 3 5 [set weight-edge 3.165 set color 2] ask link 3 6 [set weight-edge 0.2672 set color 2] ask link 3 7 [set weight-edge 0.2041 set color 2] ask link 3 10 [set weight-edge 0.4112 set color 2] ask link 3 11 [set weight-edge 0.5226 set color 2] ask link 4 6 [set weight-edge 0.7033 set color 2] ask link 4 7 [set weight-edge 0.4020 set color 2] ask link 4 8 [set weight-edge 0.4724 set color 2] ask link 4 9 [set weight-edge 0.2219 set color 2] ask link 4 10 [set weight-edge 0.2284 set color 2] ask link 4 11 [set weight-edge 0.1203 set color 2] ask link 4 12 [set weight-edge 0.4177 set color 2] ask link 4 13 [set weight-edge 0.1198 set color 2] ask link 5 7 [set weight-edge 0.5475 set color 2] ask link 5 8 [set weight-edge 0.4890 set color 2] ask link 5 9 [set weight-edge 0.2914 set color 2] ask link 5 10 [set weight-edge 0.4546 set color 2] ask link 5 13 [set weight-edge 0.1620 set color 2] ask link 6 7 [set weight-edge -0.5009 set color 2] ask link 6 8 [set weight-edge 1.2951 set color 2] ask link 6 10 [set weight-edge 0.8279 set color 2] ask link 6 12 [set weight-edge 0.2585 set color 2] ask link 6 13 [set weight-edge 0.4514 set color 2] ask link 7 9 [set weight-edge 0.4048 set color 2] ask link 7 10 [set weight-edge 1.4768 set color 2] ask link 7 11 [set weight-edge 0.2708 set color 2] ask link 7 12 [set weight-edge 0.0597 set color 2] ask link 7 13 [set weight-edge 0.2151 set color 2] ask link 8 10 [set weight-edge 0.3751 set color 2] ask link 8 11 [set weight-edge 0.3893 set color 2] ask link 8 12 [set weight-edge 0.9414 set color 2] ask link 8 13 [set weight-edge 0.1939 set color 2] ask link 9 10 [set weight-edge 1.5718 set color 2] ask link 9 11 [set weight-edge 0.3491 set color 2] ask link 9 12 [set weight-edge 0.7233 set color 2] ask link 9 13 [set weight-edge 0.1407 set color 2] ask link 10 11 [set weight-edge 0.2362 set color 2] ask link 10 12 [set weight-edge 0.4935 set color 2] ask link 11 12 [set weight-edge 0.666 set color 2] ask link 11 13 [set weight-edge 1.4769 set color 2] ask link 12 13 [set weight-edge 0.2156 set color 2] end to go ;if ticks = 20 [stop] ;if ticks = 10 [file-close-all] spread-activation list-mood tick update-plot set shock 1 make-histogram episode-counter ;file-open "output.txt" ;file-write (count symptoms with [symptom-present?]) end to administer-shock set shock 0 ; ask links ; [ ; set weight-edge 0 ; ] end ;;;;;;;;;;;;;;;;;;;;;;; ;;; Main Procedures ;;; ;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Spread activation: The likelihood is calculated and drawing a random number between a uniform distribution of 0 and 1 ;; ;; determines whether the symptom will actually be activated or deactivated ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to spread-activation ask symptoms with [symptom-present?] [ calculate-chance-to-become-activated if random 1000 / 1000 > chance-to-become-activated [ become-symptom-absent ;show individual-stress ] ] ask symptoms with [not symptom-present?] [ calculate-chance-to-become-activated if random 1000 / 1000 < chance-to-become-activated [ become-symptom-present ;show individual-stress ] ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Calculates the likelihood with a logistic function ;; ;; Makes a list with the actual activation values of the symptoms ;; ;; Makes a matrix from list-activation-all to perform matrix algebra ;; ;; and calculates the chance to become activated in a random order ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to calculate-chance-to-become-activated ind-stress ask symptoms [ set total-activation 0 let j 0 while [j < count symptoms] [ if link who j != nobody [ if who < j [ let temptot-activation 1 ifelse kindling-effect? [set temptot-activation ([weight-edge] of link who j * [activation] of symptom j * connection-strength-after-episode)] [ set temptot-activation ([weight-edge] of link who j * [activation] of symptom j * connection-strength) ] set total-activation total-activation + temptot-activation ] if who > j [ let temptot-activation 1 ifelse kindling-effect? [set temptot-activation ([weight-edge] of link j who * [activation] of symptom j * connection-strength-after-episode)] [set temptot-activation ([weight-edge] of link j who * [activation] of symptom j * connection-strength)] ;if kindling-effect? [ set temptot-activation temptot-activation * (1 + 0.005 ^ ctr) ] set total-activation total-activation + temptot-activation ] ] set j j + 1 ] set Act total-activation + external-activation + individual-stress set chance-to-become-activated (1 / (1 + exp ((b - Act)))) * shock ] end to ind-stress ask symptom 0 [set individual-stress Depressed-mood] ask symptom 1 [set individual-stress Loss-of-interest] ask symptom 2 [set individual-stress Weight-loss] ask symptom 3 [set individual-stress Weight-gain] ask symptom 4 [set individual-stress Decreased-appetite] ask symptom 5 [set individual-stress Increased-appetite] ask symptom 6 [set individual-stress Insomnia] ask symptom 7 [set individual-stress Hypersomnia] ask symptom 8 [set individual-stress Psychomotor-agitation] ask symptom 9 [set individual-stress Psychomotor-retardation] ask symptom 10 [set individual-stress Fatigue] ask symptom 11 [set individual-stress Worthlessness] ask symptom 12 [set individual-stress Concentration-problems] ask symptom 13 [set individual-stress Suicidal-thoughts] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Calculates the number of episodes;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to episode-counter if ticks >= 300 [ let last14days sublist mood (length mood - 14) (length mood) ifelse length (filter [i -> i >= 7] last14days) = 14 [ifelse episode-continue? [ ;show "this is running1" set episode 1] [ ;show "this is running2" set episode 1 set episode-cntr episode-cntr + 1 if kindling-effect? [set connection-strength-after-episode connection-strength-after-episode + 0.01] set episode-continue? true] ] [ifelse length (filter [i -> i >= 7] last14days) > 7 [ if episode-continue? [;show "this is running3" set episode 1] ] [ ;show "this is running4" set episode 0 set episode-continue? false ] ] ;show last14days ;show connection-strength-after-episode ] end to-report counter [a] report a end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; procedures to activate and deactivate symptoms ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to become-symptom-absent set symptom-present? false set activation 0 set shape "circle 2" set size 1 end to become-symptom-present set symptom-present? true set activation 1 set shape "circle" set color red set size 2 end to list-mood set mood lput (count symptoms with [symptom-present?]) mood if length mood > 1000 [ set mood butfirst mood ] end ;;;;;;;;;;;;;;;;;;;;;;; ;;; Plots ;;; ;;;;;;;;;;;;;;;;;;;;;;; to update-plot set-current-plot "Network Status" set-current-plot-pen "cut-off" ;; we don't want the "auto-plot" feature to cause the ;; plot's x range to grow when we draw the axis. so ;; first we turn auto-plot off temporarily auto-plot-off plotxy 0 7 plotxy 1000000000 7 auto-plot-on set-current-plot-pen "symptom-present" plot (count symptoms with [symptom-present?]) ;set-current-plot-pen "external-activation" ;plot ((external-activation + 8) / 2) ;set-current-plot-pen "connection-strength" ;plot (connection-strength * 5) set-current-plot "Hysteresis plot" set-current-plot-pen "symptom-present" ifelse external-activation >= external-stress [set-plot-pen-color 15 set external-stress external-activation ] [set-plot-pen-color 105] ;set external-stress external-activation ] plotxy (external-activation) (mean mood) ;(count symptoms with [symptom-present?]) set-current-plot "Depressive episodes" set-current-plot-pen "episode" plot episode ;-cntr end to make-histogram set-current-plot "Histogram of active symptoms" set-current-plot-pen "mood" histogram mood end ; *** NetLogo 4.0.3 Model Copyright Notice *** ; ; Copyright 2008 by Uri Wilensky. All rights reserved. ; ; Permission to use, modify or redistribute this model is hereby granted, ; provided that both of the following requirements are followed: ; a) this copyright notice is included. ; b) this model will not be redistributed for profit without permission ; from Uri Wilensky. ; Contact Uri Wilensky for appropriate licenses for redistribution for ; profit. ; *** End of NetLogo 4.0.3 Model Copyright Notice ***
There are 7 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Depression-ANetworkApproach.png | preview | Preview for 'Depression-ANetworkApproach' | over 3 years ago, by Kamlesh Sahoo | Download |
This model does not have any ancestors.
This model does not have any descendants.