两个样本均值之差是什么分布?(来自Python的实验)

这里考虑总体方差未知且不等的情形

在《统计学》教材上往往会告诉我们两个样本均值之差,在总体方差未知且不等的情形下服从t分布,这是可以证明的。今天我们换一种直观的方法来验证这个概念,即使用Python进行模拟,体验一下两个样本均值之差是不是服从t分布。具体步骤如下:

一、生成两个总体

  1. 总体1服从N(4,9)
  2. 总体2服从N(8,16)
  3. 直观得到\mu_1-\mu_2=4
import matplotlib.pyplot as plt #加载可视化工具
import seaborn as sns #加载可视化工具
import numpy as np #加载numpy工具
import pandas as pd
np.random.seed(1234)# 设置随机数种子1
p1data=4+3*np.random.randn(50000) #生成服从标准正态分布的50000个数据
np.random.seed(5678)# 设置随机数种子2
p2data=8+4*np.random.randn(50000) #生成服从标准正态分布的50000个数据


plt.figure()
fig = plt.figure(figsize=(6, 4))
sns1=sns.distplot(p1data,bins=50,kde=True,label="Population 1") #绘制直方图,50个分箱(直方),kde表示需要密度曲线
sns2=sns.distplot(p2data,bins=50,kde=True,label="Population 2") #绘制直方图,50个分箱(直方),kde表示需要密度曲线
plt.legend()
plt.show()
两个总体的分布

二、分别进行抽样

一共抽样5000次,每次的样本量都是100。即计算5000个样本均值之差。


loop=5000
loop_diff=[]

for i in range(loop):
    np.random.seed(i+1)
    sample1 = np.random.choice(p1data, size=100, replace=False)
    np.random.seed(i+1+loop)
    sample2 = np.random.choice(p2data, size=100, replace=False)
    diff=np.mean(sample1)-np.mean(sample2)   
    #print(diff)
    loop_diff.append(diff)
loop_diff=pd.DataFrame(loop_diff)    
sns.distplot(loop_diff,bins=40,kde=True) #绘制直方图,30个分箱(直方),kde表示需要密度曲线
plt.title("Distribution of Sample Difference")
plt.show()
样本均值之差的分布

看上面这张图就知道了,样本均值之差确实服从t分布,这是开展区间估计和假设检验的基础。

动动手,让统计学变得更有趣!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容