Python统计学:如何理解样本统计量?

本期介绍样本统计量是怎么算的,并用Python来模拟随机抽样。用一个在鱼塘捞鱼的简单例子来理解样本均值的概念。

如何理解重复试验?

指能够在完全相同条件下进行多次的试验;

比如我们抛10枚硬币,用来计算正面出现的概率,那每抛一次就相当于进行了一次试验,可以抛3次小样本,也可以抛30次大样本。

如何理解样本统计量?

每进行一次抽样,都能获得一个样本均值。也即每次抽样只能计算1次样本均值,有多少次抽样就有多少个样本均值。

比如我们要算鱼塘鱼的长度,在鱼塘随机捞10条鱼,计算鱼的平均长度,放回后又重新捞10条,那就相当于进行了两次试验,并且得到了2组样本均值。这计算得出的样本均值就是样本统计量啦。


接下来用Python模拟从鱼塘里捞鱼测量鱼的长度:

先调用要用到的包:

# 用于数值计算的库
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
sns.set()
# 设置浮点数打印精度
%precision 3
# 在Jupyter Notebook 里显示图形
%matplotlib inline

定义一个总体:均值为4,标准差为0.8(方差为0.64)

population = stats.norm(loc = 4, scale = 0.8)

代码详解:

scipy库中的norm函数用于创建正态分布概率密度函数;

loc参数指定正态分布的均值为4;

scale参数指定正态分布的标准差为0.8;


接下来用Python模拟一下随机试验和样本均值的计算:

sample_mean_array = np.zeros(10000)
np.random.seed(1)
for i in range(0, 10000):
    sample = population.rvs(size = 10)
    sample_mean_array[i] = sp.mean(sample)

zeros()函数创建了一个长度为10000的一维数组,并将其所有元素都初始化为0,用于存储多次随机抽样后的样本均值;

random是随机函数,seed是随机种子,设置随机种子可以保证每次随机数生成的结果都是相同的;

for循环设置一个0到10000的循环;

population指正态分布概率密度函数对象;rvs方法是random variates方法的缩写,用于生成符合指定分布的随机变量; 也可以这样写:stats.norm.rvs(loc = 4, scale =0.8, size = 10);

mean()求均值,得到每次试验的样本均值,并保存在sample_mean_array里;


最后计算这10000次试验的均值,结果与总体均值很接近:

sp.mean(sample_mean_array)

绘制样本均值的直方图,也是近似正态分布:

sns.distplot(sample_mean_array)


如果只进行5次试验,结果可见样本均值比总体均值的差距就稍微有点大了:

猜你喜欢

转载自blog.csdn.net/Sukey666666/article/details/130233610