我打算在网络数据上使用它。
我的网络有两种边缘。 我编写了一个函数,它分别返回这两个边类型的indegree,看看它是什么样的:
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,即节点的indegree保持不变。
我想知道每个节点的pValue是否在G_obs和R_obs之间有最初观察到的indegree-split。
修改 对不起 - 这似乎有点太不清楚了。 我不希望观察到的分布的行式概率。 我希望每个节点观察到的 G_obs,R_obs split 的概率,其中样本(G_obs)+样本(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次,并计算每个节点的原始观测的可能性。
任何帮助表示赞赏 谢谢
答案 0 :(得分: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
)