实验的方差分析(R语言)

Posted endlesscoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验的方差分析(R语言)相关的知识,希望对你有一定的参考价值。

实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结——实验的方差分析(one-way analysis of variance)
文章出自:https://www.cnblogs.com/endlesscoding/p/9863790.html,未经博主同意,请勿转载。

概述

  • 实验结果(S)受多个因素(A_i)影响,但影响的程度各不相同,如何通过实验数据来确定因素的影响程度呢?其函数关系为
    [ S=f(A_1,A_2,cdots,A_n) ag{1} ]

  • 方差

标准差的平方,表征(x_i)(ar{x})偏离程度

  • 方差分析(ANalysis Of VAriance,简称ANOVA
    利用实验数据与均值的偏离程度来判断各因素对实验结果影响显著性程度的方法。 方差分析实质上是研究自变量(因素)与因变量(实验结果)的相互关系

  • 指标(experimental index)

衡量或考核实验效果的参数 。

  • 因素(experimental factor)

影响实验指标的条件,可控因素

  • 水平

因素的不同状态或内容

单因素实验的方差分析

单因素实验方差分析基本问题

(1)目的:检验一个因素对实验结果的影响是否显著性

单因素实验方差分析基本步骤

1)计算平均值

组内平均值(同一水平的平均值)

[ overline{x_i}=frac{1}{n_i}sum_{j=1}^{n_i}{x_{ij}} ag{2} ]
总平均值
[ overline {x_i}=frac{1}{n}sum_{i=1}^{r}sum_{j=1}^{n_i}{x_{ij}} ag{3} ]

2)计算离差平方和

  • 总离差平方和(SS_T)(sum of squares for total)
    [ SS_T = sum_{i=1}^{r}{sum_{j=1}^{n_i}({x_{ij}-overline{x}})^2} ag{4} ]
    表示了各实验值与总平均值的偏差的平方和
    反映了实验结果之间存在的总差异

  • 组间离差平方和 (SS_A) (sum of square for factor A)

[ SS_A = sum_{i=1}^{r}{sum_{j=1}^{n_i}({overline{x_{i}}-overline{x}})^2} =sum_{i=1}^{r}n_i({overline{x_{i}}-overline{x}})^2 ag{5} ]
反映了各组内平均值之间的差异程度
由于因素A不同水平的不同作用造成的

  • 组内离差平方和$ SS_e $(sum of square for error)
    [ SS_T = sum_{i=1}^{r}{sum_{j=1}^{n_i}({x_{ij}-overline{x}_i})^2} ag{6} ]

    反映了在各水平内,各实验值之间的差异程度
    由于随机误差的作用产生
  • 三种离差平方和之间关系:
    [ SS_T = SS_A + SS_e ag{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)计算平均平方

  • 均方 = 离差平方和除以对应的自由度
    [ MS_A = SS_A/df_A quad quad MS_e = SS_e / df_e ]

式中,(MA_A)——组间均方,(MS_e)——组内均方/误差的均方

5)F检验

[ F_A = frac{组间均方}{组内均方}=frac{MS_A}{MS_e} ag{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)计算平均值

总平均:
[ overline{x} = frac{1}{rs}sum_{i=1}^{r}{sum_{j=1}^{s}x_{ij}} ag{9} ]

(A_i)水平时:
[ overline{x}_{icdot} = frac{1}{s}sum_{j=1}^{s}x_{ij} ag{10} ]

(B_j)水平时:
[ overline{x}_{{cdot}j}= frac{1}{r}sum_{i=1}^{s}x_{ij} ag{11} ]

2)计算离差平方和

  • 总离差平方和:

[ overline{x} =sum_{i=1}^{r}{sum_{j=1}^{s}{(x_{ij}-overline{x})^2}} ag{12} ]

  • 因素A引起离差平方和:

[ overline{x} =sum_{i=1}^{r}{sum_{j=1}^{s}{(x_{i{cdot}}-overline{x})^2}}=ssum_{j=1}^{r}{(x_{i{cdot}}-overline{x})^2} ag{13} ]

  • 因素B引起的离差平方和:

[ overline{x} =sum_{i=1}^{r}{sum_{j=1}^{s}{(x_{{cdot}j}-overline{x})^2}}=rsum_{j=1}^{s}{(x_{{cdot}j}-overline{x})^2} ag{14} ]

  • 误差平方和:

