樣本方差的的分布(來自Python的實驗)

教科書中,關(guān)于樣本方差的分布往往是這樣描述的
\frac{(n-1)s^2}{\sigma^2}~\chi^2(n-1)
這里的n-1,就是自由度,\sigma^2表示總體方差。這一結(jié)論的證明并不難,直接從卡方分布的定義著手就好。
我們這里要做的,是從實驗著手,運用Python開展抽樣實驗,并直觀的感受這一結(jié)論。

1 虛擬一個總體服從正態(tài)分布N(4,3^2)

import matplotlib.pyplot as plt #加載可視化工具
import seaborn as sns #加載可視化工具
import numpy as np #加載numpy工具
import pandas as pd
np.random.seed(1234)# 設(shè)置隨機數(shù)種子,保證每次的隨機數(shù)相同
pdata=4+3*np.random.randn(50000) #生成正態(tài)分布的50000個數(shù)據(jù)
sns.distplot(pdata,bins=50,kde=True) #繪制直方圖,50個分箱(直方)
plt.title("Population")
plt.show()
pdata
總體分布

2 分別按照樣本量50和100,進行5000次抽樣,并計算\frac{(n-1)s^2}{\sigma^2}

from tqdm import tqdm
import statistics
loop_var=pd.DataFrame(columns=('chi49', 'chi99'))

loop=5000
n_size=[50,100]
for loop in tqdm(range(loop)):
    np.random.seed(loop+1)
    sample1 = np.random.choice(pdata, size=n_size[0]) 
    chi49 = statistics.variance(sample1)*(n_size[0]-1)/9
    np.random.seed(loop+1+5000)
    sample2 = np.random.choice(pdata, size=n_size[1]) 
    chi99 = statistics.variance(sample2)*(n_size[1]-1)/9
    loop_var=loop_var.append(pd.DataFrame({'chi49':[chi49],'chi99':[chi99]}),ignore_index=True)
loop_var.head()
抽樣并計算結(jié)果

3 分別畫出樣本量50和100對應的\frac{(n-1)s^2}{\sigma^2}的分布

import matplotlib.pyplot as plt #加載可視化工具
import seaborn as sns #加載可視化工具

plt.figure()
fig = plt.figure(figsize=(10,4))
sns1=sns.distplot(loop_var["chi49"],bins=30,kde=True,label="Chi-square distribution (df=49)") #繪制直方圖,30個分箱(直方),kde表示需要密度曲線
sns2=sns.distplot(loop_var["chi99"],bins=30,kde=True,label="Chi-square distribution (df=99)") 
plt.xlabel("X")
plt.legend()
plt.show()
兩個卡方分布

動動手,讓統(tǒng)計學變得更有趣?。?/h1>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容