Вычисление вероятностей в R - PullRequest
0 голосов
/ 30 августа 2018

У меня есть два вопроса, которые я хотел бы использовать для решения 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 голосов
/ 30 августа 2018

Чтобы рассчитать вероятность значения из неизвестного распределения, вы можете вычислить вероятности значений:

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%.

0 голосов
/ 30 августа 2018

Для вопроса 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 я прокомментировал ваш вопрос, потому что мне нужна дополнительная информация

...