利用Python驗證中心極限定理

中心極限定理:

從一個給定的服從任意分佈的總體當中,每次抽n個樣本,一共抽取m次。然後再對這m各組的值求平均值,各組的平均值會服從近似正態分佈。

  • 首先模擬隨機擲色子1000次觀察一下平均值。
import numpy as np
a = np.random.randint(1,7,1000)
print(a)
a.mean()

輸出結果:

可以看到,擲1000次之後取平均值(注意:這個平均值每次策都有微小的不一樣,因爲是隨機抽取的)接近於3.5(3.5=1/6*(1+2+3+4+5+6))。
然後,再次模擬拋10000次,取平均值
在這裏插入圖片描述
可以看到,結果越來越接近於3.5

  • 接着模擬拋十次,然後畫圖看看他們的分佈情況
sample = []
for i in range(10):
    sample.append(a[int(np.random.random()*len(a))]) #從a裏面隨機抽
plt.figure(figsize=(20,10),dpi=100)
plt.bar(sample,range(len(sample)))
plt.show()

在這裏插入圖片描述
可見分佈不是非常的均勻。

  • 接着模擬1000組,每組拋50次,然後取每一組的平均值看分佈情況。
sample_mean=[]
sample_std=[]
samples=[]
for i in range(1000):
    sample=[] #每組一個列表
    for j in range(60):
        sample.append(a[int(np.random.random()*len(a))])#模擬拋50次
    sample = np.array(sample) #轉化爲array數組,便於處理
    sample_mean.append(sample.mean())
    sample_std.append(sample.std())
    samples.append(sample)
sample_mean_np = np.array(sample_mean)
sample_std_np = np.array(sample_std)
print(sample_mean_np)
plt.figure(figsize=(20,10),dpi=80)
d =0.1 
num_bins = (max(sample_mean_np)-min(sample_mean_np))//d
plt.hist(sample_mean_np,num_bins) #繪製頻率分佈圖

在這裏插入圖片描述
可以看到,每組的平均值是服從正態分佈的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章