如何确定Erdos renyi随机图模型的概率

时间:2016-05-21 07:20:05

标签: r graph-theory

我理解erdos ranyi随机图模型背后的逻辑。我使用R studio生成这个随机图。该模型有两个子部分,一个是G(n,p),其中,n =节点总数,p =任意两个节点共享边缘的概率。我们必须将概率作为输入传递。假设我接受硬币翻转的随机实验,那么如果有头,我将连接两个节点,如果有尾部,我将不会连接两个概率为0.5的节点。当假设我将提供概率p = 0.3并且节点数是5时,我没有得到那个,那么节点将如何基于0.3概率连接。我的脚本如下。

library(igraph)
g10 <- erdos.renyi.game(5,0.3)

1 个答案:

答案 0 :(得分:2)

如果您有5个节点,那么在无向图中您有5 * 4/2 = 10个可能的边。如果每条边存在概率为0.3的情况,则这些图的多个实例上的边数分布为二项式,概率为0.3,大小为10.

让我们进行实验。生成1000个图表并将节点数列表:

> g3_edges = table(replicate(1000,length(E(erdos.renyi.game(5,.3)))))
> g3_edges

  0   1   2   3   4   5   6   7   8 
 34 132 230 266 194 100  31  12   1 

由p = 0.3得到的0到8个边缘的理论分布由dbinom给出,我将乘以我的1000个模拟计数并取整数与我的模拟表进行比较:

> p3_edges = as.integer(dbinom(0:8, size=10, p=0.3)*1000)
> p3_edges
[1]  28 121 233 266 200 102  36   9   1

看起来非常接近,可能在随机抽样变体中。此外,我们没有生成任何具有9或10个边的图,并且理论分布在8个边缘已经下降到1,所以这也不奇怪。

> cbind(g3_edges, p3_edges)
  g3_edges p3_edges
0       34       28
1      132      121
2      230      233
3      266      266
4      194      200
5      100      102
6       31       36
7       12        9
8        1        1

如果需要,请重复p = 0.5。在这种情况下,我得到了最多9条边的图形:

> g5_edges = table(replicate(1000,length(E(erdos.renyi.game(5,.5)))))
> p5_edges = as.integer(dbinom(0:9, size=10, p=0.5)*1000)
> cbind(g5_edges, p5_edges)
  g5_edges p5_edges
0        2        0
1       14        9
2       53       43
3      102      117
4      216      205
5      266      246
6      199      205
7       91      117
8       39       43
9       18        9

那你的问题在哪里?