实验的方差分析(R语言)
实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结——实验的方差分析(one-way analysis of variance)
概述
- 实验结果\(S\)受多个因素\(A_i\)影响,但影响的程度各不相同,如何通过实验数据来确定因素的影响程度呢?其函数关系为
\tag{1}
\]
- 方差
标准差的平方,表征\(x_i\)与\(\bar{x}\)的偏离程度。
方差分析(ANalysis Of VAriance,简称
ANOVA)
利用实验数据与均值的偏离程度来判断各因素对实验结果影响显著性程度的方法。方差分析实质上是研究自变量(因素)与因变量(实验结果)的相互关系指标(experimental index)
衡量或考核实验效果的参数 。
- 因素(experimental factor)
影响实验指标的条件,可控因素
- 水平
因素的不同状态或内容
单因素实验的方差分析
单因素实验方差分析基本问题
(1)目的:检验一个因素对实验结果的影响是否显著性
单因素实验方差分析基本步骤
1)计算平均值
组内平均值(同一水平的平均值)
\tag{2}
\]
总平均值
\tag{3}
\]
2)计算离差平方和
- 总离差平方和\(SS_T\)(sum of squares for total)
\tag{4}
\]
表示了各实验值与总平均值的偏差的平方和
反映了实验结果之间存在的总差异
- 组间离差平方和 \(SS_A\) (sum of square for factor A)
=\sum_{i=1}^{r}n_i({\overline{x_{i}}-\overline{x}})^2
\tag{5}
\]
反映了各组内平均值之间的差异程度
由于因素A不同水平的不同作用造成的
- 组内离差平方和$ SS_e $(sum of square for error)
\tag{6}
\]
反映了在各水平内,各实验值之间的差异程度
由于随机误差的作用产生
- 三种离差平方和之间关系:
\tag{7}
\]
3)计算自由度(degree of freedom)
- 总自由度(\(SS_T\)对应的自由度):\(df_T=n-1\)
- 组间自由度(\(SS_A\)对应的自由度):\(df_A=r-1\)
- 组内自由度(\(SS_e\)对就的自由度):\(df_e=n-r\)
三者关系:\(df_T=df_A+df_e\)
4)计算平均平方
- 均方 = 离差平方和除以对应的自由度
\]
式中,\(MA_A\)——组间均方,\(MS_e\)——组内均方/误差的均方
5)F检验
\tag{8}
\]
服从自由度为\((df_A,df_e)\)的
F分布(F distribution)对于给定的显著性水平\(\alpha\),从
F分布表查得临界值\(F_{\alpha}(df_A,df_e)\)如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果
有显著影响,否则认为因素A对实验结果没有显著影响。
6)方差分析表
| 差异源 | \(SS\) | \(df\) | \(MS\) | \(F\) | 显著性 |
|---|---|---|---|---|---|
| 组间(因素A) | \(SS_A\) | \(r-1\) | \(MS_A=SS_A/(r-1)\) | \(MS_A/MS_e\) | |
| 组内(误差) | \(SS_e\) | \(n-r\) | \(MS_e=SS_e/(n-r)\) | ||
| 总和 | \(SS_T\) | \(n-1\) |
- 若\(F_A > F_{0.01}(df_A,df_e)\),称因素A对实验结果有
非常显著的影响,用**号表示; - 若\(F_{0.05}(df_A,df_e)<F_A<F_{0.01}(df_A,df_e)\),则因素A对实验结果
有显著的影响,用*号表示; - 若\(F_A < F_{0.05}(df_A,df_e)\),称因素A对实验结果的影响
不显著。
双因素实验的方差分析
- 讨论两个因素对实验结果影响的显著性,以称
二元方差分析
双因素无重复实验的方差分析
双因素无重复实验
| \(B_1\) | \(B_2\) | \(\cdots\) | \(B_s\) | |
|---|---|---|---|---|
| \(A_1\) | \(x_{11}\) | \(x_{12}\) | \(\cdots\) | \(x_{1s}\) |
| \(A_2\) | \(x_{21}\) | \(x_{22}\) | \(\cdots\) | \(x_{2s}\) |
| \(\cdots\) | \(\cdots\) | \(\cdots\) | \(\cdots\) | \(\cdots\) |
| \(A_r\) | \(x_{r1}\) | \(x_{r2}\) | \(\cdots\) | \(x_{rs}\) |
1)计算平均值
总平均:
\tag{9}
\]
\(A_i\)水平时:
\tag{10}
\]
\(B_j\)水平时:
\tag{11}
\]
2)计算离差平方和
- 总离差平方和:
\tag{12}
\]
- 因素A引起离差平方和:
\tag{13}
\]
- 因素B引起的离差平方和:
\tag{14}
\]
- 误差平方和:
\tag{15}
\]
3)计算自由度
| \(SS_A\)的自由度 | \(SS_B\)的自由度 | \(SS_e\)的自由度 | \(SS_T\)的自由度 |
|---|---|---|---|
| \(df_A=r-1\) | \(df_B=s-1\) | \(df_e=(r-1)(s-f)\) | \(df_T=n-1=rs-1\) |
4)计算均方
| A均方 | B均方 | e均方 |
|---|---|---|
| \(MS_A=\dfrac{SS_A}{df_A}=\dfrac{SS_A}{r-1}\) | \(MS_B=\dfrac{SS_B}{df_A}=\dfrac{SS_B}{s-1}\) | \(MS_e=\dfrac{SS_e}{df_e}=\dfrac{SS_e}{(r-1)(s-1)}\) |
5)F 检验
- \(F_A\)服从自由度为\((df_A,df_e)\)的F分布:\(F_A=\dfrac{MS_A}{MS_e}\)
- \(F_B\)服从自由度为\((df_B,df_e)\)的F分布:\(F_A=\dfrac{MS_B}{MS_e}\)
- 对于给定的的显著性水平\(\alpha\),查F分布表:
\]
- 如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果
有显著影响,否则认为因素A对实验结果没有显著影响。 - 如果\(F_B > F_{\alpha}(df_B,df_e)\),则认为因素A对实验结果
有显著影响,否则认为因素A对实验结果没有显著影响。
6)无重复实验双因素方差分析表
| 差异源 | \(SS\) | \(df\) | \(MS\) | \(F\) | 显著性 |
|---|---|---|---|---|---|
| 因素A | \(SS_A\) | \(r-1\) | \(MS_A=SS_A/(r-1)\) | \(MS_A/MS_e\) | |
| 因素B | \(SS_B\) | \(s-1\) | \(MS_B=SS_B/(s-1)\) | \(MS_B/MS_e\) | |
| 误差 | \(SS_e\) | \((r-1)(s-1)\) | \(MS_e=SS_e/((r-1)(s-1))\) | ||
| 总和 | \(SS_T\) | \(rs-1\) |
双因素重复实验基本问题
交互作用——因素间的联全作用称为交互作用
因素间没有联合作用——相互独立,独立效应
因素间有联合作用——交互作用,交互效应
双因素重复实验方差分析基本步骤
1)计算平均值
- 组合水平\((A_i,B_i)\)上的\(c\)次实验值的算术平均值
\tag{16}
\]
- \(A_i\)水平时所有实验值的算术平均值:
\tag{17}
\]
- \(B_j\)水平时:
\tag{18}
\]
- 所有实验的总平均值:
\tag{19}
\]
2)计算离差平方和
- 总离差平方和:
\tag{20}
\]
- \(SS_A\)为A引起的离差平方和:
\]
- \(SS_B\)为B引起的离差平方和:
\]
- \(SS_{A\times{B}}\)为\(A\times{B}\)引起的离差平方和:
\]
- \(SS_e\)为误差平方和:
\]
3)计算自由度
| \(SS_A\)的自由度 | \(SS_B\)的自由度 | \(SS_{A\times{B}}\)的自由度 | \(SS_e\)的自由度 | \(SS_T\)的自由度 |
|---|---|---|---|---|
| \(df_A=r-1\) | \(df_B=s-1\) | \(df_{A\times{B}}=(r-1)(n-1)\) | \(df_e=rs(c-1)\) | \(df_T=n-1=rsc-1\) |
4)计算均方
| A均方 | B均方 | \(A\times{B}\)均方 | e均方 |
|---|---|---|---|
| \(MS_A=\dfrac{SS_A}{df_A}=\dfrac{SS_A}{r-1}\) | \(MS_B=\dfrac{SS_B}{df_A}=\dfrac{SS_B}{s-1}\) | \(MS_{A\times{B}}=\dfrac{SS_{A\times{B}}}{(r-1)(s-1)}\) | \(MS_e=\dfrac{SS_e}{df_e}=\dfrac{SS_e}{rs(c-1)}\) |
5)F 检验
- \(F_A\)服从自由度为\((df_A,df_e)\)的F分布:\(F_A=\dfrac{MS_A}{MS_e}\)
- \(F_B\)服从自由度为\((df_B,df_e)\)的F分布:\(F_A=\dfrac{MS_B}{MS_e}\)
- \(F_{A\times{B}}\)服从自由度为\((df_{A\times{B}},df_e)\)的F分布:\(F_A=\dfrac{MS_{A\times{B}}}{MS_e}\)
- 对于给定的的显著性水平\(\alpha\),查F分布表:
\]
- 如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果
有显著影响,否则认为因素A对实验结果没有显著影响。 - 如果\(F_B > F_{\alpha}(df_B,df_e)\),则认为因素B对实验结果
有显著影响,否则认为因素B对实验结果没有显著影响。 - 如果\(F_{A\times{B}}> F_{\alpha}(df_{A\times{B}},df_e)\),则认为交互作用$$A\times{B}$$对实验结果
有显著影响,否则认为因素\(A\times{B}\)对实验结果没有显著影响。
6)重复实验双因素方差分析表
| 差异源 | \(SS\) | \(df\) | \(MS\) | \(F\) | 显著性 |
|---|---|---|---|---|---|
| 因素A | \(SS_A\) | \(r-1\) | \(MS_A=SS_A/(r-1)\) | \(MS_A/MS_e\) | |
| 因素B | \(SS_B\) | \(s-1\) | \(MS_B=SS_B/(s-1)\) | \(MS_B/MS_e\) | |
| 交互作用 | \(SS_{A\times{B}}\) | \((r-1)(s-1)\) | \(MS_{A\times{B}}=\dfrac{SS_{A\times{B}}}{(r-1)(s-1)}\) | \(MS_{A\times{B}}/MS_e\) | |
| 误差 | \(SS_e\) | \(rs(c-1)\) | \(MS_c=SS_e/(rs(c-1))\) | ||
| 总和 | \(SS_T\) | \(rsc-1\) |
R语言方差分析
R语言重复实验方差分析
例:下表中给出了某种化式产品在3种浓度、4种温度水平下得率的数据,试检验各因素及交互作用对产品得率的影响是否显著。
| 浓度/% | 10℃ | 24℃ | 38℃ | 52℃ |
|---|---|---|---|---|
| 2 | 14,11 | 11,11 | 13,9 | 10,12 |
| 4 | 9,7 | 10,8 | 7,11 | 6,10 |
| 6 | 5,11 | 13,14 | 12,13 | 14,10 |
我们令:A因素:浓度,B因素:温度,由题可得,重复次数\(c=2\)
可以分析出如下表:
| \((c_1,c_2)\) | \(B_1\) | \(B_2\) | \(B_3\) | \(B_4\) | |
|---|---|---|---|---|---|
| 浓度/% | 10℃ | 24℃ | 38℃ | 52℃ | |
| \(A_1\) | 2 | 14,11 | 11,11 | 13,9 | 10,12 |
| \(A_2\) | 4 | 9,7 | 10,8 | 7,11 | 6,10 |
| \(A_3\) | 6 | 5,11 | 13,14 | 12,13 | 14,10 |
接下来,我们在RStudio(如果RStudio没有安装的,网上有大量的教程)中录入我们的数据,代码如下
X <- c(14,9,5,11,10,13,13,7,12,10,6,14,10,7,11,11,8,14,9,11,13,12,10,10)
chemistryProduct<-data.frame(X,A=gl(3,1,24),B=gl(4,3,24),c=gl(12,1,24))
chemistryProduct.aov<-aov(X~A*B,data = chemistryProduct)
summary(chemistryProduct.aov)
说明:对上述代码的第1行和第2行简单说明一下。
第1行中,X数据的输入,是以列的方向输入,先输入第1次实验的数据,输入完成后再按第1次的顺序输入第2次实验数据。第2行中,
A=gl(3,1,24),第一个数3表示有3行,第二个数1表示行方向只增加1,第三个数24表示总共有24个数据。后面的同理。可以查看一下它的输出如下,不难发现其中的输入规律。可以在RStudio中查看chemistryProduct的数据结构,多试一下,自行体会一下其中的A,B,c的规律。
> chemistryProduct
X A B c
1 14 1 1 1
2 9 2 1 2
3 5 3 1 3
4 11 1 2 4
5 10 2 2 5
6 13 3 2 6
7 13 1 3 7
8 7 2 3 8
9 12 3 3 9
10 10 1 4 10
11 6 2 4 11
12 14 3 4 12
13 10 1 1 1
14 7 2 1 2
15 11 3 1 3
16 11 1 2 4
17 8 2 2 5
18 14 3 2 6
19 9 1 3 7
20 11 2 3 8
21 13 3 3 9
22 12 1 4 10
23 10 2 4 11
24 10 3 4 12
可以看到如下输出结果:
Df Sum Sq Mean Sq F value Pr(>F)
A 2 44.33 22.167 4.092 0.0442 *
B 3 11.50 3.833 0.708 0.5657
A:B 6 27.00 4.500 0.831 0.5684
Residuals 12 65.00 5.417
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
将实验结果写成上文所述的方差分析表,如下
| 差异源 | \(df\) | \(SS\) | \(MS\) | \(F\) | 显著性 |
|---|---|---|---|---|---|
| 因素A | 2 | 44.33 | 22.167 | 4.092 | * |
| 因素B | 3 | 11.50 | 3.833 | 0.708 | |
| 交互作用 | 6 | 27.00 | 4.500 | 0.831 | |
| 误差 | 12 | 65.00 | 5.417 | ||
| 总和 |
由分析结果可知,因素A对产品得率有显著性影响。
实验的方差分析(R语言)的更多相关文章
- R语言- 实验报告 - 利用R语言脚本与Java相互调用
一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调 ...
- R语言实战(五)方差分析与功效分析
本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ================================================================ ...
- R语言——实验5-聚类分析
针对课件中的例子自己实现k-means算法 调用R语言自带kmeans()对给定数据集表示的文档进行聚类. 给定数据集: a) 数据代表的是文本信息. b) 第一行代表词 ...
- R语言——实验4-人工神经网络
带包实现: rm(list=ls()) setwd("C:/Users/Administrator/Desktop/R语言与数据挖掘作业/实验4-人工神经网络") Data=rea ...
- 独立成分分析(ICA)的模拟实验(R语言)
本笔记是ESL14.7节图14.42的模拟过程.第一部分将以ProDenICA法为例试图介绍ICA的整个计算过程:第二部分将比较ProDenICA.FastICA以及KernelICA这种方法,试图重 ...
- 如何在R语言中使用Logistic回归模型
在日常学习或工作中经常会使用线性回归模型对某一事物进行预测,例如预测房价.身高.GDP.学生成绩等,发现这些被预测的变量都属于连续型变量.然而有些情况下,被预测变量可能是二元变量,即成功或失败.流失或 ...
- R语言书籍的学习路线图
现在对R感兴趣的人越来越多,很多人都想快速的掌握R语言,然而,由于目前大部分高校都没有开设R语言课程,这就导致很多人不知道如何着手学习R语言. 对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑 ...
- 机器学习 1、R语言
R语言 R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 特点介绍 •主要用于统计分析.绘图.数据挖掘 •R内置 ...
- 数据分析与R语言
数据结构 创建向量和矩阵 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 函数mean(), sum(), min(), m ...
随机推荐
- C#和C++互相操作 结构体数组的传递
C++中结构体定义: typedef struct // 平面 { double time; float normal[3]; float center[3]; } plane; C++中方法声明 ...
- 【SPL标准库专题(4)】 Datastructures:SplDoublyLinkedList
简述 双链表是一种重要的线性存储结构,对于双链表中的每个节点,不仅仅存储自己的信息,还要保存前驱和后继节点的地址. 类摘要 SplDoublyLinkedList implements Iterato ...
- 使用 PowerShell 创建 Azure VM 的自定义映像
自定义映像类似于应用商店映像,不同的是自定义映像的创建者是你自己. 自定义映像可用于启动配置,例如预加载应用程序.应用程序配置和其他 OS 配置. 在本教程中,你将创建自己的 Azure 虚拟机自定义 ...
- 向Sql Server数据库插入中文时显示乱码的解决办法 (转)
转自:http://blog.csdn.net/wizardlun/article/details/4577658 參考:http://shareideas.blog.51cto.com/362642 ...
- django —— 邮件
官方文档 1.11 配置settings.py # QQ邮箱为例, 其他邮箱对应的SMTP配置可查官方 EMAIL_HOST = "smtp.qq.com" EMAIL_PORT ...
- Django接收URL问号参数
问题概览: 一开始需求是想通过URL接收参数,但是一直固守通过正则表达式的方式接收参数,即形如(?P<parm>.+)的方式. 后面发现(/?)在http://regex101.com是可 ...
- SDN 第二次上机作业
SDN第二次上机作业 1.控制器floodlight所示可视化图形拓扑的截图,及主机拓扑连通性检测截图 拓扑 连通性 2.利用字符界面下发流表,使得'h1'和'h2' ping 不通 流表截图 连通性 ...
- HTML常用标签大全
- python difflib.md
difflib 此模块提供了用于比较序列的类和函数.它可以用于例如比较文件,并且可以产生各种格式的差异信息,包括HTML和上下文以及统一差异. difflib 模块包含用于计算和处理序列间差异的工具. ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...