《中国居民营养与慢性病状况报告》中提到,我国20-24岁男性的平均身高是171.9厘米,小慕对自己班级的男同学身高进行了统计,数据如下:
[169.63, 165.64, 161, 170.17 ,169.8, 174.94, 171.30, 180.8, 173.71, 166.37, 169.67 , 177.46, 169.88, 172.86, 177.29, 171, 170.24, 175.19, 165.09, 169.43, 171, 167.71 , 172.72, 176, 160.26, 173.37, 179.63, 175.92, 179.59, 182])
并且运用t检验,对样本数据和20-24岁男性身高的总体均值进行显著差异性对比,得到的结论是不存在显著差异。
# 导入数据分析包
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
# 20—24岁的男性平均身高是171.9厘米
m = 171.9
# 问题:样本均值与总体分布均值是否存在显著性差异?
# 样本数据,单位:厘米
sample = pd.array([169.63, 165.64, 161, 170.17 ,169.8, 174.94, 171.30, 180.8, 173.71, 166.37, 169.67 , 177.46, 169.88, 172.86, 177.29, 171, 170.24, 175.19, 165.09, 169.43, 171, 167.71 , 172.72, 176, 160.26, 173.37, 179.63, 175.92, 179.59, 182])
# 查看样本值分布情况
sns.distplot(sample)
# n:样本数量、sm:样本均值
# sv:样本方差、sk:偏度、sr:峰度
n,(smin,smax),sm,sv,sk,sr = stats.describe(sample)
n,(smin,smax),sm,sv,sk,sr
# 零假设 H0:不存在显著差异
# 备择假设 H1:存在显著差异
# 计算t值(类别数据)、p值(概率)
tv, pv = stats.ttest_1samp(sample, m)
tv, pv
# 判断标准(显著差异),alpha=5%
# p值<5%,拒绝零假设,备择假设成立
if pv < 0.05:
print("存在差异显著")
else:
print("不存在显著差异")
# 结论
# 概率大于0.05,小慕班级男生的身高与同年龄段的男性平均身高,不存在显著差异
# 认为班级男生和20-24岁男生的身高状况相比没有异常
小伙伴们身边的男性(或女性)身高都是多少呢,和总体均值相比是否有显著差异呢,欢迎晒出你的答案呦~