Modeling the Spread of Viral Videos

No preview image

1 collaborator

Default-person Jeanette Pranin (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 5.2.1 • Viewed 167 times • Downloaded 10 times • Run 0 times
Download the 'Modeling the Spread of Viral Videos' 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 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

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

Click to Run Model

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.

Uploaded by When Description Download
Jeanette Pranin about 1 year ago Final Version Download this version
Jeanette Pranin about 1 year ago Added types of video ("Animals", "Activism", etc) Download this version
Jeanette Pranin about 1 year ago Turtles now "watch" the videos Download this version
Jeanette Pranin about 1 year ago Initial upload Download this version

Attached files

File Type Description Last updated
JeanettePranin_May16.docx word Second Progress Report about 1 year ago, by Jeanette Pranin Download
JeanettePranin_May23.docx word Third Progress Report about 1 year ago, by Jeanette Pranin Download
JeanettePranin_May9.docx word First Progress Report for Final Project, due May 9th 2016 about 1 year ago, by Jeanette Pranin Download
Modeling Viral Videos.docx word Final Report with Results of Model about 1 year ago, by Jeanette Pranin Download

This model does not have any ancestors.

This model does not have any descendants.