This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
library(igraph)
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
g_family <- graph_from_literal(
Me-Mom:Dad:Sister:Brother,
Mom-Dad,
Sister-Brother,
Me-Grandma, Mom-Grandma,
Me-husband)
plot(g_family)
A fitness-apparel brand is launching a new product and can give free samples to only two people. The network below shows who influences whom on social media. Use network metrics to decide who should receive the samples.
library(igraph)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:igraph':
##
## as_data_frame, groups, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# A social media network around a brand
g_mkt <- graph_from_literal(
Brand-Ava-Ben-Cara, # chain of connections
Brand-Cara,
Ava-Dan:Eli:Fay, # Ava is connected to Dan, Eli, and Fay
Ben-Gus,
Cara-Hal:Ivy,
Dan-Eli,
Fay-Gus,
Hal-Ivy-Jon,
Brand-Kim-Jon
)
set.seed(123) # fixes the layout so the plot looks the same each time
plot(g_mkt, vertex.color = "lightblue", vertex.label.color = "black")
Look at the plot above. Who looks most “central” visually? Identify any cliques (tightly connected groups).
Brand and Ben are the most central. I think a clique would consist of Brand, Ben, Ave, and Cara because they are connected together tightly.
Compute degree, closeness, and betweenness, then put the results in one data frame and rank the nodes.
centrality_df <- data.frame(
person = V(g_mkt)$name,
degree = degree(g_mkt),
closeness = round(closeness(g_mkt), 3),
betweenness = round(betweenness(g_mkt), 2)
)
centrality_df %>% arrange(desc(betweenness))
## person degree closeness betweenness
## Ava Ava 5 0.050 25.83
## Cara Cara 4 0.048 18.17
## Brand Brand 3 0.050 17.00
## Ben Ben 3 0.048 13.33
## Kim Kim 2 0.037 5.00
## Ivy Ivy 3 0.037 4.50
## Fay Fay 2 0.036 2.17
## Gus Gus 2 0.034 1.50
## Jon Jon 2 0.033 1.50
## Dan Dan 2 0.034 0.00
## Eli Eli 2 0.034 0.00
## Hal Hal 2 0.034 0.00
Ava ranks highest on all three measures: degree (5), closeness (0.050, tied with Brand), and betweenness (25.83), making her the central hub of the network. Cara, Brand, and Ben form a consistent second tier. The rankings mostly agree at the top but diverge below it: Brand has only 3 ties yet matches Ava on closeness, suggesting his connections reach the network efficiently, while Ivy has the same degree as Brand but much lower closeness and betweenness, meaning her ties are to less central people. Kim has just 2 ties but a higher betweenness than Ivy, which suggests she bridges separate parts of the network. Dan, Eli, and Hal have betweenness of 0, so they sit on the periphery and aren’t needed to connect anyone else.
Which two people should receive free samples? Justify your choice using at least two different metrics. (Hint: is high degree the same as being a bridge?)
I’d give free samples to Ava and Brand. Ava ranks first or tied for first on all three metrics (degree 5, closeness 0.050, betweenness 25.83), so she has the most direct ties and the quickest reach to everyone else. Brand has fewer ties than Cara (3 vs. 4), but he ties Ava for the highest closeness (0.050) and has a betweenness of 17.00, nearly matching Cara’s. That shows high degree isn’t the same as being a bridge: Brand sits closer to the whole network and connects people who otherwise wouldn’t be linked, so sampling him spreads the product further than a person who simply knows more people.