我有两个问题,我想用R来解决。
我有一个值的向量,其分布是未知的。
我的测试数据如下:
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
感谢您的协助。
答案 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%。