0
请原谅我,如果之前有过这个问题(我觉得它必须有,但是找不到我正在寻找的东西)。R:使用自定义概率函数从矢量绘制
我可以使用指定元素不同概率的概率函数绘制一个整数(从1到10)的矢量元素。如果我想等我出现概率使用runif()
获得1到10之间的数字:
ceiling(runif(1,1,10))
如何从类似例如采样指数分布得到1到10之间的一个数(例如1比10更可能)或逻辑概率函数(如果我想从1到10的S形增加概率)。
我能想出的唯一“解决方案”是首先从sigmoid分布中绘制e6数字,然后将最小值和最大值缩放到1和10--但这看起来很团块。
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