Ortalama ile


11

Ortalama 0 ile bir ±1 dizi oluşturmayı biliyorum . Örneğin, Matlab'da, uzunluk 10000 ± 1 dizisi oluşturmak istiyorsanız , bu:0±110000

2*(rand(1, 10000, 1)<=.5)-1

Bununla birlikte, ortalama 0.05 ile bir ±1 sekansı nasıl üretilir , yani 1 biraz tercih edilirken?0.051

Yanıtlar:


18

İstediğiniz ortalama denklem ile verilir:

N-p-N-(1-p)N-=.05

bundan sonra 1solması olasılığı.525

Python'da:

x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])

Kanıt:

x.mean()
0.050742000000000002

1'ler ve -1'lerin 1'000'000 örnekleri ile 1'000 deney: resim açıklamasını buraya girin

Bütünlük uğruna (@Elvis'e şapka ucu):

import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998

1'ler ve -1'lerin 1'000'000 örnekleri ile 1'000 deney:

resim açıklamasını buraya girin

Ve nihayet @ asukasz Deryło tarafından önerildiği gibi (aynı zamanda Python'da) tek tip dağıtımdan çizim:

u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998

1'ler ve -1'lerin 1'000'000 örnekleri ile 1'000 deney:

resim açıklamasını buraya girin

Üçü de neredeyse aynı görünüyor!

DÜZENLE

Merkezi limit teoremi ve ortaya çıkan dağılımların yayılması üzerine birkaç çizgi.

Her şeyden önce, araçların çizimleri gerçekten Normal Dağılımı takip eder.

İkincisi, @Elvis bu cevaba yaptığı açıklamada, 1000 deney (yaklaşık (0.048; 0.052)),% 95 güven aralığı boyunca çizilen araçların tam yayılması hakkında bazı güzel hesaplamalar yaptı.

Ve bunlar sonuçlarını doğrulamak için simülasyonların sonuçlarıdır:

mn = []
for _ in range(1000):
    mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773,  0.0518703])

İyi iş. Bernoulli ile ilgili sorunum, soruyu iyi bilinen bir olasılık dağılımına indirgemekti; 'uygulama' bakış açısından, cevabınız ve Łukasz 'mükemmeldi.
Elvis

Şaka yok, seninki en bilimsel ve en iyisi! ;) Yarım saniye Binom dağılımını düşünüyordum ama -1 ve 1'e çevirmek için yeterli değildi, bu yüzden çözümünüzü "olduğu gibi" ödünç aldım, teşekkürler!
Sergey Bushmanov

1
var(Y)=4var(X)=4p(1-p)=0,9975Y0.9991060.999x10-30.05±1.96x0.999x10-3(0.048;0.052)

12

-11Y=2X-1XpE(Y)=2E(X)-1=2p-1pp=0.525

R size Bernoulli değişkenler üretebilir rbinom(n, size = 1, prob = p), örneğin bu yüzden,

x <- rbinom(100, 1, 0.525)
y <- 2*x-1

5

N-[0,1]

O zaman beklenen değer

10.525+(-1)(1-0.525)=0.525-0.475=0.05

Ben Matlab kullanıcısı değilim ama sanırım

2*(rand(1, 10000, 1)<=.525)-1

3
Burada ters dönüşüm örneklemesini kullanmanın doğru yolu budur .
Tim

4

-1 saniyeden daha fazla 1s oluşturmanız gerekir. Kesinlikle,% 5 daha fazla 1s çünkü ortalamanızın 0,05 olmasını istiyorsunuz. Böylece, 1s olasılığını% 2.5 arttırır ve -1s'yi% 2.5 azaltırsınız. Kodunuzda bu değişen eşdeğer 0.5kadar 0.52550 den% 52,5% için yani


2

Tam 0,05 anlamına gelirse, MATLAB'da aşağıdaki R koduna eşdeğer yapabilirsiniz:

sample(c(rep(-1, 95*50), rep(1, 105*50)))

-1 bu cevap yanlış! Bu kodun yaptığı tek şey rastgele değerlerin statik vektörüne izin vermesidir. Çıktı rastgele değil!
Tim

2
@Tim Neden çalışmıyor? 0,05 kesin bir ortalama sağlamak için tasarlanmış sayılarla rastgele bir sırayla -1 ve 1 listesini döndürür.
ddunn801

1
@Tim Bu çözelti bir rastgele. Tekrar tekrar çalıştırmayı denediniz mi?
whuber

@whuber Amos Coats tarafından önerilen çözümle aynıdır, tek fark değerlere izin vermektir. Bu örneğin istatistiksel özellikleri deterministik ve sabit olacaktır.
Tim

3
@Tim Bence bu soruya açıkça yapılmayan bazı varsayımları okuyor olabilirsiniz. Düzensiz numunenin frekansları - ve dolayısıyla tüm momentleri - sabit olsa da, üretilen serinin çok çeşitli "istatistiksel özellikleri" rastgele değişecektir. Sorudaki örnek bir dizi oluşturduğundan ve diziler küme olmadığından - bir dizideki sipariş konuları - Bence bu yorum adil bir şeydir (ve soruyu aydınlatır). Öte yandan Coats tarafından yayınlanan "çözüm" iyi bir şaka - ama SE şakayı sevmiyor.
whuber
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.