Мы знаем, что аргумент prob
в sample
используется для присвоения вероятности весов.
Например,
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.4, 0.3, 0.1)))/1e6
# 1 2 3 4
#0.2 0.4 0.3 0.1
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.4, 0.3, 0.1)))/1e6
# 1 2 3 4
#0.200 0.400 0.299 0.100
В этом примере сумма вероятности равна ровно 1 (0,2 + 0,4 + 0,3 + 0,1), следовательно, она дает ожидаемое соотношение, но что если вероятность не равняется 1? Какой выход это даст? Я думал, что это приведет к ошибке, но это дает некоторую ценность.
Когда вероятность составляет более 1 *
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.5, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.1544 0.3839 0.3848 0.0768
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.2, 0.5, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.1544 0.3842 0.3848 0.0767
Когда вероятность составляет менее 1
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.1, 0.1, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.124 0.125 0.625 0.125
table(sample(1:4, 1e6, replace = TRUE, prob = c(0.1, 0.1, 0.5, 0.1)))/1e6
# 1 2 3 4
#0.125 0.125 0.625 0.125
Как мы видим, выполнение кратно times дает результат, который не равен prob
, но результаты также не случайны. Как распределяются числа в этом случае? Где это задокументировано?
Я попытался выполнить поиск по inte rnet, но не нашел нужной информации. Я просмотрел документацию по ?sample
, в которой есть
Необязательный аргумент prob можно использовать для получения вектора весов для получения элементов вектора выборки. Их не нужно суммировать с одним, но они должны быть неотрицательными и не равными нулю. Если replace true, метод псевдонима Уокера (Ripley, 1987) используется, когда существует более 200 разумно вероятных значений: это дает результаты, несовместимые с результатами из R <2.2.0. </p>
. что аргумент prob
не обязательно должен быть равен 1, но не говорит, что ожидается, когда он не равен 1? Я не уверен, что мне не хватает какой-либо части документации. У кого-нибудь есть идеи?