# This simulation will generate a simulated data set with social network connections.
# For reference on how to us R to analyze social networks, check out: Mike Nowak and Sean Westwood. 2010. "Social Network Analysis Labs in R." Stanford University.
# First lets decide how many people we would like to simulate in our social network.
npeople = 50
# We will create an edgelist which defines all of the relationships between everybody in the network.
# First let's create a pure random network.
# First we will populate it by a list of all of the edges.
rnet <- data.frame(ego=rep(1:npeople,each=npeople), alter=rep(1:npeople,times=npeople), friendship=0)
# Right now we have all of the edges (npeople^2) and now we just need to populate it with connections.
# These connection will be random on our first pass at this.
# Because these connections are "friendship" connections we will assume that they go both directions.
# Let's define the density of connections: Ie number of connections per potential connection.
conDen = .05
# This double loop should make it so that every connection is examined for a potential connection
for (i in 1:npeople) for (ii in (i+1):npeople) if ((rbinom(1,1,conDen)==1)&(i!=ii)) {
print(paste(i,ii))
rnet$friendship[(rnet$ego==i & rnet$alter==ii)] <- 1
rnet$friendship[(rnet$ego==ii & rnet$alter==i)] <- 1
}
head(rnet)
# We can see that as we had planned there is a specific number of connections.
summary(rnet)
# For graphing our connections we will use the package igraph
require(igraph)
# Let's try generating our first graph:
plot(graph.data.frame(rnet[rnet$friendship==1,], directed=F), main="Purely Random Connections")
# I reran this code a number of times before I found a network that did not have any stray members who were unconnected. However, a large portion of the time at least one member us unconnected with the larger network.
# In later posts I will enrich this simulation to allow for networks to be generated dynamically. That is friends bridge friendships between friends.
No comments:
Post a Comment