Use this if you are using igraph from R
sample_pa_age {igraph}  R Documentation 
This function creates a random graph by simulating its evolution. Each time a new vertex is added it creates a number of links to old vertices and the probability that an old vertex is cited depends on its indegree (preferential attachment) and age.
sample_pa_age(
n,
pa.exp,
aging.exp,
m = NULL,
aging.bin = 300,
out.dist = NULL,
out.seq = NULL,
out.pref = FALSE,
directed = TRUE,
zero.deg.appeal = 1,
zero.age.appeal = 0,
deg.coef = 1,
age.coef = 1,
time.window = NULL
)
pa_age(...)
n 
The number of vertices in the graph. 
pa.exp 
The preferential attachment exponent, see the details below. 
aging.exp 
The exponent of the aging, usually a nonpositive number, see details below. 
m 
The number of edges each new vertex creates (except the very first
vertex). This argument is used only if both the 
aging.bin 
The number of bins to use for measuring the age of vertices, see details below. 
out.dist 
The discrete distribution to generate the number of edges to
add in each time step if 
out.seq 
The number of edges to add in each time step, a vector containing as many elements as the number of vertices. See details below. 
out.pref 
Logical constant, whether to include edges not initiated by the vertex as a basis of preferential attachment. See details below. 
directed 
Logical constant, whether to generate a directed graph. See details below. 
zero.deg.appeal 
The degreedependent part of the ‘attractiveness’ of the vertices with no adjacent edges. See also details below. 
zero.age.appeal 
The agedependent part of the ‘attrativeness’ of the vertices with age zero. It is usually zero, see details below. 
deg.coef 
The coefficient of the degreedependent ‘attractiveness’. See details below. 
age.coef 
The coefficient of the agedependent part of the ‘attractiveness’. See details below. 
time.window 
Integer constant, if NULL only adjacent added in the last

... 
Passed to 
This is a discrete time step model of a growing graph. We start with a network containing a single vertex (and no edges) in the first time step. Then in each time step (starting with the second) a new vertex is added and it initiates a number of edges to the old vertices in the network. The probability that an old vertex is connected to is proportional to
P[i] \sim (c\cdot k_i^\alpha+a)(d\cdot l_i^\beta+b)
.
Here k_i
is the indegree of vertex i
in the current time
step and l_i
is the age of vertex i
. The age is simply
defined as the number of time steps passed since the vertex is added, with
the extension that vertex age is divided to be in aging.bin
bins.
c
, \alpha
, a
, d
, \beta
and
b
are parameters and they can be set via the following arguments:
pa.exp
(\alpha
, mandatory argument), aging.exp
(\beta
, mandatory argument), zero.deg.appeal
(a
,
optional, the default value is 1), zero.age.appeal
(b
,
optional, the default is 0), deg.coef
(c
, optional, the default
is 1), and age.coef
(d
, optional, the default is 1).
The number of edges initiated in each time step is governed by the m
,
out.seq
and out.pref
parameters. If out.seq
is given
then it is interpreted as a vector giving the number of edges to be added in
each time step. It should be of length n
(the number of vertices),
and its first element will be ignored. If out.seq
is not given (or
NULL) and out.dist
is given then it will be used as a discrete
probability distribution to generate the number of edges. Its first element
gives the probability that zero edges are added at a time step, the second
element is the probability that one edge is added, etc. (out.seq
should contain nonnegative numbers, but if they don't sum up to 1, they
will be normalized to sum up to 1. This behavior is similar to the
prob
argument of the sample
command.)
By default a directed graph is generated, but it directed
is set to
FALSE
then an undirected is created. Even if an undirected graph is
generated k_i
denotes only the adjacent edges not initiated by
the vertex itself except if out.pref
is set to TRUE
.
If the time.window
argument is given (and not NULL) then
k_i
means only the adjacent edges added in the previous
time.window
time steps.
This function might generate graphs with multiple edges.
A new graph.
Gabor Csardi csardi.gabor@gmail.com
# The maximum degree for graph with different aging exponents
g1 < sample_pa_age(10000, pa.exp=1, aging.exp=0, aging.bin=1000)
g2 < sample_pa_age(10000, pa.exp=1, aging.exp=1, aging.bin=1000)
g3 < sample_pa_age(10000, pa.exp=1, aging.exp=3, aging.bin=1000)
max(degree(g1))
max(degree(g2))
max(degree(g3))