阅读引导

  • 基本概念
  • 方差分析基本步骤
  • 案例—python实现
  • 总结

基本概念

方差分析(Analysis of variance, ANOVA) :——又称“变异数分析”
①用于两个及两个以上样本均数差别的显著性检验
②主要研究分类变量作为自变量时,对因变量的影响是否是显著

(1)组间因子 & 组内因子

组间因子:同一结果在同一变量的不同维度上单次试验

组内因子:同一结果在同一变量的不同维度上反复试验

(2)自变量 & 因变量

自变量:可以自由改变的量;因变量:随着自变量的改变而改变的量
简单点说,自变量是“原因”,而因变量就是“结果”

(3)均衡设计(balanced design) & 非均衡设计(unbalanced design)

研究组间变量时,设计的试验在每个组间因子下的观测数是否相等,相等就叫均衡设计(试验),否则,就叫非均衡设计(试验)

(4)主效应 & 交互效应

(5)单因素方差分析(one-way ANOVA)——单因素组间方差分析

(6)单因素组内方差分析——重复测量方差分析

(7)因素方差分析设计【双因素方差分析、三因素方差分析等】

(8)混合模型方差分析

(9)混淆因素(confounding factor)也被称作干扰变数(nuisance variable)


以焦虑症治疗为例,
现有两种治疗方案:认知行为疗法(CBT)和眼动脱敏再加工法(EMDR)。
招募10位焦虑症患者作为志愿者,
随机分配一半的人接受为期五周的CBT,另外一半接受为期五周的EMDR,
设计方案如表1-1所示。在治疗结束时,要求每位患者都填写状态特质焦虑问卷(STAI),也就是一份焦虑度测量的自我评测报告

表1-1 单因素组间方差分析

CBT EMDR
s1 s6
s2 s7
s3 s8
s4 s9
s5 s10

治疗方案CBT和治疗方案EMDR是组间因子,因为每位患者都仅被分配到一个组别中,没有患者同时接受CBT和EMDR。表中字母s代表受试者(患者)。STAI是因变量,治疗方案是自变量(CBT、EMDR是治疗方案的不同维度)。由于在每种治疗方案下观测数相等,因此这种设计也称为均衡设计(balanced design);若观测数不同,则称作非均衡设计(unbalanced design)。

因为仅有一个类别型变量,表1的统计设计又称为单因素方差分析(one-way ANOVA),或进一步称为单因素组间方差分析

方差分析主要通过F检验来进行效果评测,若治疗方案的F检验显著,则说明五周后两种疗法的STAI得分均值不同


方差分析基本步骤

研究分类型自变量对数值型因变量的影响
实际就是多个样本的均值比较
注意:数据必须是两列数值数据(分类型数值、度量值)
步骤:
F检验 原假设:三个品牌寿命方差没有显著差异
备择假设:三个品牌寿命方差有显著差异
注意:F检验结果中显著性>0.05才算方差齐
ANOVA检验结果
原假设:三个品牌电池寿命的均值相等(三个品牌电池寿命方差没有显著差异)
备择假设:三个品牌电池寿命的均值不全相等(三个品牌电池寿命方差有显著差异)
事后检验-----方差齐 LSD; 方差不齐 T2
事后多重比较是两两对比均值
4、 P<0.05,接受备择假设,两总体均值有显著性差异
P>0.05,接受原假设,两总体均值不存在显著性差异

案例—python实现

from scipy.stats import f_oneway
a = [87,86,76,56,78,98,77,66,75,67]   #群体1成绩
b = [87,85,99,85,79,81,82,78,85,91]  #群体2成绩
c = [89,91,96,87,89,90,89,96,96,93]  #群体3成绩#计算F值
f,p = f_oneway(a,b,c)
print(f,p)

