Excel对比Python实现方差分析
如下图所示,ABCD四个区域在不同日期的销售数据:
问题一:每个地区间的销售量是否相同?
问题二:不同月份的销售是否相同?
问题三:不同时间与地区的销售量是否相同?
Excel解答三个问题:
答一:
P=0.0249<0.05,故拒绝原假设。同理F=3.466>2.838,拒绝原假设。我们认为每个地区的销量是不同的。
答二:
P=0.106>0.05,不能拒绝原假设。同理F=2.368<3.225,不能拒绝原假设,不同月份销量是相同的。
答三:
不同时间对销售量无显著影响,而不同地区对销售量是有显著影响的。
Python解答:
import pandas as pd
import numpy as npdata = pd.read_excel("D:\pyFile\销售数据.xlsx")
#print(data)
#构建单因素方差分析
def one_way_anova(data,F):r,c = data.shapedf_ssa = c - 1df_sse = r*c - cdata_mean = data.values.mean() #总均值ssa = 0sse = 0for i in range(c):#每组数据data_group = data.iloc[:,i].values#组间误差ssa += len(data_group) * ((data_group.mean() - data_mean)**2)for j in data_group:#组内误差sse += (j - data_group.mean())**2msa = round(ssa/df_ssa,2)mse = round(sse/df_sse,2)if msa/mse > F:print(msa/mse)print('拒绝原假设')else:print(msa/mse)print('接受原假设')#构建无交互作用的双因素方差分析
def two_way_anova(data,Fr,Fc):r,c = data.shapedf_sst = r*c-1 #总自由度df_ssc = c-1 #组间自由度(列)df_ssr = r-1 #组间自由度(行)df_sse = (c-1)*(r-1) #组内自由度(行)data_mean = data.values.mean()ssr = 0ssc = 0sst = 0 for i in range(c): #组间(列)误差data_cgroup = data.iloc[:,i].valuesssc += len(data_cgroup)*((data_cgroup.mean()-data_mean)**2)for j in range(r): #组间(行)误差data_rgroup = data.iloc[j,:].valuesssr += len(data_rgroup)*((data_rgroup.mean()-data_mean)**2) sst = np.sum([(k-data.values.mean())**2 for k in data.values]) #总误差 sse = sst - ssr -sscmsr = round(ssr/df_ssr,2)msc = round(ssc/df_ssc,2)mse = round(sse/df_sse,2) if msr/mse > Fr:print(msr/mse)print('行因素拒绝原假设')else:print(msr/mse)print('行因素不能拒绝原假设') if msc/mse > Fc:print(msc/mse)print('列因素拒绝原假设')else:print(msc/mse)print('列因素不能拒绝原假设')one_way_anova(data,2.84)
out:
3.466423904557266
拒绝原假设two_way_anova(data,2.16,2.92)
out:
1.6070617016801232
行因素不能拒绝原假设
3.9925072049114414
列因素拒绝原假设
当然,强大如python,不可能没有封装好的函数进行方差分析,可以直接调用scipy.stats.f_oneway进行单因素方差分析,而双因素方差分析需先构建线性回归模型再进行双因素方差分析。
#单因素方差分析
from scipy import stats
stats.f_oneway(data.iloc[:,0],data.iloc[:,1],data.iloc[:,2],data.iloc[:,3])
out:
F_onewayResult(statistic=3.4664239064514066, pvalue=0.024913351378399826)#双因素方差分析
import statsmodels.api as sm
from statsmodels.formula.api import ols
#构建无交互作用的线性回归模型
model = ols('num ~ C(area) + C(time)', data=data).fit()
#构建交互作用的线性回归模型
model = ols('num ~ C(area) + C(time) + C(area)*C(time)', data=data).fit()
#双因素方差分析
sm.stats.anova_lm(model)
参考:微信公众号"小文的数据之旅"
Excel对比Python实现方差分析相关推荐
- Python 自动化办公之 Excel 对比工具
作者 | 周萝卜 来源丨萝卜大杂烩 今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于 ...
- Python自动化办公之Excel对比工具
今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于工作当中经常需要对比前后两个 Exc ...
- python怎么筛选excel数据_python筛选数据excel表格-如何利用python提取两个excel对比后的重复值的信息?...
怎么用python读取excel表格的数据 import xlrd #open the .xls file xlsname="test.xls" book = xlrd.open_ ...
- python怎么筛选excel数据_工具篇:EXCEL与python的对比 如何筛选数据.md
工具篇:EXCEL与python的对比 如何筛选数据 第6章 数据筛选 使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和. 与Excel中的筛选功能和countifs和sum ...
- 数据分析领域,为什么要对比Excel学习Python?
Python本身是一门编程语言,应用于Web开发.爬虫.机器学习等多个领域,但是除了这些,今天我要告诉你Python大热的一个学习方向--那就是Python数据分析. 我常常会听到这样的问题,&quo ...
- Python数据分析是什么?为什么要对比Excel学习Python数据分析?
Python 虽然是一门编程语言,但是它并不难学,不仅不难学,而且很容易上手,这也是Python深受广大数据从业者喜爱的原因之一,因此大家在学习Python之前首先在心里告诉自己一句话,那就是Pyth ...
- python与excel结合-使用Excel和python来做回归分析
使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...
- python相比于excel的优势_使用Excel和python来做回归分析
使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...
- python分析excel数据-对照Excel使用Python进行数据分析,更快掌握
Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...
最新文章
- java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结
- python二十三:生产者 消费者模型
- 24点——判断4个数能否经过运算使得结果为24
- 【HeadFirst 设计模式学习笔记】13 MVC分析
- spring boot2.x设置session有效时间_Spring 源码解析 Scopes 之 Request 、Session 、Application...
- 2075. 解码斜向换位密码
- Android 系统(263)---Glide框架
- 【github系列】github定位到历史版本(历史commit点)
- 2015年传智播客JavaEE 第168期就业班视频教程day38-SSH综合案例-1
- python列表姓氏,Python程序可以打印完整姓氏的名字的缩写吗?
- 关于高效找工作的几条建议
- ZedGraph _WINFORM中设置ZEDGRAPH的曲线符号SYMBOL以及对应关系
- 如何减小电压跟随器输出电阻_河南安全型耦合器生产厂家-作用_华锐矿机
- win10开机启动ps1脚本
- Android端穿山甲SDK集成
- 新年新气象,努力奋上新时代
- 智能手机查看上网IP地址的多种方法
- 前端开发毕业设计如何选题?怎么做?
- input自动填充后背景颜色被覆盖的问题
- Matlab中值滤波