方差分析python实现
单因素方差分析
在此之间我们先导入数据,
案例:我们探究施肥与否是否对植物的生长有影响,试验为: - 对照组:清水 - 实验组: 某肥料四个浓度梯度,分别是A,B,C,D,施肥一段时间之后测量树高(要控制其他变量保持一致,比如施肥之前的树高要基本保持一致,生长势基本保持一致等等)
在方差分析满足,独立性,正态性,方差齐性,虽然没有满足方差齐性也可以进行非参数的检验,下面我们开始对数据进行处理
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdf = {'baseline':list(np.random.normal(10, 5, 10)),'treat1':list(np.random.normal(15, 5, 10)),'treat2':list(np.random.normal(20, 5, 10)),'treat3':list(np.random.normal(30, 5, 10)),'treat4':list(np.random.normal(31, 5, 10))}data = pd.DataFrame(df)
我们看一下随机生成的数据长什么样
大概了解一下描述性统计数据
我们为了方便计算,将所有的数据合成一列,并画一下箱线图看一下
import seaborn as snsdata_melt = data.melt()
data_melt.columns = ['Treat', 'value']sns.boxplot(x = 'Treat', y = 'value', data = data_melt)
由于我们在生成随机数的时候为了让结果明显一点,所以从这个图我们也很容易看到差异性还是很明显的
方差分析
# 方差分析
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import pairwise_tukeyhsdmodel = ols('value ~C(Treat)', data = data_melt).fit()
anova_table = anova_lm(model, type = 2)
pd.DataFrame(anova_table)# 进行事后比较分析
print(pairwise_tukeyhsd(data_melt['value'], data_melt['Treat']))
我们进行方差分析之后得到的结果如下:
我们可以看到因子(Treat)的不同水平,对于因变量的影响还是很显著的,p值显然小于0.05.
然后我们进一步进行多重比较,事后分析:
group1以及group2表示的是因子的不同水平,然后分析他们两个组是否有显著性差异,最后面的reject表示是否拒绝原假设,True表示的是拒绝原假设,说明两组均值有显著性差异
多因素方差分析
首先我们将数据导进来,看一下分布
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
from statsmodels.stats.multicomp import pairwise_tukeyhsddata = pd.read_csv('anovaa.csv')
data = pd.DataFrame(data)
data.head()
便于理解,我们可以将people因子认为是不同的操作员,group因子可以理解成使用不同的方法操作,因变量就是value结果怎么样
按照惯例,我们看一下数据的描述性统计数据
我们看一下箱线图情况
sns.boxplot(x = 'group', y = 'value', data = data)
sns.boxplot(x = 'people', y = 'value', data = data)
model = ols('value ~C(group) + C(people) + C(group):C(people)', data = data).fit()
anova_table = anova_lm(model, type = 2)
pd.DataFrame(anova_table)
这里得到每一个因子不同水平的均值差异与否的检验
还有就是两个因子的交互效应
结果得到:group组是小于0.05的,people和两者的交互效应是大于0.05的,所以这样就明白了他们的交互效应
接下来进行进一步多重检验
print(pairwise_tukeyhsd(data['value'], data['people']))
print(pairwise_tukeyhsd(data['value'], data['group']))
这是people因子不同水平的比较结果
这是group不同水平的比较结果
方差分析python实现相关推荐
- 多因素方差分析——python
在一次实验中,实验的结果会同时受到多个因素的影响. 例如在一次实验中,实验的结果通过收到了物质的浓度和时间的影响,但是在方差分析中,若是把浓度看做是影响OD值的因素A,把时间看做是影响因素B.同时对因 ...
- 单因子方差分析Python实现(小鸡增肥)
#anova_lm ##<概率论与数理统计>378页例8.1.2 from statsmodels.stats.anova import anova_lm from statsmodels ...
- 多因素方差分析_方差分析入门
本文从方差分析的概念切入,简述了对方差分析的理解,随后提出方差分析的一般方法,之后用python实现了方差分析的一个简单应用.全文分成以下几个部分: 方差分析的概念 方差分析的理解和内容 方差分析的前 ...
- 【机器学习算法专题(蓄力计划)】八、机器学习中数据的方差分析
文章目录 方差分析的概述 基本思想: 随机误差: 系统误差: 组内方差: 组间方差: 方差的比较: 方差分析计算方法 方差分析的前提: 单因素方差分析 检验的统计量 方差分析中的多重比较 两组比较 多 ...
- 方差分析介绍(结合COVID-19案例)
作者|GUEST BLOG 编译|VK 来源|Analytics Vidhya 介绍 "事实是每个人都相信的简单陈述.也就是事实是没有错的,除非它被人发现了错误.假设有一个没人愿意相信的建议 ...
- 精选合辑 | 30个Python数据分析及实战项目(含源码)
今天给大家推荐一个优质的Python公众号「法纳斯特」,作者:小F. 小F是211机械专业毕业的,上学的时候还造了两辆车(FSC.无碳小车),毕业以后又在车企搬了一年的砖,最终决定转行IT,从零开始学 ...
- aov()函数lm()函数区别,(I型、Ⅲ型平方和)
R:aov和lm方差分析的区别 在R中经常会用aov()和lm()两个函数进行方差分析,aov 函数的内核使用了lm算法,但二者有一定的区别. aov() 默认(summary) 结果是基于Type ...
- python分析数据差异的方法_用Python的两种方法进行方差分析
在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的.比如在化工生产中,有温度.压力.剂量.反应时间等因素.每一因素的改变都有可能影响产品的数量和质量. ...
- python单向认证_使用Python进行单向方差分析的四种方法
python单向认证 The current post will focus on how to carry out between-subjects ANOVA using Python. As m ...
最新文章
- css实现左侧宽度自适应,右侧固定宽度
- [IE9] 如何让你的网站在IE9和Win7任务栏上更闪亮
- 第三方控件DevExpress的TreeList绑定XML文件
- mysql权重怎么配置_mysql如何按权重查询数据啊?
- @AspectJ中的切点表达式详解
- vue 打开html流_解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题...
- telnet远程登录协议
- android日历信息获取错误,android – 从日历中获取事件
- php 关闭 ob缓存,php ob缓存主要函数
- ubuntu 12.04 lts搭建android 编译环境
- centos 安装 LAMP
- linux shell crontab 定时操作(转)
- html 播放flv js代码,js实现的万能flv网页播放器代码
- 用C#对Illustrator矢量图形软件进行编程
- 不透明度对应的16进制转换
- PostgreSQL checksum与Data Corruption
- 实验二猜字迷游戏程序开发
- 如何使用Python 绘制惊艳众人的瀑布图
- [Linux]关于网卡配置文件
- pyqt tablewidget 设置一行的背景_PyQt+moviepy音视频剪辑实战2:一个剪裁视频文件精华内容留存工具的实现...