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