Modeling the Spread of Viral Videos
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
This model explores what makes a video go viral. The simple rules that drive turtles to share videos produce wildly different results based on the network of the social world, as specified by the network-type dropdown. This model may be useful in seeing what contributes to the popularity of a video and what people can do to make a viral video.
HOW IT WORKS
People are represented as turtles, videos as patches, and networks as links.
A network connects the people to each other. If it is a random network, then there is a 10% chance that a person is connected to another person. If it is a preferential network, people are more likely to be connected with people who have numerous connections. If it is a small-world network, a person is no more than six degrees of separation away from another person.
The world itself is organized into blocks: The top left of the world have the more frequently shared types of videos (Animal Videos are red, Activism videos are orange) while the bottom left of the world have the less frequently shared video types (Music videos are dark gray, Show videos are white).
These are the steps that the people follow in a tick cycle: 1) People “watch” the video represented by the patch that they are currently on. The more a video is watched, the darker the patch becomes (when it has a high number of views it reverts back to a lighter color).
2) If a person watches the video and likes it enough to share (which is computed by their own likelihood of sharing, the rate of sharing of the video-type as described by Broxton et al., and the social motivation score of the video), they will recommend the video to their network.
3) They will find a new video to watch by taking the recommendation of their most influential neighbor, or the person with which they have the heaviest weighted link.
3a) If they have seen this video before, there is a 50% chance they will watch it again. If they watch the video and they like it, they will share the video and strengthen the connection between them and the recommender of the video by increasing the link weight between them by 1.
3b) Otherwise, they will move to a related video by moving to a nearby patch.
Every (deletion-rate) number of ticks, (chance-of-deletion) percent of the videos is deleted in order to simulate new videos being uploaded. Deletion-rate and chance-of-deletion are values determined by sliders.
HOW TO USE IT
You may control the number of people in the world, the type of network that connects them, the deletion rate of the videos (how often videos are deleted) and the chance of deletion rate (how likely a video is to be deleted). Simply use the sliders and dropdown on the left hand slide to vary these parameters.
THINGS TO NOTICE
Notice the density of the network depending on the network type. Also take advantage of the go-once button instead of the traditional go to see the behavior of each person (how often does one share, how often does one move to a related video, etc.) up close. Sometimes people will jump to the other side of the world, while other times they will simply stay in place.
Finally, watch the Rates of Sharing plot on the right hand side of the model to see the rates at which certain types of videos are being shared. If the model replicated results found in research (mentioned below in the References section), the plot should display, from top to bottom, the order in which the legend is listed, i.e. Animal videos will always be shared the most, followed by Activism videos, then Politics videos, and so on.
THINGS TO TRY
Try varying the network type and then try opposite values of the slider conditions (i.e. try running the model with the lowest values of the number-of-people, deletion-rate, chance-of-deletion rate and then try the highest ones). See how the results differ.
EXTENDING THE MODEL
There are limitations with this model that can be addressed in future iterations of this model. Firstly, in order to model more realistic networks, people who have similar interests (e.g. like inspirational videos more than funny videos) are connected to and have heavier links between each other. The same can be done with videos: videos with similar social motivation ratings can be closer in proximity to each other. Secondly, the effect of when tastemakers, or people who set trends through social media, share a video may also have a significant impact on how popular it becomes. The tastemaker’s influence may also impact how popular related videos become. These and other questions can and should be explored in the future.
NETLOGO FEATURES
This model utilizes the Netlogo Network extension to create the three types of networks, random, preferential, and small-world. References are cited below.
You may also find it interesting to run BehaviorSpace experiments on this model to quickly produce more over-arching findings.
RELATED MODELS
Please take a look at the following models to explore related phenomena.
Wilensky, U. (1998). NetLogo Virus model. http://ccl.northwestern.edu/netlogo/models/Virus. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Stonedahl, F. and Wilensky, U. (2008). NetLogo Virus on a Network model. http://ccl.northwestern.edu/netlogo/models/VirusonaNetwork. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
CREDITS AND REFERENCES
Bodnar, Kipp. “Happy 5th Anniversary to Youtube’s First Viral Video.” HubSpot (2010). Broxton, Tom, et al. “Catching a viral video.” Journal of Intelligent Information Systems 40.2 (2013): 241-259.
Guadagno, Rosanna E., et al. “What makes a video go viral? An analysis of emotional contagion and Internet memes.” Computers in Human Behavior 29.6 (2013): 2312-2319. Moore, Gregory. “The Holy Grail of Viral Video: ‘Shareability’?. Overdrive Interactive (2013).
Siverd, Veronica. “Data Scientists Show Music Makes Video More Shareable.” JustGo.com (2013).
Wilensky, U. (1999). NetLogo [computer software]. Evanston, IL: Center for Connected Learning and Computer-Based Modeling, Northwestern University. http://ccl.northwestern.edu/netlogo .
Wilensky, U. Head, B. & Payette, N. (2012). NetLogo Networks Extension. Evanston, IL: Center for Connected Learning and Computer Based Modeling, Northwestern University. http://ccl.northwestern.edu/netlogo/docs/nw.html .
Wilensky, U., & Shargel, B. (2002). BehaviorSpace [Computer Software]. Evanston, IL: Center for Connected Learning and Computer Based Modeling, Northwestern University. https://ccl.northwestern.edu/netlogo/docs/behaviorspace.html .
Comments and Questions
extensions [ nw ] globals [ ;;from http://link.springer.com.turing.library.northwestern.edu/article/10.1007/s10844-011-0191-2/fulltext.html\ ;;rates of likelihood of sharing based on type of video likelihood-list ;;Possible types of video types-of-video ;most popular video most-popular-video ;most sharing person most-sharing-person ;total number of videos that have been shared total-number-shared ;rates of sharing by video-type found by model rates-of-sharing types-of-social-motivation ] turtles-own [ ;; videos this turtle has seen (will have video-ids of patches) videos-seen ;; chance that this person will share chance-of-sharing ;; if you are recommending right now recommending? ;previous recommender prev-recommender ;number of times this person has shared a video num-times-shared ] patches-own [ ;; number of times video has been viewed num-times-viewed ;; type of video video-type ;; id for videos to be put into "videos-seen" of turtles video-id ;social motivation ratings motivation-ratings ;last person who shared this video shared-by ] links-own [ weight ] to setup clear-all set-globals create-people create-all-videos reset-ticks end to set-globals ;;from http://link.springer.com.turing.library.northwestern.edu/article/10.1007/s10844-011-0191-2/fulltext.html\ ;;rates of likelihood of sharing based on type of video set likelihood-list [42.3 38.8 31.7 29.5 28.8 28.4 28.1 26.7 23.8 20.0 19.7 15.6 15.3 14.0 12.8 9.8] set types-of-social-motivation ["shared-passion" "social-irl" "social-utility" "social-good" "zeitgeist" "kudos" "reaction-seeking" "self-expression" "shared-emotional-experience"] set rates-of-sharing [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ;;possible types of video set types-of-video [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16] set most-popular-video max-one-of patches [num-times-viewed] set most-sharing-person max-one-of turtles [num-times-shared] set total-number-shared 1 end to create-people set-default-shape turtles "person" if network-type = "random" [ create-random-network ] if network-type = "preferential" [ create-preferential-network ] if network-type = "small-world" [ create-small-world-network ] setup-links ask turtles [ ;nobody has recommended a video yet set prev-recommender nobody set color brown + 1 ;;nobody has seen any videos at the start set videos-seen [] ;how often this turtle shares a video they like set chance-of-sharing random 100 ;no turtle is recommending a video upon initialization set recommending? false ;;random x y position setxy random-xcor random-ycor ] end ;creates a random network between turtles to create-random-network ; with 10% chance of being connected nw:generate-random turtles links number-of-people 0.1 end to create-preferential-network nw:generate-preferential-attachment turtles links number-of-people end to create-small-world-network let sq sqrt number-of-people nw:generate-small-world turtles links sq sq 2.0 false end to setup-links ;link procedure ask links [ set weight 1 set label weight ] end to create-new-video ;patch procedure set num-times-viewed 0 set shared-by nobody set motivation-ratings (list (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) (random 5 + 1) ) ;going from upper-left corner to bottom right corner if pxcor <= -8 and pxcor >= -16 and pycor <= 16 and pycor >= 8 [ set video-type 1 ] if pxcor <= -8 and pxcor >= -16 and pycor <= 8 and pycor >= 0 [ set video-type 2 ] if pxcor <= 0 and pxcor >= -8 and pycor <= 16 and pycor >= 8 [ set video-type 3 ] if pxcor <= -8 and pxcor >= -16 and pycor <= 0 and pycor >= -8 [ set video-type 4 ] if pxcor <= 0 and pxcor >= -8 and pycor <= 8 and pycor >= 0 [ set video-type 5 ] if pxcor <= 8 and pxcor >= 0 and pycor <= 16 and pycor >= 8 [ set video-type 6 ] if pxcor <= -8 and pxcor >= -16 and pycor <= -8 and pycor >= -16 [ set video-type 7 ] if pxcor <= 0 and pxcor >= -8 and pycor <= 0 and pycor >= -8 [ set video-type 8 ] if pxcor <= 8 and pxcor >= 0 and pycor <= 8 and pycor >= 0 [ set video-type 9 ] if pxcor <= 16 and pxcor >= 8 and pycor <= 16 and pycor >= 8 [ set video-type 10 ] if pxcor <= 0 and pxcor >= -8 and pycor <= -8 and pycor >= -16 [ set video-type 11 ] if pxcor <= 8 and pxcor >= 0 and pycor <= 0 and pycor >= -8 [ set video-type 12 ] if pxcor <= 16 and pxcor >= 8 and pycor <= 8 and pycor >= 0 [ set video-type 13 ] if pxcor <= 8 and pxcor >= 0 and pycor <= -8 and pycor >= -16 [ set video-type 14 ] if pxcor <= 16 and pxcor >= 8 and pycor <= 0 and pycor >= -8 [ set video-type 15 ] if pxcor <= 16 and pxcor >= 8 and pycor <= -8 and pycor >= -16 [ set video-type 16 ] set pcolor video-color? video-type end to create-all-videos ;patch procedure ask patches [ create-new-video ] ;;create unique id for each patch (foreach (sort patches) (n-values count patches [?]) [ ask ?1 [ set video-id ?2 ] ]) end to go ask turtles [ watch-video find-new-video ] ; every deletion-rate number of ticks, delete old videos with too little views if ticks mod deletion-rate = 0 [ check-if-delete-video ] ;update MPV variable set most-popular-video max-one-of patches [num-times-viewed] ;update MSP variable set most-sharing-person max-one-of turtles [num-times-shared] tick end to watch-video ;turtle procedure set recommending? false let video [video-id] of patch-here ;if you've seen it, only a 50% chance you'll see it again. Otherwise, move to a related video ifelse member? video videos-seen and random 10 < 5 [ rt random 360 fd 1 ] [ ask patch-here [ ;set patch's own num-times-viewed set num-times-viewed num-times-viewed + 1 ;change color every 5 views if num-times-viewed mod 5 = 0 [ ifelse pcolor mod 10 = 0 [ set pcolor 0 ] [ set pcolor pcolor - 0.1 ] ] ] set videos-seen lput video videos-seen calculate-chance-of-sharing ] end to calculate-chance-of-sharing ;turtle procedure let temp-likelihood 0 let index video-type - 1 set temp-likelihood item index likelihood-list let social-motivation-rate [mean motivation-ratings] of patch-here / 5 ;5 because maximum motivation rating is a 5 for each of 9 categories, find that mean ; if product of them sharing it and likelihood of video type being shared is enough, share it if random-float 1 < social-motivation-rate * (chance-of-sharing / 100) * (temp-likelihood / 100) [ set shared-by self share-video index ;you liked and shared the video your previous recommender recommended ;strengthen the connection between you two if prev-recommender != nobody [ ask link-with prev-recommender [ set weight weight + 1 set label weight ] ] ] end to share-video [index] ;turtle procedure set num-times-shared num-times-shared + 1 ;set total times shared set total-number-shared total-number-shared + 1 ;set total times this video type has been shared let temp-val item index rates-of-sharing set temp-val temp-val + 1 set rates-of-sharing replace-item index rates-of-sharing temp-val set recommending? true end to find-new-video ;turtle procedure let links-sharing my-links with [[recommending?] of other-end] ; if anyone is currently sharing if any? links-sharing [ let bff-whos-sharing [other-end] of max-one-of links-sharing [weight] ;let bff-whos-sharing [other-end] of max-one-of my-links with [[recommending?] of other-end] [weight] if bff-whos-sharing = nobody [ stop ] set prev-recommender bff-whos-sharing move-to [patch-here] of bff-whos-sharing ] end to check-if-delete-video ;patches procedure ;will let us know whether to delete video-id from turtles' videos-seen list let deleted-videos [] ask patches [ let most-viewed [num-times-viewed] of most-popular-video ;create a new video in its place if random 100 < chance-of-deletion [ set deleted-videos lput video-id deleted-videos create-new-video ] ] ;remove the deleted videos from the turtles "video-seen" list because now ;new videos have taken their place foreach deleted-videos [ ask turtles [ if member? ? videos-seen [ set videos-seen remove ? videos-seen ] ] ] end to-report video-color? [v-type] let dark-gray gray - 3 let color-list (list red orange brown yellow green lime turquoise cyan sky blue violet magenta pink gray dark-gray white) let index v-type - 1 report item index color-list end to-report nominal-video-type? [v-type] let type-list ["Animals" "Activism" "Politics" "Travel" "Education" "Science" "Sports" "People" "Autos" "Comedy" "Howto" "Entertainment" "Games" "Film" "Music" "Shows"] let index v-type - 1 report item index type-list end
There are 4 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
JeanettePranin_May16.docx | word | Second Progress Report | over 9 years ago, by Jeanette Pranin | Download |
JeanettePranin_May23.docx | word | Third Progress Report | over 9 years ago, by Jeanette Pranin | Download |
JeanettePranin_May9.docx | word | First Progress Report for Final Project, due May 9th 2016 | over 9 years ago, by Jeanette Pranin | Download |
Modeling Viral Videos.docx | word | Final Report with Results of Model | over 9 years ago, by Jeanette Pranin | Download |
This model does not have any ancestors.
This model does not have any descendants.