自助法隨機采樣過程中,對n個樣本進行n次有放回的隨機采樣,當n趨向於無窮大時,最終有多少數據從未被選擇過?


1,推導

一個樣本在一次抽樣過程中未被抽中的概率為

\[(1- \frac{1}{n}) \tag{1} \]

n次抽樣均為被抽中的概率為

\[(1-\frac{1}{n})^n \tag{2} \]

當n趨向於無窮大時的概率為

\[\lim_{n \to \infty} (1-\frac{1}{n})^n \tag{3} \]

已知

\[\lim_{n \to \infty} (1+\frac{1}{n})^n=e \tag{4} \]

由(3)、(4)可得:

\[\lim_{n \to \infty}(1-\frac{1}{n})^n = \lim_{n\to\infty}(\frac{1}{(1+\frac{1}{n-1})^n})=\frac{1}{\lim_{n \to \infty(1+\frac{1}{n-1})^{n-1}}}\cdot\frac{1}{\lim_{n\to\infty}(1+\frac{1}{n-1})}=\frac{1}{e}\approx0.368 \tag{5} \]

因此,當樣本很大時,有大約36.8%的樣本從未被選擇過

2,代碼驗證(極限近似求值)

import numpy as np
from matplotlib import pyplot as plt
x = range(1, 10000)
y = [pow((i-1)/i, i) for i in x]
plt.plot(x, y)
plt.show()
print(y[-1])
print(np.e)
print(1 / np.e)

3,代碼驗證(隨機采樣)

import numpy as np
n = 100000
choosen = set()
for i in range(n):
    choosen.add(np.random.randint(1, n+1, 1)[0])
print(choosen)
print(len([i for i in range(1, n+1) if i not in choosen]) / n)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM