Чтобы рассчитать вероятность значения из неизвестного распределения, вы можете вычислить вероятности значений:
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 ответ .
Также обратите внимание, что при непрерывных распределениях вы должны вычислять разницу между двумя двойными (числовыми) значениями, поскольку вероятность определенного значения будет равна нулю по определению.
Чтобы избежать дискреционных решений, запуск симуляции часто является более безопасным выбором. Вы можете просто попробовать с заменой:
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%.