[ overline{x} =sum_{i=1}^{r}{sum_{j=1}^{s}{(x_{ij}-x_{i{cdot}}-x_{{cdot}j}-overline{x})^2}} ag{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_{alpha}(df_A,df_e) quad quad F_{alpha}(df_B,df_e) ]

  • 如果(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)次实验值的算术平均值

[ overline{x}_{ij{cdot}}=frac{1}{c}sum_{k=1}^{c}{x_{ijk}},i=1,2,cdots,r;j=1,2,cdots,s ag{16} ]

  • (A_i)水平时所有实验值的算术平均值:
    [ overline{x}_{icdotcdot} = frac{1}{sc}sum_{j=1}^{s}x_{ijk} = frac{1}{s}sum_{j=1}^{s}x_{ijk},i=1,2,cdots,r ag{17} ]

  • (B_j)水平时:

[ overline{x}_{icdotcdot} = frac{1}{rc}sum_{j=1}^{s}x_{ijk} = frac{1}{r}sum_{j=1}^{r}x_{ijcdot},j=1,2,cdots,s ag{18} ]

  • 所有实验的总平均值:

[ overline{x} = frac{1}{rsc} sum_{i=1}^{r}sum_{j=1}^{s}sum_{k=1}^{c}x_{ijk} ag{19} ]

2)计算离差平方和

  • 总离差平方和:
    [ SS_T=frac{1}{rsc}sum_{i=1}^{r}sum_{j=1}^{s}sum_{k=1}^{c}{(x_{ijk}-overline{x})^2} = SS_A+SS_B+SS_{A imes{B}}+SS_e ag{20} ]

  • (SS_A)为A引起的离差平方和:
    [ SS_A = scsum_{i=1}^{r}{(overline{x}_{icdotcdot}-overline{x})^2} ]

  • (SS_B)为B引起的离差平方和:
    [ SS_B = rcsum_{j=1}^{s}{(overline{x}_{cdot{j}cdot}-overline{x})^2} ]

  • (SS_{A imes{B}})(A imes{B})引起的离差平方和:
    [ SS_{A imes{B}} = csum_{i=1}^{r}sum_{j=1}{s}{(overline{x}_{ijcdot}-overline{x}_{icdotcdot}-overline{x}_{cdot{j}cdot}+overline{x})^2} ]

  • (SS_e)为误差平方和:

[ overline{x} = sum_{i=1}^{r}sum_{j=1}^{s}sum_{k=1}^{c}{(x_{ijk}-overline{x}_{ijcdot})^2} ]

3)计算自由度

(SS_A)的自由度 (SS_B)的自由度 (SS_{A imes{B}})的自由度 (SS_e)的自由度 (SS_T)的自由度
(df_A=r-1) (df_B=s-1) (df_{A imes{B}}=(r-1)(n-1)) (df_e=rs(c-1)) (df_T=n-1=rsc-1)

4)计算均方

A均方 B均方 (A imes{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 imes{B}}=dfrac{SS_{A imes{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 imes{B}})服从自由度为((df_{A imes{B}},df_e))的F分布:(F_A=dfrac{MS_{A imes{B}}}{MS_e})
  • 对于给定的的显著性水平(alpha),查F分布表:
    [ F_{alpha}(df_A,df_e) quad quad F_{alpha}(df_B,df_e) quad quad F_{alpha}(df_{A imes{B}},df_e) ]

  • 如果(F_A > F_{alpha}(df_A,df_e)),则认为因素A对实验结果有显著影响,否则认为因素A对实验结果没有显著影响
  • 如果(F_B > F_{alpha}(df_B,df_e)),则认为因素B对实验结果有显著影响,否则认为因素B对实验结果没有显著影响
  • 如果(F_{A imes{B}}> F_{alpha}(df_{A imes{B}},df_e)),则认为交互作用[A imes{B}]对实验结果有显著影响,否则认为因素(A imes{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 imes{B}}) ((r-1)(s-1)) (MS_{A imes{B}}=dfrac{SS_{A imes{B}}}{(r-1)(s-1)}) (MS_{A imes{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语言与统计-2:方差分析

R语言—方差分析

基于R语言开展方差分析—双因素方差分析

R语言单因素方差分析简单小例子

R语言中重复测量下的方差分析