開始使用免費開始

Binomial 與 Poisson 分佈的關係

你剛剛聽到:對於罕見事件,Poisson 分佈可視為 Binomial 分佈的極限。把它和故事連起來就很好理解。假設我們每分鐘做一次 Bernoulli 試驗,持續 1 小時,每次成功機率為 0.1。總共會有 60 次試驗,成功次數服從 Binomial 分佈,期望大約得到 6 次成功。這就像影片中提到的 Poisson 故事:一個網站每小時平均有 6 次點擊。因此,抵達率為 \(np\) 的 Poisson 分佈可以近似描述進行 \(n\) 次 Bernoulli 試驗且成功機率為 \(p\) 的 Binomial 分佈(其中 \(n\) 大且 \(p\) 小)。重要的是,Poisson 分佈通常更好用,因為它只有 1 個參數,而 Binomial 分佈有 2 個參數。

現在我們用電腦來探索這兩個分佈。你會先從抵達率為 10 的 Poisson 分佈抽樣,並計算樣本的平均數與標準差。接著,從滿足 \(np = 10\) 的 Binomial 分佈抽樣,並計算其樣本平均數與標準差。

本練習屬於課程

Statistical Thinking in Python (Part 1)

檢視課程

練習說明

  • 使用 rng.poisson(),從平均數為 10 的 Poisson 分佈抽取 10000 個樣本。
  • 為 Binomial 分佈建立要考慮的 np 清單。選擇 n = [20, 100, 1000]p = [0.5, 0.1, 0.01],使得 \(np\) 都等於 10。
  • 在提供的 for 迴圈中使用 rng.binomial(),針對每一組 n, p 抽取 10000 個 Binomial 分佈樣本,並印出樣本的平均數與標準差。共有 3 組 n, p20, 0.5100, 0.11000, 0.01。在迴圈中可用 n[i], p[i] 取得這些組合。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Draw 10,000 samples out of Poisson distribution: samples_poisson


# Print the mean and standard deviation
print('Poisson:     ', np.mean(samples_poisson),
                       np.std(samples_poisson))

# Specify values of n and p to consider for Binomial: n, p



# Draw 10,000 samples for each n,p pair: samples_binomial
for i in range(3):
    samples_binomial = ____

    # Print results
    print('n =', n[i], 'Binom:', np.mean(samples_binomial),
                                 np.std(samples_binomial))
編輯並執行程式碼