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

Posted

技术标签:

【中文标题】R中的Urn模型(尝试计算随机事件的概率)【英文标题】:Urn model in R (trying to calculate probabilities for random events) 【发布时间】:2017-04-04 00:46:18 【问题描述】:

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

骨灰盒的组成(红球和黑球)在向量中指定 一个

随机事件在另一个向量中指定,可以说 b

现在要计算事件的概率(向量 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运行循环。

当然,我尝试过不同的想法,但似乎没有一个真正奏效。如果有人可以帮助我解决我的问题,我将非常感激。

最好, 亨利

【问题讨论】:

在第二个代码块中,c是球的比例,而在你的文字c是球的数量,你能说清楚吗?而c也是内部函数的名称,你最好选择其他名称。 我使用了比例,因为它们代表了绘制单个球的概率。因此每次循环运行时,根据 b 的组合,将抽到红球或抽到黑球的概率加到 vec 中。最后将所有单个概率相乘以获得b的整体概率。对不起,我不清楚 【参考方案1】:

这对吗?

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;

【讨论】:

非常感谢。非常有帮助。 #1、2和3的解决方案对我来说似乎是正确的。但是,#4 与#1 不同,因为抽出的球的顺序无关紧要。所以事件的概率应该高于场景#1。我认为计算它的一种方法是将#1的结果与b的可能排列或顺序的数量相乘。在我们的示例中,有 4 种不同的可能排列方式(我计算过它们)......但是如果 be 发生变化,我如何计算可能排列的数量?我正在寻找一个抽象的解决方案。 我尝试过的一个瘦点是这个,但它没有给出正确的结果(而且它可能是非常错误的,因为我试图改变问题 #3 的解决方案) komb2 = function(n, x) 返回(阶乘(n+x-1)/(阶乘(n-1)*阶乘(x))) n 相信我,和1一样。

以上是关于R中的Urn模型(尝试计算随机事件的概率)的主要内容,如果未能解决你的问题,请参考以下文章

创建离散随机变量以查找事件A和B发生的概率

python中的随机森林:分类问题中的最终概率

[机器学习与scikit-learn-36]:算法-分类-一元离散随机变量=>样本空间=>古典概率模型(事件自然数等概率均匀分布)

概率论基础随机事件和概率

R语言基础-统计函数

R语言基础-统计函数