数据分析小案例(二):面包是不是变轻了(python)
案件回顾
面包是不是变轻了
- 面包店对外声称每个面包分量为400g
- 老店主退休,儿子接管面包店
- 有顾客投诉,面包分量比以前的轻了
- 统计了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检验)
- 零假设 样本均值与总体均值的差异在误差范围内,即面包没有变轻
- 备择假设 样本均值与总体均值的差异超出了误差范围,即面包变轻
- 概率不足显著性水平(5%) 否定零假设,即面包确实变轻了
- 概率等于或超过显著性水平(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%),则认为存在显著差异。
机器学习养成记
- 快速入门系列--WCF--07传输安全、授权与审核
- JavaScript之面向对象学习四原型对象的动态性
- Apache顶级开源项目——机器学习库MADlib简介与应用实例
- 快速入门系列--WCF--06并发限流、可靠会话和队列服务
- 以太坊创始人或将卖掉所有以太坊,以太经典ETC才是未来
- SQL学习之HAVING过滤分组
- 快速入门系列--WCF--04元数据和异常处理
- linq to sql中慎用Where<T>(Func<TSource, bool> predicate),小心被Linq给"骗"了!
- 快速入门系列--WCF--03RESTFUL服务与示例
- SQL练习之不破坏应用程序现有查询的修改模式
- 快速入门系列--WCF--02消息、会话与服务寄宿
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
- 快速入门系列--深入理解C#
- “家庭贷款”域名Home.loans已经建站为家庭贷款相关的网站
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mysqldump命令详解 Part 4-备份单表
- mysqldump命令详解 Part 5-按条件备份表数据
- mysqldump命令详解 Part 6-导出事件,函数和存储过程
- StampedLock知识点梳理
- ReentrantReadWriteLock知识点梳理
- 每天都在用String,你真的了解吗?
- [Go] Golang练习项目-快速排序的GO语言实现
- MySQL学习笔记【基础篇】
- 设计模式~缺省适配模式
- 设计模式~合成模式
- mknod | Linux 后门系列
- Nmap NSE 库分析 >>> base64
- 视频远程通话会议EasyRTC通过SSH部署,关闭SSH后进程停止运行如何解决?
- MapReduce之ReduceJoin案例
- ios SDK如何配置