实验的方差分析(R语言)
实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结——实验的方差分析(one-way analysis of variance)
概述#
- 实验结果S受多个因素Ai影响,但影响的程度各不相同,如何通过实验数据来确定因素的影响程度呢?其函数关系为
- 方差
标准差的平方
,表征xi与ˉx的偏离程度。
-
方差分析(ANalysis Of VAriance,简称
ANOVA
)
利用实验数据与均值的偏离程度来判断各因素对实验结果影响显著性
程度的方法。方差分析实质上是研究自变量
(因素)与因变量
(实验结果)的相互关系 -
指标(experimental index)
衡量或考核实验效果的参数 。
- 因素(experimental factor)
影响实验指标的条件,可控因素
- 水平
因素的不同状态或内容
单因素实验的方差分析#
单因素实验方差分析基本问题#
(1)目的:检验一个因素对实验结果的影响是否显著性
单因素实验方差分析基本步骤#
1)计算平均值#
组内平均值(同一水平的平均值)
总平均值
2)计算离差平方和#
- 总离差平方和SST(sum of squares for total)
表示了各实验值与总平均值的偏差的平方和 反映了实验结果之间存在的总差异
- 组间离差平方和 SSA (sum of square for factor A)
反映了各组内平均值之间的差异程度 由于因素A不同水平的不同作用造成的
- 组内离差平方和SSe(sum of square for error)
反映了在各水平内,各实验值之间的差异程度 由于随机误差的作用产生
- 三种离差平方和之间关系:
3)计算自由度(degree of freedom)#
- 总自由度(SST对应的自由度):dfT=n−1
- 组间自由度(SSA对应的自由度):dfA=r−1
- 组内自由度(SSe对就的自由度):dfe=n−r
三者关系:dfT=dfA+dfe
4)计算平均平方#
- 均方 = 离差平方和除以对应的自由度
式中,MAA——组间均方,MSe——组内均方/误差的均方
5)F检验#
-
服从自由度为(dfA,dfe)的
F分布
(F distribution) -
对于给定的显著性水平α,从
F分布表
查得临界值Fα(dfA,dfe) -
如果FA>Fα(dfA,dfe),则认为因素A对实验结果
有显著影响
,否则认为因素A对实验结果没有显著影响
。
6)方差分析表#
差异源 | SS | df | MS | F | 显著性 |
---|---|---|---|---|---|
组间(因素A) | SSA | r−1 | MSA=SSA/(r−1) | MSA/MSe | |
组内(误差) | SSe | n−r | MSe=SSe/(n−r) | ||
总和 | SST | n−1 |
- 若FA>F0.01(dfA,dfe),称因素A对实验结果有
非常显著
的影响,用**
号表示; - 若F0.05(dfA,dfe)<FA<F0.01(dfA,dfe),则因素A对实验结果
有显著
的影响,用*
号表示; - 若FA<F0.05(dfA,dfe),称因素A对实验结果的影响
不显著
。
双因素实验的方差分析#
- 讨论两个因素对实验结果影响的显著性,以称
二元方差分析
双因素无重复实验的方差分析#
双因素无重复实验
B1 | B2 | ⋯ | Bs | |
---|---|---|---|---|
A1 | x11 | x12 | ⋯ | x1s |
A2 | x21 | x22 | ⋯ | x2s |
⋯ | ⋯ | ⋯ | ⋯ | ⋯ |
Ar | xr1 | xr2 | ⋯ | xrs |
1)计算平均值#
总平均:
Ai水平时:
Bj水平时:
2)计算离差平方和#
- 总离差平方和:
- 因素A引起离差平方和:
- 因素B引起的离差平方和:
- 误差平方和:
3)计算自由度#
SSA的自由度 | SSB的自由度 | SSe的自由度 | SST的自由度 |
---|---|---|---|
dfA=r−1 | dfB=s−1 | dfe=(r−1)(s−f) | dfT=n−1=rs−1 |
4)计算均方#
A均方 | B均方 | e均方 |
---|---|---|
MSA=SSAdfA=SSAr−1 | MSB=SSBdfA=SSBs−1 | MSe=SSedfe=SSe(r−1)(s−1) |
5)F 检验#
- FA服从自由度为(dfA,dfe)的F分布:FA=MSAMSe
- FB服从自由度为(dfB,dfe)的F分布:FA=MSBMSe
- 对于给定的的显著性水平α,查F分布表:
- 如果FA>Fα(dfA,dfe),则认为因素A对实验结果
有显著影响
,否则认为因素A对实验结果没有显著影响
。 - 如果FB>Fα(dfB,dfe),则认为因素A对实验结果
有显著影响
,否则认为因素A对实验结果没有显著影响
。
6)无重复实验双因素方差分析表#
差异源 | SS | df | MS | F | 显著性 |
---|---|---|---|---|---|
因素A | SSA | r−1 | MSA=SSA/(r−1) | MSA/MSe | |
因素B | SSB | s−1 | MSB=SSB/(s−1) | MSB/MSe | |
误差 | SSe | (r−1)(s−1) | MSe=SSe/((r−1)(s−1)) | ||
总和 | SST | rs−1 |
双因素重复实验基本问题#
-
交互作用——因素间的联全作用称为交互作用
-
因素间没有联合作用——相互独立,独立效应
-
因素间有联合作用——交互作用,交互效应
双因素重复实验方差分析基本步骤#
1)计算平均值#
- 组合水平(Ai,Bi)上的c次实验值的算术平均值
- Ai水平时所有实验值的算术平均值:
- Bj水平时:
- 所有实验的总平均值:
2)计算离差平方和#
- 总离差平方和:
- SSA为A引起的离差平方和:
- SSB为B引起的离差平方和:
- SSA×B为A×B引起的离差平方和:
- SSe为误差平方和:
3)计算自由度#
SSA的自由度 | SSB的自由度 | SSA×B的自由度 | SSe的自由度 | SST的自由度 |
---|---|---|---|---|
dfA=r−1 | dfB=s−1 | dfA×B=(r−1)(n−1) | dfe=rs(c−1) | dfT=n−1=rsc−1 |
4)计算均方#
A均方 | B均方 | A×B均方 | e均方 |
---|---|---|---|
MSA=SSAdfA=SSAr−1 | MSB=SSBdfA=SSBs−1 | MSA×B=SSA×B(r−1)(s−1) | MSe=SSedfe=SSers(c−1) |
5)F 检验#
- FA服从自由度为(dfA,dfe)的F分布:FA=MSAMSe
- FB服从自由度为(dfB,dfe)的F分布:FA=MSBMSe
- FA×B服从自由度为(dfA×B,dfe)的F分布:FA=MSA×BMSe
- 对于给定的的显著性水平α,查F分布表:
- 如果FA>Fα(dfA,dfe),则认为因素A对实验结果
有显著影响
,否则认为因素A对实验结果没有显著影响
。 - 如果FB>Fα(dfB,dfe),则认为因素B对实验结果
有显著影响
,否则认为因素B对实验结果没有显著影响
。 - 如果FA×B>Fα(dfA×B,dfe),则认为交互作用A×B对实验结果
有显著影响
,否则认为因素A×B对实验结果没有显著影响
。
6)重复实验双因素方差分析表#
差异源 | SS | df | MS | F | 显著性 |
---|---|---|---|---|---|
因素A | SSA | r−1 | MSA=SSA/(r−1) | MSA/MSe | |
因素B | SSB | s−1 | MSB=SSB/(s−1) | MSB/MSe | |
交互作用 | SSA×B | (r−1)(s−1) | MSA×B=SSA×B(r−1)(s−1) | MSA×B/MSe | |
误差 | SSe | rs(c−1) | MSc=SSe/(rs(c−1)) | ||
总和 | SST | 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
可以分析出如下表:
(c1,c2) | B1 | B2 | B3 | B4 | |
---|---|---|---|---|---|
浓度/% | 10℃ | 24℃ | 38℃ | 52℃ | |
A1 | 2 | 14,11 | 11,11 | 13,9 | 10,12 |
A2 | 4 | 9,7 | 10,8 | 7,11 | 6,10 |
A3 | 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对产品得率有显著性影响。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· JDK 24 发布,新特性解读!
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· Ollama系列05:Ollama API 使用指南
· 为什么AI教师难以实现