R中的计算概率

时间:2018-08-30 07:59:05

标签: r probability

我有两个问题,我想用R来解决。

我有一个值的向量,其分布是未知的。

  1. 如何计算其中一个值的概率 R中的向量
  2. 如何计算一个值的概率 通过模拟1000次而发生

我的测试数据如下:

values_all <- c(rep(1, 3), rep(2, 5), rep(3, 2), 4, rep(5, 4), rep(6, 2), rep(7, 3))
prob_to_find <- 5

感谢您的协助。

2 个答案:

答案 0 :(得分:0)

对于问题1,您可以使用:

values_all <- c(rep(1, 3), rep(2, 5), rep(3, 2), 4, rep(5, 4), rep(6, 2), rep(7, 3))
prob_to_find <- 5

probability <- sum(values_all == prob_to_find) / length(values_all)

概率是值出现的次数(或values_all == prob_to_find)除以集合中值的总数。

对于问题2,我评论了您的问题,因为我需要一些其他信息

答案 1 :(得分:0)

要从未知分布中计算值的概率,基本上可以计算出这些值的概率:

prop.table(table(values_all))
values_all

输出:

1    2    3    4    5    6    7 
0.15 0.25 0.10 0.05 0.20 0.10 0.15

或者,您需要在检查向量后假设分布,例如uniform(1,7)为:

> punif(3, min = 1, max = 7)
[1] 0.3333333

有关此决策过程,请参考此StackExchange answer。 另外,请注意,对于连续分布,您应该计算两个双(数字)值之间的差,因为根据定义,特定值的概率为零。

为避免自行决定,运行模拟通常是更安全的选择。您可以替换样品:

b <- vector("numeric", 1000)
set.seed(1234)
for (i in 1:1000){
    b[i] <- sample(values_all, size=1, replace = T)
}
prop.table(table(b))

哪个返回:

b
    1     2     3     4     5     6     7 
0.144 0.251 0.087 0.053 0.207 0.099 0.159

即:概率为3 = 8.7%。

相关问题