案件回顾
面包是不是变轻了
将数据存储为csv格式,其中每个观测对象(各个面包)占一行,测定的变量(购买日期和面包重量)排成一列。将数据导入python。
import pandas as pd breads = pd.read_csv('breads.csv',encoding='utf-8') breads.head()
pandas包提供了dataframe数据结构,在python中用pandas可以非常方便的导入csv数据。使用head()查看前几行数据(默认为前5行)如下:
date | weight | |
---|---|---|
0 | 2015/1/7 | 386.7 |
1 | 2015/1/9 | 396.7 |
2 | 2015/1/10 | 409.8 |
3 | 2015/1/12 | 384.5 |
4 | 2015/1/14 | 394.3 |
计算面包重量的均值和标准差:
import numpy as np mean = round(np.mean(breads.weight),4) std = round(np.std(breads.weight),4) import sys sys.stdout.write('mean = ' + str(mean) + '\n' + 'std = ' + str(std))
结果为:
mean = 397.1267
std = 10.7371
假设面包的重量符合正态分布,那么检验面包是否变轻,就要用样本的标准差来检查样本平均值和总体平均值之间是否存在矛盾,即均值差异检验。
均值差异检验(t检验)
from scipy.stats import ttest_rel #ttest_rel:非独立均值检验 ttest_rel(breads.weight,[400]*30)
结果为:
Ttest_relResult(statistic=-1.4411172599973978, pvalue=0.16026297018603147)
pvalue代表概率,这里面概率为0.1603,概率超过显著性水平,因此,没有足够证据怀疑面包房的面包平均重量减少。
正态分布:以平均值为中心左右对称离散的分布。有95%的数据集中在距离平均值1.96倍(约2倍)标准差的范围内。
均值差异检验:本例中指分析了30个面包的平均重量与面包店宣传的平均重量之间是否存在实质性差异。如果概率小于显著性水平(一般为5%),则认为存在显著差异。
机器学习养成记