我需要用rbinom
生成隨機數,但我需要在範圍內排除0。使用rbinom生成隨機數,但排除範圍內的0
我該怎麼辦?
我想類似的東西:
k <- seq(1, 6, by = 1)
binom_pdf = dbinom(k, 322, 0.1, log = FALSE)
但我需要得到所有相關數據集,因爲如果我做到以下幾點:
binom_ran = rbinom(100, 322, 0.1)
我得到的值從0到100。
有什麼辦法可以解決這個問題嗎?
由於
我需要用rbinom
生成隨機數,但我需要在範圍內排除0。使用rbinom生成隨機數,但排除範圍內的0
我該怎麼辦?
我想類似的東西:
k <- seq(1, 6, by = 1)
binom_pdf = dbinom(k, 322, 0.1, log = FALSE)
但我需要得到所有相關數據集,因爲如果我做到以下幾點:
binom_ran = rbinom(100, 322, 0.1)
我得到的值從0到100。
有什麼辦法可以解決這個問題嗎?
由於
突然想到假設我們有固定參數:
p:成功的概率
# Generate initial values
U<-rbinom(n,s,p)
# Number and ubication of zero values
k<-sum(U==0)
which.k<-which(U==0)
# While there is still a zero, . . . generate new numbers
while(k!=0){
U[which.k]<-rbinom(k,s,p)
k<-sum(U==0)
which.k<-which(U==0)
# Print how many zeroes are still there
print(k)
}
# Print U (without zeroes)
U
除了命中和未命中的方法,如果你想從給定的是成功的次數至少是一個二項式的條件分佈來樣,你可以計算條件分佈,然後直接採樣從中。
這是很容易計算出,如果X
是二項式與參數p
和n
,然後
P(X = x | X > 0) = P(X = x)/(1-p)
因此,下面的函數將工作:
rcond.binom <- function(k,n,p){
probs <- dbinom(1:n,n,p)/(1-p)
sample(1:n,k,replace = TRUE,prob = probs)
}
如果你要調用以上函數多次使用相同的n
和p
,那麼你可以預先計算矢量probs
並簡單地使用函數的最後一行只要你需要它。
我沒有基準,但我懷疑是打了小姐的做法是最好的時候k
小,p
不要太靠近0,n
大,但對於較大k
較大,p
接近0 ,並且n
更小,那麼上述可能是優選的。
獲得0的概率將取決於您的第二個和第三個參數。你需要固定參數進行模擬嗎? – R18
是的不幸... – aaaaa
的事情是,如果我們只知道用於生成binom_pdf的觀測數量,我們可以通過它乘以密度值 – aaaaa