R中的Urn模型(试图计算随机事件的概率)

时间:2016-11-20 16:18:16

标签: r permutation probability combinatorics urn

我真的希望你能解决我自己无法解决的问题。 我正在尝试为网络应用程序编写基本的urn模型。我想在具有2种不同颜色的模型中根据不同的绘图方法计算特定随机事件的概率。

在矢量中指定骨灰盒(红色和黑色球)的组成 a< -c(number_red,number_black)

随机事件在另一个vecotor中指定,让我们说 b< -c("红色","红色","黑色","红色")或任何其他红色和黑色球组合

现在想要计算事件的概率(向量b),当球是 1)在瓮中更换,顺序确实很重要 2)不要在骨灰盒中更换,顺序确实很重要 3)不要在骨灰盒中更换,顺序并不重要 4)在骨灰盒中更换,顺序并不重要

我提出了几个不同的想法,但没有一个真的奏效...... 起初我写了一些函数,以确定每个场景中可以绘制多少种不同的组合。

stan = function(n,x) {return(n^x)}
perm = function(n, x) {return(factorial(n) / factorial(n-x))}
komb = function(n, x) {return(factorial(n) / (factorial(n-x)*factorial(x)))}
komb2 = function(n, x) {return(factorial(n+x-1) / (factorial(n-1)*factorial(x)))}

但后来我真的不知道如何应用它们来计算最终概率。

我还尝试使用for循环来模拟树形图,但它对我来说太复杂了。例如:

c <- c(number_red/(number_red+number_black), number_red/(number_red+number_black))
b <- c("red","black","red")
b[b=="red"]<-1
[b=="black"]<-2
b<-as.numeric(b)

vec<-NULL

for (i in b){
vec<-c(vec, c[i])}

prod(vec)

这样的解决方案为问题#1提供了正确的结果,但我真的不知道如何将其应用于其他问题,因为每次我必须根据向量b的组成找到改变向量c的方法运行循环。

当然,我已经尝试了不同的想法,但它们似乎都没有真正起作用。如果有人可以帮我解决我的问题,我将非常感激。

最佳, 亨利

1 个答案:

答案 0 :(得分:0)

这是对的吗?

a <- c(red = 5, black = 5)
b <- c("red","red","black","red")


# (1)
prod((a/sum(a))[b])

# (2)
p <- c()
n <- a
for(i in b){
    p <- c(n[i] / sum(n), p)
    n[i] <- n[i] - 1
}
prod(p)

# (3)
komb <- function(n, x) {
    return(factorial(n) / (factorial(n-x)*factorial(x)))
}

n <- table(b)

prod(sapply(names(n), function(i){
    komb(a[i], n[i])
})) / komb(sum(a), sum(n))

# (4)
# I think it is the same as (1) as each sample is independent;