这里考虑总体方差未知且不等的情形
在《统计学》教材上往往会告诉我们两个样本均值之差,在总体方差未知且不等的情形下服从t分布,这是可以证明的。今天我们换一种直观的方法来验证这个概念,即使用Python进行模拟,体验一下两个样本均值之差是不是服从t分布。具体步骤如下:
一、生成两个总体
- 总体1服从
- 总体2服从
- 直观得到
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分布,这是开展区间估计和假设检验的基础。
动动手,让统计学变得更有趣!!