Я не знаю, как построить вероятностное распределение результатов некоторого кода в R - PullRequest
0 голосов
/ 18 апреля 2019

Я создал программу, которая имитирует бросание костей 100 раз. Мне нужна помощь в суммировании результатов отдельных игральных костей, а также о том, как построить распределение вероятностей результатов.

Это код, который у меня есть:

sample(1:6, size=100, replace = TRUE)

1 Ответ

0 голосов
/ 18 апреля 2019

Пока что вы сделали пример бросков костей (обратите внимание, я добавил строку, устанавливающую начальное число для воспроизводимости:

set.seed(123)
x <- sample(1:6, size=100, replace = TRUE)

Простая команда «сложить [] результаты отдельных кубиков»: table():

table(x)
# x
#  1  2  3  4  5  6 
# 17 16 20 14 18 15

Затем, чтобы «построить распределение вероятностей результатов», мы должны сначала получить это распределение; К счастью, R предоставляет удобную функцию prop.table(), которая работает для такого рода дискретного распределения:

prop.table(table(x))
# x
#    1    2    3    4    5    6 
# 0.17 0.16 0.20 0.14 0.18 0.15 

Тогда мы можем легко построить это; для построения PMF мой предпочтительный тип графика - "h":

y <- prop.table(table(x))
plot(y, type = "h", xlab = "Dice Result", ylab = "Probability")

enter image description here

Обновление: взвешенный кубик

sample() можно легко использовать для имитации взвешенного штампа, используя аргумент prob. От help("sample"):

Использование
образец (x, размер, заменить = FALSE, prob = NULL)

Аргументы
[некоторый контент пропущен]
prob вектор весов вероятности для получения элементов вектора выборки.

Итак, мы просто добавляем ваши предпочтительные веса к аргументу prob и действуем как обычно (обратите внимание, я также увеличил размер выборки со 100 до 10000):

set.seed(123)
die_weights <- c(4/37, rep(6/37, 4), 9/37)
x <- sample(1:6, size = 10000, replace = TRUE, prob = die_weights)
(y <- prop.table(table(x)))
# x
#      1      2      3      4      5      6 
# 0.1021 0.1641 0.1619 0.1691 0.1616 0.2412 
plot(y, type = "h", xlab = "Dice Result", ylab = "Probability")

enter image description here

...