概念

方差分析(Analysis of Variance,简称ANOVA),又称“变异数分析”或“F检验”,用于两个及两个以上样本均数差别的显著性检验。单因素方差分析即影响试验的因素只有一个。

需要满足的假设

  1. 样本是独立的。
  2. 每个样本来自正态分布的总体。
  3. 各总体的标准偏差都是相等的,即同方差性。

准备数据

将抗生素注入人体会产生抗生素与血浆蛋白质结合的现象,这种结合会降低药效。下表给出了四种常用的抗生素注入到牛的体内时,抗生素与血浆蛋白质结合的百分比。推断不同抗生素的结合百分比是否有显著性差异(设显著性水平为0.05)。

抗生素 结合百分比
A1 29.6 , 24.3 , 28.5 , 32.0 , 28.6 , 31.5 , 25.7
A2 27.3 , 32.6 , 30.8 , 34.8 , 31.4
A3 21.6 , 17.5 , 18.3 , 19.0 , 23.4 , 14.8
A4 29.2 , 32.8 , 25.0 , 24.2 , 28.2 , 27.4

将数据导入Python:

dic_t=[{'抗生素':'A1','结合百分比':29.6},{'抗生素':'A1','结合百分比':24.3},{'抗生素':'A1','结合百分比':28.5},{'抗生素':'A1','结合百分比':32.0},{'抗生素':'A1','结合百分比':28.6},{'抗生素':'A1','结合百分比':31.5},{'抗生素':'A1','结合百分比':25.7},{'抗生素':'A2','结合百分比':27.3},{'抗生素':'A2','结合百分比':32.6},{'抗生素':'A2','结合百分比':30.8},{'抗生素':'A2','结合百分比':34.8},{'抗生素':'A2','结合百分比':31.4},{'抗生素':'A3','结合百分比':21.6},{'抗生素':'A3','结合百分比':17.5},{'抗生素':'A3','结合百分比':18.3},{'抗生素':'A3','结合百分比':19.0},{'抗生素':'A3','结合百分比':23.4},{'抗生素':'A3','结合百分比':14.8},{'抗生素':'A4','结合百分比':29.2},{'抗生素':'A4','结合百分比':32.8},{'抗生素':'A4','结合百分比':25.0},{'抗生素':'A4','结合百分比':24.2},{'抗生素':'A4','结合百分比':28.2},{'抗生素':'A4','结合百分比':27.4},]
df_t=pd.DataFrame(dic_t)

方差齐性检验

运用Levene方差齐性检验,先对各总体等方差的假设进行检验,代码如下:

def f_homovar(df_c,col_fac,col_sta):df=df_c.copy()list_fac=df[col_fac].unique()for i in list_fac:df.loc[df[col_fac]==i,col_sta]=abs(df[df[col_fac]==i][col_sta]-df[df[col_fac]==i][col_sta].mean())r=len(list_fac)n=df[col_sta].count()x_bar=df[col_sta].mean()list_Qa=[]list_Qw=[]for i in list_fac:series_i=df[df[col_fac]==i][col_sta]xi_bar=series_i.mean()ni=series_i.count()list_Qa.append(ni*(xi_bar-x_bar)**2)list_Qw.append(((series_i-xi_bar)**2).sum())Sa=sum(list_Qa)/(r-1)Sw=sum(list_Qw)/(n-r)F=Sa/Swsig=stats.f.sf(F,r-1,n-r)dic_res=[{'Levene Statistic':F,'df1':r-1,'df2':n-r,'Sig.':sig}]df_res=pd.DataFrame(dic_res,columns=['Levene Statistic','df1','df2','Sig.'])return df_res
f_homovar(df_t,'抗生素','结合百分比')

结果如下:

由于p值 Sig.= 0.979 > 0.05,故可以认为各总体方差相等。

单因素方差分析

接下来进行单因素方差分析,代码如下:

def f_oneway(df_c,col_fac,col_sta):df=df_c.copy()list_fac=df[col_fac].unique()r=len(list_fac)n=df[col_sta].count()x_bar=df[col_sta].mean()list_Qa=[]list_Qw=[]for i in list_fac:series_i=df[df[col_fac]==i][col_sta]xi_bar=series_i.mean()ni=series_i.count()list_Qa.append(ni*(xi_bar-x_bar)**2)list_Qw.append(((series_i-xi_bar)**2).sum())Sa=sum(list_Qa)/(r-1)Sw=sum(list_Qw)/(n-r)F=Sa/Swsig=stats.f.sf(F,r-1,n-r)df_res=pd.DataFrame(columns=['方差来源','平方和','自由度','均方','F值','Sig.'])df_res['方差来源']=['组间','组内','总和']df_res['平方和']=[sum(list_Qa),sum(list_Qw),sum(list_Qa)+sum(list_Qw)]df_res['自由度']=[r-1,n-r,n-1]df_res['均方']=[Sa,Sw,'-']df_res['F值']=[F,'-','-']df_res['Sig.']=[sig,'-','-']return df_res
f_oneway(df_t,'抗生素','结合百分比')

