SORU
20 EYLÜL 2013, Cuma


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
20 EYLÜL 2013, Cuma


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • Day9TV

    Day9TV

    22 NİSAN 2010
  • Skrillex

    Skrillex

    6 NİSAN 2010