from scipy import stats
import pandas as pd
import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lmtreatment = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]    #处理 变量
gender    = [1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2]    #性别
loss      = [76,78,76,76,76,74,74,76,76,55,65,90,65,90,65,90,90,79,70,90, 88,76,76,76,56,76,76,98,88,78,65,67,67,87,78,56,54,56,54,56]  #体重减少 data = {'T':treatment, 'G':gender, 'L':loss}
df = pd.DataFrame(data)
formula = 'L~T+G+T:G'                           #~ 隔离因变量和自变量 (左边因变量,右边自变量 )#+ 分隔各个自变量, :表示两个自变量交互影响
model = ols(formula,df).fit()                   # 根据公式数据建模,拟合
results = anova_lm(model)                       # 计算F和P
print(results)

import pandas as pd
import numpy as np
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data = pd.DataFrame([[1, 1, 32],[1, 2, 35],[1, 3, 35.5],[1, 4, 38.5],[2, 1, 33.5],[2, 2, 36.5],[2, 3, 38],[2, 4, 39.5],[3, 1, 36],[3, 2, 37.5],[3, 3, 39.5],[3, 4, 43]], columns=['A', 'B', 'value'])# 因素A的水平对结果的影响  'value ~ C(A)'# 因素A和因素B的水平对结果的影响  'value ~ C(A) + C(B)'# 因素A和因素B以及A和B的交互作用的水平对结果的影响 'value ~ C(A) + C(B) + C(A)*C(B)'# 多因素无重复试验,不计算交互作用的影响
model = ols('value~C(A) + C(B)', data=data[['A', 'B', 'value']]).fit()
anovat = anova_lm(model)
print (model.summary())
print (anovat)# #data为之前生成的DataFrame中选出的进行分析所需要的列,实际上ols是通过DataFrame的列名来获得试验结果和因素水平的数据的。最后用ols函数进行最小二乘线性拟合,用anova_lm函数进行方差分析并输出结果。# # 如果是直接导入excel,通过pandas读取excel后,得到df,那么就不需要在ols()函数中data选择列,直接加入df
# model = ols('value~C(group) + C(time)',df).fit()
# anovat = anova_lm(model)
# print (model.summary())
# print (anovat)
# #进行单因素多方差分析,将formula中的C(B)去掉即可。
# #如果是对于有重复的多因素方差分析,将formula中加上C(A)*C(B)

总结

方差分析的思想就是通过方差比较各族群之间有没有差异,
其中就是计算组内均方和和组间均方和,然后代入统计量做显著性检验
方差分析可以算是个线性模型,在统计学上面的检验原理和线性回归是差不多的

主要功能:
验证两组样本,或者两组以上的样本均值是否有显著性差异,即均值是否一样
注意:
①方差分析的原假设是:样本不存在显著性差异(即,均值完全相等);
②两样本数据无交互作用(即,样本数据独立)这一点在双因素方差分析中判断两因素是否独立时用。

原理

SST=SS组间+SSR组内 (全部平方和=组间平方和+组内平方和)

说明

方差分析本质上对总变异的解释。
组间平方和=每一组的均值减去样本均值
组内平方和=个体减去每组平方和
方差分析看的最终结果看的统计量是:F统计量、R2

参考资料:
datawhale组队学习——《率统计(四)-方差分析》
Task3:常见分布与假设检验
python中anova方差分析

