R,使用具有两种以上可能性的二项分布
R, use binomial distribution with more than two possibilities
我知道这可能是初级的,但我似乎有心理障碍。假设您要计算掷出一个骰子时掷出 4、5 或 6 的概率。在 R 中,这很简单:
sum(1/6, 1/6, 1/6)
这给出了正确答案的 1/2。但是,在我的脑海中(它可能应该保留的地方)我应该能够为此使用二项式分布。我尝试了 pbinom 和 dbinom 的各种参数组合,但我无法得到正确的答案。
抛硬币,效果很好。它是否完全不适用于存在两种以上可能结果的情况? (我是程序员,不是统计学家,所以我预计会被这里的统计人员杀死。)
问题:如何使用 pbinom() 或 dbinom() 来计算一次掷骰子掷出 4、5 或 6 的概率?我熟悉 prob 和 dice 包,但我真的想使用其中一种内置发行版。
谢谢。
正如@Alex 上面提到的,掷骰子可以用多项式概率来表示。例如,掷出 4 的概率是
dmultinom(c(0, 0, 0, 1, 0, 0), size = 1, prob = rep(1/6, 6))
# [1] 0.1666667
掷出 4、5 或 6 的概率是
X <- cbind(matrix(rep(0, 9), nc = 3), diag(1, 3))
X
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 0 0 0 1 0 0
# [2,] 0 0 0 0 1 0
# [3,] 0 0 0 0 0 1
sum(apply(X, MAR = 1, dmultinom, size = 1, prob = rep(1/6, 6)))
# [1] 0.5
虽然不是很明显,但这可以用 pmultinom 完成,在 my pmultinom package on CRAN or this other pmultinom package on Github.
中实现
您将其概念化为不是 1、2 或 3 的事件。然后,您将此概率写为
P(X_1 ≤ 0, X_2 ≤ 0, X_3 ≤ 0, X_4 ≤ ∞, X_5 ≤ ∞, X_6 ≤ ∞)
其中 X_i 是第 i 面出现的次数。所有 X 一起服从多项式分布,大小参数为 1,所有概率都等于 1/6。上面的这个概率可以计算(使用我的包)为
pmultinom(upper=c(0, 0, 0, Inf, Inf, Inf), size=1,
probs=c(1/6, 1/6, 1/6, 1/6, 1/6, 1/6), method="exact")
# [1] 0.5
虽然重新表述有点笨拙,但我喜欢它,因为我更喜欢使用 "p" 函数而不是对 "d" 函数求和。
我知道这可能是初级的,但我似乎有心理障碍。假设您要计算掷出一个骰子时掷出 4、5 或 6 的概率。在 R 中,这很简单:
sum(1/6, 1/6, 1/6)
这给出了正确答案的 1/2。但是,在我的脑海中(它可能应该保留的地方)我应该能够为此使用二项式分布。我尝试了 pbinom 和 dbinom 的各种参数组合,但我无法得到正确的答案。
抛硬币,效果很好。它是否完全不适用于存在两种以上可能结果的情况? (我是程序员,不是统计学家,所以我预计会被这里的统计人员杀死。)
问题:如何使用 pbinom() 或 dbinom() 来计算一次掷骰子掷出 4、5 或 6 的概率?我熟悉 prob 和 dice 包,但我真的想使用其中一种内置发行版。
谢谢。
正如@Alex 上面提到的,掷骰子可以用多项式概率来表示。例如,掷出 4 的概率是
dmultinom(c(0, 0, 0, 1, 0, 0), size = 1, prob = rep(1/6, 6))
# [1] 0.1666667
掷出 4、5 或 6 的概率是
X <- cbind(matrix(rep(0, 9), nc = 3), diag(1, 3))
X
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 0 0 0 1 0 0
# [2,] 0 0 0 0 1 0
# [3,] 0 0 0 0 0 1
sum(apply(X, MAR = 1, dmultinom, size = 1, prob = rep(1/6, 6)))
# [1] 0.5
虽然不是很明显,但这可以用 pmultinom 完成,在 my pmultinom package on CRAN or this other pmultinom package on Github.
中实现您将其概念化为不是 1、2 或 3 的事件。然后,您将此概率写为
P(X_1 ≤ 0, X_2 ≤ 0, X_3 ≤ 0, X_4 ≤ ∞, X_5 ≤ ∞, X_6 ≤ ∞)
其中 X_i 是第 i 面出现的次数。所有 X 一起服从多项式分布,大小参数为 1,所有概率都等于 1/6。上面的这个概率可以计算(使用我的包)为
pmultinom(upper=c(0, 0, 0, Inf, Inf, Inf), size=1,
probs=c(1/6, 1/6, 1/6, 1/6, 1/6, 1/6), method="exact")
# [1] 0.5
虽然重新表述有点笨拙,但我喜欢它,因为我更喜欢使用 "p" 函数而不是对 "d" 函数求和。