python统计分析——样本均值的分布(上)

文章介绍了使用Python进行统计学习的过程,包括导入必要的库,设置正态总体,模拟抽样以获取样本均值的分布,验证样本容量对样本均值的影响,并通过图表展示结果。
摘要由CSDN通过智能技术生成

参考资料:用python动手学统计学

1、导入库

import numpy as np
import pandas as pd
import scipy as sp
from scipy import stats

from matplotlib import pyplot as plt
import seaborn as sns

2、设置总体

        本次研究总体是均值为4、标准差为0.8的正态总体。

pop=stats.norm(loc=4,scale=0.8)   # stats.norm()表示正态分布,其中loc参数表示均值,scale参数表示标准差

3、样本均值分布

        这里需要明确:一次抽样完成,只能获得一个样本(无论样本容量是10还是100,样本都是一个),从而可以获得这个样本的均值。如果试验或抽样重复3次,则可以获得3个样本,对应有3个样本均值。

        现实中无法帆布进行条件完全相同的抽样,但借助程序模拟可以轻松实验。在模拟的过程中,也可以研究样本的统计量的分布情况。

3.1 现在模拟抽样10000次,将会获得10000个样本均值。具体如下:

# 专本一个大小为10000的数组来存放样本均值
sample_mean_array=np.zeros(10000)
# 设置随机种子用于复现统计结果
np.random.seed(1)
# 利用for循环对总体进行抽样,设置样本容量为10,抽取一万个样本并存储样本均值(注意样本和样本容量的区别)
for i in range(0,10000):
    # 对样本进行抽样
    sample=pop.rvs(size=10)
    # 计算样本均值并存至smple_mean_array中
    sample_mean_array[i]=np.mean(sample)
    

上段代码中,注意pop.rvs(size=10)和stats.norm.rvs(loc=4,scale=0.8,size=10)是等价的。

stats.norm.rvs()的用法参考:python统计分析——生成正态分布随机数-CSDN博客

3.2 检验样本均值的均值和标准差

我们知道根据正态分布的样本均值服从均值为μ,标准差为σ/sqrt(n)的正态分布。

# 计算样本均值的均值和样本均值的标准差
print('样本均值的均值实际值',np.mean(sample_mean_array))
print('样本均值的均值理论值','4')
print('样本均值的标准差实际值',np.std(sample_mean_array,ddof=1))
print('样本均值的标准差理论值',0.8/np.sqrt(10))

结果如下:

可以看到样本均值分布的实际值与理论值非常接近,随着样本量,以及抽样次数的增加,实际值会无限接近于理论值。

4、绘制样本均值分布的直方图

sns.set()
# 绘制直方图,并显示核密度曲线
sns.histplot(sample_mean_array,kde=True)

可以看到直方图和核密度曲线都十分趋近于正态分布。

5、验证样本容量与样本均值分布间的关系

5.1 设置样本容量从10变化至100010

# 准备公差是100,范围是10-100010的样本容量
size_array=np.arange(start=10,stop=100100,step=100)
# 准备存放样本均值的容器
sample_mean_array_size=np.zeros(len(size_array))

5.2 利用程序模拟,在改变样本容量的同时反复计算样本均值。

# 设置随机种子,确保结果的可复现
np.random.seed(1)
# 按不同的样本容量进行抽样,并将样本均值存至sample_mean_array_size
for i in range(0,len(size_array)):
    sample=pop.rvs(size=size_array[i])
    sample_mean_array_size[i]=np.mean(sample)

5.3 作图显示样本容量与样本均值之间的关系

plt.plot(size_array,sample_mean_array_size)
plt.xlabel('sample size')
plt.ylabel('sample mean')

由图可知样本容量越大,样本均值就越接近总体均值4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值