0

我打算在网络数据上使用它。

我的网络有两种边缘。我编写了一个函数,它分别返回这两种边缘类型的入度,以便您查看它的外观:

    Node    G_obs   R_obs
1   N1      3       2
2   N2      1       0
3   N3      9       0
4   N4      1       4
5   N5      1       0
...

我写了另一个对网络边缘进行采样的函数。这是它之后的样子:

    Node    G_obs   R_obs
1   N1      4       1
2   N2      1       0
3   N3      3       6
4   N4      3       2
5   N5      1       0
...

请注意,G_obs+R_obs,也就是节点的入度保持不变。

我想知道每个节点的 pValue 以在 G_obs 和 R_obs 之间具有最初观察到的入度分割。

编辑: 对不起 - 这似乎有点太不清楚了。我不想要观察到的分布的逐行概率。我想要观察到的G_obs,R_obs为每个节点分裂的概率,其中 sample(G_obs) + sample(R_obs) 仍然具有与以前相同的节点总和。下次我应该咨询以英语为母语的人以获得更好的措辞。希望我现在更清楚地描述了这个问题:(

编辑 2

观察:

    Node    G_obs   R_obs
1   N1      3       2
2   N2      1       0
3   N3      9       0
4   N4      1       4
5   N5      1       0

如您所见,N1 有 5 个入边。其中 3 个为绿色 (G_obs),其中 2 个为红色 (R_obs)

对于所示的 5 个节点,我们总共有 15 个绿色边缘和 6 个红色边缘。现在我们“采样”所有绿色和所有红色边缘,也就是将它们重新分配到指定的列中——但同时,N1 仍然有 5 个边缘。(参见上面的示例示例,其中

    Node    G_obs   R_obs
1   N1      4       1
...

我已经有一个函数可以正确地提供“采样”(占位符mySample(graph):),并且需要一个函数来获取 mySample,使用它例如 1000 次,并计算每个节点的原始观测值的可能性。

任何帮助表示感谢谢谢

4

1 回答 1

2

听起来你在追求二项式概率(在两种类型之间随机划分边的概率将产生与最初观察到的相同的分布)。

您可以使用以下函数计算这些概率dbinom()

transform(
  df,
  prob_same = dbinom(G_obs, G_obs + R_obs, prob = .5)
)

数据

df <- read.table(
  text = "
   Node    G_obs   R_obs
N1      3       2
N2      1       0
N3      9       0
N4      1       4
N5      1       0
  ",
  header = TRUE
)
于 2015-02-10T15:10:51.553 回答