datawhale学习小组 Task4:方差分析相关推荐

  1. 零基础入门推荐系统 - 新闻推荐-Task2 (DataWhale学习小组)

    零基础入门推荐系统 - 新闻推荐-Task2 (DataWhale学习小组) 数据探索性分析 加载需要的module %matplotlib inline import pandas as pd im ...

  2. bzoj3442 学习小组

    目前处于迷之TLE状态 -----6.21更新 已AC 3442: 学习小组 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 200  Solved:  ...

  3. Pytorch学习:Task4 PyTorch激活函数原理和使用

    Pytorch学习:Task4 PyTorch激活函数原理和使用 1.torch.nn.ELU Sigmoid和ReLU结合体,具有左侧软饱和性 2.torch.nn.LeakyReLU 数学表达式: ...

  4. 【原创】如何组织好一个学习小组

    如何组织好一个学习小组 引言 学习小组做的很多,成功的很少,如何做好一个学习小组,需要投入很多心思,比如选择学习内容,是否是大家感兴趣的:大家的时间问题:如何能保证大家学有所成-.但我们还是做了,这里 ...

  5. 知识图谱学习小组学习大纲

    (这是为北京知识学习小组第一期 kgbj1 准备的为期4周的学习大纲) 2016年6月3日 鲍捷 这个学习小组的目的,不是按教科书的定义去学习"知识图谱",更不是做研究.我们更多是 ...

  6. 【面试必备】通俗易懂的XGBoost、Transformer、BERT、水波网络原理解析 | 学习小组...

    在当今的人工智能时代,相信大部分人都会关注深度学习技术,但请千万不要忽视对传统机器学习技术的理解.实际上,真正去从事AI工作的时候就会发现,对传统机器学习的依赖还是巨大的.如逻辑回归.随机森林.GBD ...

  7. 【bzoj3442】学习小组 费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6809670.html 题目描述 [背景] 坑校准备鼓励学生参加学习小组. [描述] 共有n个学生,m个学习小组,每个 ...

  8. 如何加入Dave英语学习小组

    一.     加入小组 英语对IT 是非常重要的,但很多人都不能坚持去学习,Dave 英语学习小组成立与已经超过半年,现在进行扩招,欢迎想提高英语,并且能够坚持每天学习的人,加入Dave 的小组,并坚 ...

  9. 34个省市自治区排序_freeCodeCamp的1,000多个学习小组现已完全自治

    34个省市自治区排序 by Justin Sane 贾斯汀·桑恩(Justin Sane) freeCodeCamp的1,000多个学习小组现已完全自治 (freeCodeCamp's 1,000+ ...

最新文章

  1. Linux 如何通过命令查看一个文件的某几行(中间几行或最后几行)
  2. 机器人造iPhone,苹果奋斗八年,还是败给了富士康工人
  3. python标准库介绍——4 string模块详解
  4. mybatisplus 结果_springboot整合mybatisPlus 乐观锁的实现
  5. windows不能改密码
  6. int类型的实参与int*类型的形参不兼容_谁告诉的你们Python是强类型语言!站出来,保证不打你!...
  7. 基于 Kubernetes 的 FaaS 平台开源实现——Kubeless 的应用实践
  8. matplotlib.pyplot绘制函数图像希腊字母latex效果设置
  9. Netflix CEO:入华谈判进展顺利 或很快获牌照
  10. Python中Function(函数)和method(方法)
  11. asp.net httprequest httpresponse
  12. css根据屏幕大小切换样式
  13. FD.io VPP 使用场景-用例
  14. c语言n个测试用例0为结束,编写测试用例 - osc_4l0h8in9的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. c/c++入门教程 - 2.4.7 多态、函数地址晚绑定(重写,虚函数,纯虚函数,抽象类,虚析构,纯虚析构)
  16. 开发小程序需要多少钱
  17. MEGA UNO固件烧写教程
  18. DrawBoard 是一个自定义 View 实现的画板;方便对图片进行各种编辑或涂鸦相关操作
  19. 影像分析器之:波形示波器
  20. 2020/09/20 React中获取target(报错信息Warning: This synthetic event is reused for performance reasons.)

热门文章

  1. java根据word模板导出_java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)...
  2. freeRTOS 时间管理
  3. 华为M3平板升级鸿蒙系统,华为m3平板 日版刷国行 没有重力感应怎么解决?(篇二)...
  4. [附源码]Python计算机毕业设计_旅游系统
  5. python语言中、用来安装第三方库的命令_python安装第三方库的方法
  6. 切图具体需要切什么内容_APP切图详细规范终极指南
  7. 煤矿用计算机,煤矿安全生产中计算机的运用
  8. [转]数据挖掘十大经典算法
  9. 基于python的scip库使用,从基础模型到复杂模型,从一维变量到三维变量
  10. php计算素数,质数素数计算器