结果如下:

由于p值 Sig.= 0.000 < 0.05,故可以认为不同抗生素的结合百分比有显著差异。

Python玩转数据分析——单因素方差分析相关推荐

  1. 用python玩转数据测试与作业_用Python玩转数据分析10

    MOOC上的课程<用Python玩转数据分析>的学习笔记. 数据探索与预处理之数据清洗 数据探索包括检查数据错误,了解数据分布特征和内在规律 数据预处理包括数据清洗,数据集成(integr ...

  2. 四大会计师事务所python数据分析_用Python玩转数据分析4

    MOOC上的课程<用Python玩转数据分析>的学习笔记. 序列序列中的每一个元素都有它的一个索引,N长的序列中元素的索引从[0]到[N-1]或者从[-1]到[-N]. 字符串,用''表示 ...

  3. R语言基础数据分析—单因素方差分析

    有了试验数据,我们就需要进行数据的处理与分析,而在试验设计中,通常分为单因素试验或者双因素试验.试验中要考察的指标称为试验指标,影响试验指标的条件称为因素,因素所处的状态称为水平,若试验中只有一个因素 ...

  4. Python玩转数据分析——双因素方差分析

    概念 方差分析(Analysis of Variance,简称ANOVA),又称"变异数分析"或"F检验",用于两个及两个以上样本均数差别的显著性检验.双因素方 ...

  5. Python笔记-方差分析之单因素方差分析

    这个单因素分析一般是用来研究不同行业股票收益水平. 比如下面的代码: from statsmodels.stats.anova import anova_lm from statsmodels.for ...

  6. Python玩转数据分析——T检验

    概念 T检验,也称 student t 检验 ( Student's t test ) ,用来比较两个样本的均值差异是否显著,通常用于样本含量较小 ( n < 30 ) 的样本.分为单样本 t ...

  7. 用python玩转办公软件(pandas数据分析)入门

    用python玩转办公软件(pandas数据分析)入门 文章目录 用python玩转办公软件(pandas数据分析)入门 1.pandas介绍 2.csv文件介绍 3.pandas常用操作csv (1 ...

  8. 慕课《用Python玩转数据》之B站弹幕数据分析

    慕课<用Python玩转数据>之B站弹幕数据分析 1.源代码 # -*- coding: utf-8 -*- """ Created on Wed May 1 ...

  9. Python 玩数据分析:统计 Excel 并用 Matplotlib 绘图

    Python 玩数据分析:统计 Excel 并用 Matplotlib 绘图 数据无处不在 我希望我懂得如何使用基本的电子公式 一图胜千言 完整代码  作者:高玉涵  时间:2022.6.19 11: ...

最新文章

  1. 【Spring】基于xml实现事务控制(银行转账)
  2. 魅族手机使用鸿蒙系统,魅族宣布接入华为鸿蒙系统,这应该是黄章最正确的决定...
  3. [RHEL5企业级Linux服务攻略]--第6季 Vsftpd服务全攻略之常规配置
  4. html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
  5. Spring-Cloud中常见的服务组件
  6. excel统计行数_值得收藏的6个Excel函数公式(有讲解)
  7. NB-IoT/LoRa是新技术?其实30年前就已经出现了
  8. 简单开发一个java 插件式demo
  9. Linux的磁盘配额设置
  10. 【Matplotlib】 移动spines
  11. SpringBoot非官方教程 | 第二十篇: 处理表单提交
  12. python scipy.optimize.minimize多变量多参数优化
  13. dava靶场远程命令执行
  14. 如何判断Convex Set(凸集)、Convex Function(凸函数)
  15. 数据信息系统的计算机应用,管理信息系统与计算机应用.ppt
  16. L*a*b 颜色空间
  17. 电脑识别不到硬盘的问题
  18. 关于seo怎样才能优化网站(seo网站优化如何做)
  19. Google 管理层 正式信息
  20. 用java编写输出欢迎光临_编写一个完整的Java applet程序,程序功能为:在屏幕上输出“欢迎光临Java世界!”的字符串信息。...

热门文章

  1. 【字节青训营】Day1 HTML+CSS笔记
  2. OpenCV(四)————认识Mat对象(C++)
  3. JPG转PDF转化用什么软件?分享几款办公必备软件
  4. Debian linux--从安装到升级(非编译)
  5. Oracle开启和关闭的几种模式
  6. 如何画一个系统的设计图
  7. Lift-Splat-Shoot:论文、代码解析
  8. 元旦晚会、年会、节日抽奖软件、抽奖网页下载
  9. 以假乱真的【酷点】 - Windows下 模仿 Apple 界面
  10. dot ue4_UE4 常用数学