Düzensiz tohum Ar-rbinom=0.5 prob () ile davranış
Ben buldum ne olurdu düşünün hatalı davranış (ama hangi umarım bir basit açıklama) R
'In kullanımı tohumları ile birlikte rbinom()
prob=0.5
kullanılır. Genel bir fikir: eğer tohum, ne değer rağmen prob
ayarlamak rbinom()
bir kez (yani davranış tek bir rasgele süreç), koş başım belaya girerse bana, rastgele
tohum bir artış ile değiştirmek gerekir. O zaman, eğer ben tekrar tohum için aynı değer ve çalıştırın başka bir rasgele süreç (gibi rbinom()
tekrar, ama belki de farklı bir değeri prob
), tohum gerektiğini tekrar değiştirmek için aynı değeri mi önceki tek rasgele süreç.
R
tam olarak bu prob!=0.5
rbinom()
kullanmakta olduğum sürece yapar bulduk. İşte bir örnek:
Tohum vektör, .Random.seed
, 0.5. iki ihtimal için karşılaştırın
set.seed(234908)
x <- rbinom(n=1,size=60,prob=0.4)
temp1 <- .Random.seed
set.seed(234908)
x <- rbinom(n=1,size=60,prob=0.3)
temp2 <- .Random.seed
any(temp1!=temp2)
> [1] FALSE
Tohum vektör, .Random.seed
, prob=0.5 vs başımıza!=karşılaştırma 0.5:
set.seed(234908)
x <- rbinom(n=1,size=60,prob=0.5)
temp1 <- .Random.seed
set.seed(234908)
x <- rbinom(n=1,size=60,prob=0.3)
temp2 <- .Random.seed
any(temp1!=temp2)
> [1] TRUE
temp1==temp2
> [1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE
> [8] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
...
Diğer tüm olasılıklar karşı prob=0.5
tüm comparisions için bunu buldum
set {0.1, 0.2, ..., 0.9}içinde. Eğer prob
değerlerini karşılaştırdığımızda benzer şekilde,
0.5, .Random.seed
vektör hep-eleman-elemanı eşit başka {0.1, 0.2, ..., 0.9}. Bu gerçekler de gerçek ya tek ya rbinom()
içinde size
bile için basılı tutun.
Bunu yapmak daha da garip (özür dilerim bu biraz kıvrık - konuyla bağlantılı bir şekilde görevimdir yazılı) için olasılıkları kaydedilen öğeleri bir vektör, bende de aynı sorun varsa 0.5 ilk unsur, ama ikinci. İşte bu durum için: örnek
İlk vaka: 0.5 ilk olasılık vektörü başvuruyor
set.seed(234908)
MNAR <- c(0.5,0.3)
x <- rbinom(n=1,size=60,prob=MNAR[1])
y <- rbinom(n=1,size=50,prob=MNAR[2])
temp1 <- .Random.seed
set.seed(234908)
MNAR <- c(0.1,0.3)
x <- rbinom(n=1,size=60,prob=MNAR[1])
y <- rbinom(n=1,size=50,prob=MNAR[2])
temp2 <- .Random.seed
any(temp1!=temp2)
> [1] TRUE
any(temp1!=temp2)
> [1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE
> [8] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
İkinci durum: 0.5 ikinci olasılık vektörü başvuruyor
set.seed(234908)
MNAR <- c(0.3,0.5)
x <- rbinom(n=1,size=60,prob=MNAR[1])
y <- rbinom(n=1,size=50,prob=MNAR[2])
temp1 <- .Random.seed
set.seed(234908)
MNAR <- c(0.1,0.3)
x <- rbinom(n=1,size=60,prob=MNAR[1])
y <- rbinom(n=1,size=50,prob=MNAR[2])
temp2 <- .Random.seed
any(temp1!=temp2)
> [1] FALSE
Yine, değerleri prob
size
için kullanılan rağmen bu gidişat. Kimse bana bu gizemi açıklayabilir mi? Aynı olması gereken sonuçları tohum nedense prob=0.5
zaman/farklı hesaplanmış ama başka bir örnek kullanıldığı için farklı geliyor, çünkü büyük bir soruna neden oldu.
CEVAP
Hadi bir cevap içine bizim yorum çevirin. Kod için bir bağlantı ile doğru yolda bizi koymak için Ben Bolker sayesinde: unif_rand()
olarak da adlandırılır izini https://svn.r-project.org/R/trunk/src/nmath/rbinom.c ve öneri.
Hızlı tarama ve kodu iki bölüme yorum ile ayrılmış bölünmüş gibi görünüyor:
/*-------------------------- np = n*p >= 30 : ------------------- */
ve
/*---------------------- np = n*p < 30 : ------------------------- */
Bunların her biri içinde, 34* *çağrı sayısı aynı (bir versus. iki)
Yani verilen size
(n
), rasgele tohum Mayıs sonuna kadar bir farklı durumuna bağlı olarak değeri prob
(p
): olsun size * prob >= 30
ya da değil.
Bunu unutmayın, sizin örnekle tüm sonuçları şimdi anlamlı:
# these end up in the same state
rbinom(n=1,size=60,prob=0.4) # => np < 30
rbinom(n=1,size=60,prob=0.3) # => np < 30
# these don't
rbinom(n=1,size=60,prob=0.5) # => np >= 30
rbinom(n=1,size=60,prob=0.3) # => np < 30
# these don't
{rbinom(n=1,size=60,prob=0.5) # np >= 30
rbinom(n=1,size=50,prob=0.3)} # np < 30
{rbinom(n=1,size=60,prob=0.1) # np < 30
rbinom(n=1,size=50,prob=0.3)} # np < 30
# these do
{rbinom(n=1,size=60,prob=0.3) # np < 30
rbinom(n=1,size=50,prob=0.5)} # np < 30
{rbinom(n=1,size=60,prob=0.1) # np < 30
rbinom(n=1,size=50,prob=0.3)} # np < 30
Ne zaman bir üye çağırma tanımsız davr...
Hata Ayıklama Paket Yöneticisi Güncell...
Hiç çalıştırılacak olan kod tanımsız d...
Düzensiz delik tipi çözünürlük...
Neden ExecutionPolicy davranış, Visual...