Learn R Programming

netdiffuseR (version 1.16.2)

rdiffnet: Random diffnet network

Description

Simulates a diffusion network by creating a random dynamic network and adoption threshold levels.

Usage

rdiffnet(n, t, seed.nodes = "random", seed.p.adopt = 0.05,
  seed.graph = "scale-free", rgraph.args = list(), rewire = TRUE,
  rewire.args = list(p = 0.1, undirected = TRUE),
  threshold.dist = function(x) runif(1), exposure.args = list(outgoing =
  TRUE, valued = getOption("diffnet.valued", FALSE), normalized = TRUE))

Arguments

n
Integer scalar. Number of vertices.
t
Integer scalar. Time length.
seed.nodes
Character scalar. Type of seed nodes (early adoptes).
seed.p.adopt
Numeric scalar. Proportion of early adopters.
seed.graph
Character scalar. Type of algorithm used to generate the seed graph (see details).
rgraph.args
List. Arguments to be passed to rgraph.
rewire
Logical scalar. When TRUE, network slices are generated by rewiring (see rewire_graph).
rewire.args
List. Arguments to be passed to rewire_graph.
threshold.dist
Function. Applied via sapply, sets the adoption threshold for each node.
exposure.args
List. Arguments to be passed to link{exposure}.

Value

Details

Instead of randomizing whether an individual adopts the innovation or not, this toy model randomizes threshold levels, seed adopters and network structure, so an individual adopts the innovation in time $T$ iff his exposure is above or equal to his threshold. The simulation is done in the following steps:

  1. Usingseed.graph, a baseline graph is created.
  2. Given the baseline graph, the set of initial adopters is defined usingseed.nodes.
  3. Afterwards, ifrewire=TRUE$t-1$slices of the network are created by iteratively rewiring the baseline graph.
  4. Thethreshold.distfunction is applied to each node in the graph.
  5. Simulation starts at$t=2$asigning adopters in each time period accordingly to each vertex's threshold and exposure.

seed.nodes can be "marginal", "central" or "random", So each of these values sets the initial adopters using the vertices with lowest degree, with highest degree or completely randomly. The number of early adoptes is set as seed.p.adopt * n. Please note that when marginal nodes are set as seed it may be the case that no diffusion process is attained as the chosen set of first adopters can be isolated.

The argument seed.graph allows the user to set the algorithm used to generate the first network (network in t=1). This can be either "scale-free" (Barabasi-Albert model using the rgraph_ba function, the default), "bernoulli" (Erdos-Renyi model using the rgraph_er function), or "small-world" (Watts-Strogatz model using the rgraph_ws function). The list rgraph.args passes arguments to the chosen algorithm.

When rewire=TRUE, the networks that follow t=1 will be generated using the rewire_graph function as $G(t) = G(t-1)$.

Finally, threshold.dist sets the threshold for each vertex in the graph. It is applied using sapply as follows

sapply(1:n, threshold.dist)

By default sets the threshold to be random for each node in the graph.

See Also

Other simulation functions: rewire_graph, rgraph_ba, rgraph_er, rgraph_ws

Examples

Run this code
# Asimple example -----------------------------------------------------------
z <- rdiffnet(50,10)
z
summary(z)

# A more complex example: Adopt if at least one neighbor has adopted --------
y <- rdiffnet(50, 10, threshold.dist=function(x) 1,
    exposure.args=list(valued=FALSE, normalized=FALSE))

Run the code above in your browser using DataLab