मैं ऐसा कुछ करने की कोशिश कर रहा हूं (सिर्फ उदाहरण के लिए, मुझे पता है कि यह काम क्यों नहीं करता है)।

sample(c(TRUE, FALSE), 3, prob=c(0.1,0.2,1), replace=TRUE)

मेरे पास वजन है जिसके साथ मैं 3 तत्व तैयार करना चाहता हूं। तो तत्व १ में ०.१ की सफलता की संभावना होनी चाहिए, तत्व २ की संभावना ०.२ और तत्व ३ की संभावना १। संक्षेप में, मैं विभिन्न सफलता संभावनाओं के साथ बर्नौली परीक्षणों की एक श्रृंखला का प्रदर्शन कर रहा हूं।

मुझे लगता है कि एक साधारण कामकाज होना चाहिए या कोई अन्य विकल्प जो मैं नहीं देख रहा हूं, बीसी मेरे दिमाग में आने वाली एकमात्र चीज लूपिंग है

लूपिंग धीमी होगी क्योंकि मेरे पास कम से कम 5000 हैं यदि अधिक मामलों से गुजरना नहीं है।

किसी भी इनपुट के लिए बहुत धन्यवाद।

r
2
Lillys 22 अगस्त 2020, 08:07

3 जवाब

सबसे बढ़िया उत्तर

rbinom(n = 3, size = 1, prob = c(.10, .25, .5)) आपको वही देगा जो आप मांग रहे हैं, लेकिन 0/1 के आउटपुट के साथ। यदि आप चाहते हैं कि यह एक TRUE/FALSE वेक्टर हो, तो आप कॉल करेंगे: as.logical(rbinom(n = 3, size = 1000, prob = c(.10, .25, .5)))

length(prob) को n के बराबर होना चाहिए, या आपको असंगत आउटपुट मिलेगा।

3
BrianLang 22 अगस्त 2020, 09:37

अभी आपके प्रश्न व्याख्या के लिए कुछ जगह छोड़ते हैं। यदि आप एक ही नमूना प्रक्रिया को निरंतर संभावनाओं के साथ दोहराना चाहते हैं तो आप यह कर सकते हैं:

set.seed(1)
replicate(10, 
          sample(c(T, F), size = 3, prob = c(0.1, 0.9), replace = T))

जो आपके नमूने का एक matrix बनाता है, जहां एक कॉलम एक नमूने का प्रतिनिधित्व करता है:

#       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
# [1,] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [3,] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
0
Base_R_Best_R 22 अगस्त 2020, 09:36

मेरे पास वजन है जिसके साथ मैं 3 तत्व तैयार करना चाहता हूं। तो तत्व १ में ०.१ की सफलता की संभावना होनी चाहिए, तत्व २ की संभावना ०.२ और तत्व ३ की संभावना १। संक्षेप में, मैं विभिन्न सफलता संभावनाओं के साथ बर्नौली परीक्षणों की एक श्रृंखला का प्रदर्शन कर रहा हूं।

rbinom फ़ंक्शन वेक्टरकृत है ताकि आप इस तरह के तीन आयामी वितरण से 100000 नमूने बनाने के लिए कुछ ऐसा कर सकें

sample_func <- function(n)
  matrix(rbinom(n * 3L, 1L, c(.1, .2, 1)), nrow = 3L)

# show an example
set.seed(1)
samples <- sample_func(100000L)

# the means are as expected
rowMeans(samples)
#R> [1] 0.1 0.2 1.0

# show the first five samples
samples[, 1:5]
#R>      [,1] [,2] [,3] [,4] [,5]
#R> [1,]    0    0    0    1    0
#R> [2,]    0    1    1    0    0
#R> [3,]    1    1    1    1    1

एक अधिक सामान्य नमूना कार्य होगा

sample_func <- function(n, prob){
  n_ele <- length(prob)
  matrix(rbinom(n * n_ele, 1L, prob), nrow = n_ele)
}

# sample from four dimensional distribution
set.seed(1)
sample_func(5L, c(.1, .2, .4, .8))
#R>      [,1] [,2] [,3] [,4] [,5]
#R> [1,]    0    0    0    0    0
#R> [2,]    0    1    0    0    1
#R> [3,]    0    1    0    1    0
#R> [4,]    0    1    1    1    1
0
Benjamin Christoffersen 22 अगस्त 2020, 09:58