Простите меня, если это было задано раньше (я считаю, что оно должно быть, но не могло точно найти то, что я ищу).R: рисовать из вектора с помощью пользовательской функции вероятности
Можно ли нарисовать один элемент вектора целых чисел (от 1 до, скажем, 10), используя функцию вероятности, которая задает разные шансы элементов. Если я хочу равное propabilities я использую runif()
, чтобы получить число от 1 до 10:
ceiling(runif(1,1,10))
Как аналогично образец, например, из экспоненциальное распределение, чтобы получить число от 1 до 10 (такое, что 1 намного больше, чем 10) или логистическая функция вероятности (если я хочу, чтобы сигмоид увеличивал вероятность с 1 по 10).
Единственное «решение», которое я могу придумать, - это сначала нарисовать числа e6 из сигмовидного распределения, а затем масштабировать мин и максимум до 1 и 10, но это выглядит clumpsy.
UPDATE:
Это неловкое решение (и я не чувствую, что это очень "правильно") будет идти, как этот
#Draw enough from a distribution, here exponential
x <- rexp(1e3)
#Scale probs to e.g. 1-10
scaler <- function(vector, min, max){
(((vector - min(vector)) * (max - min))/(max(vector) - min(vector))) + min
}
x_scale <- scaler(x,1,10)
#And sample once (and round it)
round(sample(x_scale,1))
ли не лучшие решения вокруг?
Я думаю, вам нужно посмотреть на 'sample()'. Ваш код эквивалентен 'sample (1:10, 1)', и вы можете указать вероятности с параметром 'prob =' – HubertL
Да, но как вы можете указать там логистическую вероятность? – user3375672