#r #statistics #probability-distribution
#r #Статистика #вероятность-распределение
Вопрос:
Я создал программу, которая имитирует бросание кости 100 раз. Мне нужна помощь в суммировании результатов отдельных кубиков, а также в том, как построить график распределения вероятностей исходов.
Это код, который у меня есть:
sample(1:6, size=100, replace = TRUE)
Ответ №1:
Пока что вы сделали выборку бросков кубиков (обратите внимание, что я добавил строку, задающую начальное значение для воспроизводимости:
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
Тогда мы можем легко построить его; для построения PMFS мой предпочтительный тип графика "h"
:
y <- prop.table(table(x))
plot(y, type = "h", xlab = "Dice Result", ylab = "Probability")
Обновление: взвешенный кубик
sample()
может легко использоваться для имитации взвешенной матрицы, используя ее prob
аргумент. От help("sample")
:
Пример использования (x, size, replace = FALSE, prob = NULL)
Аргументы
[некоторое содержимое опущено]
определяют вектор весов вероятности для получения элементов выбираемого вектора.
Итак, мы просто добавляем ваши предпочтительные веса к 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")
Комментарии:
1. Знаете ли вы, как имитировать загруженный кубик? Тот, где вероятность броска a: 1 равна 4/37, 2/3/4/5 равно 6/37, 6 равно 9/37?
2. @user11301096 Конечно — смотрите отредактированный ответ! Похоже, вы новичок в R. Хотя это не поможет вам найти нужные вам функции, вам нужно действительно хорошо ознакомиться с
help()
функцией (или?
что-то подобное), потому что это поможет вам узнать о функциях, о которых вы слышали. Здесь ключевым моментомhelp("sample")
был бы просмотр: он рассказывает вам обprob
аргументе, который вы используете для взвешивания вероятности.