数据分析小案例(二):面包是不是变轻了(python)

时间:2022-05-07
本文章向大家介绍数据分析小案例(二):面包是不是变轻了(python),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

案件回顾

面包是不是变轻了

  1. 面包店对外声称每个面包分量为400g
  2. 老店主退休,儿子接管面包店
  3. 有顾客投诉,面包分量比以前的轻了
  4. 统计了30个面包的重量,发现面包平均重量为397g(问题:手工面包不可能每个正好400g,根据数据判断,面包的分量到底有没有变轻?)
  • 模拟实验与分析

将数据存储为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检验)

  1. 零假设 样本均值与总体均值的差异在误差范围内,即面包没有变轻
  2. 备择假设 样本均值与总体均值的差异超出了误差范围,即面包变轻
  3. 概率不足显著性水平(5%) 否定零假设,即面包确实变轻了
  4. 概率等于或超过显著性水平(5%) 保留零假设,即面包重量没有改变

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%),则认为存在显著差异。


机器学习养成记