首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >全网最全 | R语言中的方差分析汇总

全网最全 | R语言中的方差分析汇总

作者头像
邓飞
发布于 2021-09-27 08:48:31
发布于 2021-09-27 08:48:31
3.1K00
代码可运行
举报
运行总次数:0
代码可运行

一文展示R语言中的方差分析常用模型 #2021.9.11

方差分析是一个全新的思路,它采用的是变异分解的思路,将组内组件分开,查看显著性。

变异分解,和数量遗传学的创立也密不可分,比如

表型 = 基因+ 环境

更进一步:表型 = 加性效应 + 非加性效应 + 环境

更更进一步:表型 = 加性效应 + 显性效应 + 上位性效应 + 环境

育种值是加性效应的部分

杂种优势是显性和上位性效应的部分

基因与环境互作是:环境*基因的效应

另外还有重复力效应(个体永久环境效应)、母体效应、窝别效应等等,都是使用表型数据剖分的形式进行计算和评估。

很多人分析数据,想看一下显著性与否,显著的话就说明有差异,具体差异是多少,需要进行多重比较。所以,先要有方差分析,才有显著性,只有显著了,才可以进行多重比较。先后顺序不能错。

方差分析,还有一定的前提假定。需要进行检验。

方差分析后,多重比较也有很多方法。

好在,现在的R语言足够友好,各种功能都已经打包好了,直接拿来用就行了。

下面看我的总结:

1. 方差分析的假定

上面这个思维导图,也可以看出,方差分析有三大假定:正态,独立和齐次,如果不满足,可以使用广义线性模型或者混合线性模型,或者广义线性混合模型去分析。

「本次我们的主题有:」

2. 数据来源

这里,我们使用的数据来源于R包agridat,它是讲农业相关的论文,书籍中相关的数据收集在了一起,更加符合我们的背景。

包的下载地址:https://cran.r-project.org/web/packages/agridat/index.html

「包的介绍」

「agridat: Agricultural Datasets」Datasets from books, papers, and websites related to agriculture. Example graphics and analyses are included. Data come from small-plot trials, multi-environment trials, uniformity trials, yield monitors, and more. ❞

「包的安装方式:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("agridat")

3. 单因素方差分析

❝比如一个处理有A,B,C三个水平,观测值y,想看一下这个处理是否达到显著性水平,这就可以用到方差分析了。 ❞

「数据描述:」

❝Corn yield and nitrogen fertilizer treatment with field characteristics for the Las Rosas farm, Rio Cuarto, Cordoba, Argentina. ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(lasrosas.corn)
dat <- lasrosas.corn
str(dat)

数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 3443 obs. of  9 variables:
 $ year : int  1999 1999 1999 1999 1999 1999 1999 1999 1999 1999 ...
 $ lat  : num  -33.1 -33.1 -33.1 -33.1 -33.1 ...
 $ long : num  -63.8 -63.8 -63.8 -63.8 -63.8 ...
 $ yield: num  72.1 73.8 77.2 76.3 75.5 ...
 $ nitro: num  132 132 132 132 132 ...
 $ topo : Factor w/ 4 levels "E","HT","LO",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ bv   : num  163 170 168 177 171 ...
 $ rep  : Factor w/ 3 levels "R1","R2","R3": 1 1 1 1 1 1 1 1 1 1 ...
 $ nf   : Factor w/ 6 levels "N0","N1","N2",..: 6 6 6 6 6 6 6 6 6 6 ...

这里数据有很多列,但是我们要演示单因素方差分析,这里的因素为nf,自变量(Y变量)是yield,想要看一下nf的不同水平是否达到显著性差异。

「建模:」

Y变量:yield

因子:nf

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 m1 = aov(yield ~ nf, data=dat)
  • m1为模型保存的名称
  • aov为R中的方差分析代码
  • yield为数据中的Y变量,这里是yield
  • ~,波浪号前面为Y变量,后面为X变量
  • nf为分析的因子变量
  • dat为数据

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> m1 = aov(yield ~ nf, data=dat)
> summary(m1)
              Df  Sum Sq Mean Sq F value   Pr(>F)    
nf             5   23987    4797    12.4 6.08e-12 ***
Residuals   3437 1330110     387                     
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,nf之间达到极显著水平,可以进行多重比较。

「方差分析的显著性和多重比较有何关系???」

❝方差分析,一般会得到显著性(即P值小于0.05,说明显著,小于0.01,说明极显著,大于0.05,说明不显著),显著的意思是因素之间至少有一对水平达到显著性差异,具体是那一对呢?有几对呢?这就需要用到多重比较。所以,多重比较是在方差分析达到显著性之后进行的,只有显著了(P值小于0.05)才有能进行多重比较。多重比较的方法有很多,比如LSD,Tukey,Bonferroni,Holm等等,我们后面系统的介绍。 ❞

4. 单因素随机区组

这里区组的设置,可以控制一些环境误差。

「数据描述:」

❝Switchback trial in dairy with three treatments ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(lucas.switchback)
dat <- lucas.switchback
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 36 obs. of  5 variables:
 $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
 $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
 $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
 $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
 $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...

「建模:」

Y变量:yield

因子:trt

区组:block

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m2 = aov(yield ~ block +trt, data=dat)
summary(m2)

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> summary(m2)
            Df Sum Sq Mean Sq F value Pr(>F)  
block        2   30.9   15.46   0.306 0.7385  
trt          2  273.8  136.88   2.709 0.0823 .
Residuals   31 1566.1   50.52                 
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,trt之间达到没有极显著水平。

5. 二因素方差分析(无交互)

这里区组的设置,可以控制一些环境误差。

无交互的意思是,二因素之间不考虑互作。

「数据描述:」

❝Switchback trial in dairy with three treatments ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(lucas.switchback)
dat <- lucas.switchback
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 36 obs. of  5 variables:
 $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
 $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
 $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
 $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
 $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...

「建模:」

  • Y变量:yield
  • 因子1:trt
  • 因子2:period
  • 区组:block

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m3 = aov(yield ~ block +trt +period, data=dat)
summary(m3)

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> summary(m3)
            Df Sum Sq Mean Sq F value Pr(>F)  
block        2   30.9   15.46   0.308 0.7374  
trt          2  273.8  136.88   2.725 0.0823 .
period       2  109.5   54.74   1.090 0.3497  
Residuals   29 1456.6   50.23                 
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,trt之间达到没有极显著水平,period之间没有达到显著性水平。

6. 二因素方差分析(有交互)

这里区组的设置,可以控制一些环境误差。

交互的意思是,二因素之间考虑互作。

「数据描述:」

❝Switchback trial in dairy with three treatments ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(lucas.switchback)
dat <- lucas.switchback
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 36 obs. of  5 variables:
 $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
 $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
 $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
 $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
 $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...

「建模:」

  • Y变量:yield
  • 因子1:trt
  • 因子2:period
  • 区组:block

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m4 = aov(yield ~ block +trt*period, data=dat)
summary(m4)

注意,这里的trt*period是R中公式的简写,表示trt + period + trt:period,其中trt:period表示互作效应。

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> summary(m4)
            Df Sum Sq Mean Sq F value Pr(>F)  
block        2   30.9   15.46   0.339 0.7160  
trt          2  273.8  136.88   2.997 0.0681 .
period       2  109.5   54.74   1.199 0.3183  
trt:period   4  315.0   78.75   1.725 0.1761  
Residuals   25 1141.6   45.66                 
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,trt之间达到没有极显著水平,period之间没有达到显著性水平,trt和period交互没有达到显著水平。

7. 多因素方差分析

这里区组的设置,可以控制一些环境误差。

多于两个因素的方差分析

「数据描述:」

❝Switchback trial in dairy with three treatments ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(lucas.switchback)
dat <- lucas.switchback
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 36 obs. of  5 variables:
 $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
 $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
 $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
 $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
 $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...

「建模:」

  • Y变量:yield
  • 因子1:trt
  • 因子2:period
  • 因子3:cow
  • 区组:block

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m5 = aov(yield ~ block + trt*period + cow, data=dat)
summary(m5)

注意,这里的trt*period是R中公式的简写,表示trt + period + trt:period,其中trt:period表示互作效应。

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> summary(m5)
            Df Sum Sq Mean Sq F value   Pr(>F)    
block        2   30.9   15.46  11.155 0.000926 ***
trt          2  273.8  136.88  98.739 9.96e-10 ***
period       2  109.5   54.74  39.486 6.49e-07 ***
cow          9 1428.8  158.76 114.523 8.29e-13 ***
trt:period   4    5.6    1.41   1.015 0.429042    
Residuals   16   22.2    1.39                     
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,trt之间达到极显著水平,period之间达到显著性水平,trt和period交互没有达到显著水平,cow达到极显著水平。

8. 裂区试验方差分析

裂区试验,包括主区(wplot)和裂区(splot),其中裂区是镶嵌在主区中的,主区和裂区的残差不一样,在模型中需要特殊定义。

「数据描述:」

❝Strip-split plot of barley with fertilizer, calcium, and soil factors. ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(cox.stripsplit)
dat <- cox.stripsplit
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 96 obs. of  5 variables:
 $ rep    : Factor w/ 4 levels "R1","R2","R3",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ soil   : Factor w/ 3 levels "S1","S2","S3": 1 1 1 1 1 1 1 1 2 2 ...
 $ fert   : Factor w/ 4 levels "F0","F1","F2",..: 1 1 2 2 3 3 4 4 1 1 ...
 $ calcium: Factor w/ 2 levels "C0","C1": 1 2 1 2 1 2 1 2 1 2 ...
 $ yield  : num  4.91 4.63 4.76 5.04 5.38 6.21 5.6 5.08 4.94 3.98 ...

「建模:」

  • Y变量:yield
  • 主区:fert
  • 裂区:soil
  • 区组:brep

「R中的建模代码:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m6 = aov(yield ~ rep + soil*fert + Error(rep/fert),data=dat)
summary(m6)

注意,这里的Error(rep/fert)是R中公式的定义残差,主要用于不同因素使用不同残差的情况,这里fert是主区。

「结果:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> summary(m6)

Error: rep
    Df Sum Sq Mean Sq
rep  3   6.28   2.093

Error: rep:fert
          Df Sum Sq Mean Sq F value Pr(>F)  
fert       3  7.221  2.4071   3.562 0.0604 .
Residuals  9  6.082  0.6758                 
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

Error: Within
          Df Sum Sq Mean Sq F value  Pr(>F)   
soil       2  1.927  0.9633   7.155 0.00146 **
soil:fert  6  0.688  0.1147   0.852 0.53433   
Residuals 72  9.693  0.1346                   
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看出,soil达到极显著,fert不显著,soil和fert的互作不显著。

9. 正态性检验

方差分析中,结果是否可信,在于数据是否满足假定条件。方差分析的假定包括数据正态性数据的方差齐性数据的独立性,其中可以检验的假定有:

  • 数据的正态性
  • 数据的齐性

这里,我们介绍如何对数据的正态性进行检验。

可以使用球性检验(Shapiro-Wilk)检验数据的正态性,也可以用qqplot查看残差的图,判断数据的正态性,也可以对数据做直方图,查看数据的正态性。

「数据描述:」

❝A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots. ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(npk)
dat <- npk
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
 $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
 $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...

一般分析时,我们仅对Y变量进行正态性检验,如果是单因素或者多因素,也可以根据因素分组进行正态性检验,数据量大时,对于稍微偏态的数据,即使不太符合正态分布,也不影响结论。

这里,我们对yield进行正态性检验

「作直方图」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hist(dat$yield)

可以看到,yield大体符合正态分布。

「做qq图」

使用car软件包中的qqPlot函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(car)
qqPlot(dat$yield)

可以看到,数据基本落在置信区间里面,数据符合正态分布。

「使用Shapiro-Wilk」检验数据正态分布

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> shapiro.test(dat$yield)

 Shapiro-Wilk normality test

data:  dat$yield
W = 0.97884, p-value = 0.8735

可以看到,P值为0.8735,数据符合正态分布,与上图显示的结果一致。

10. 齐性检验

方差分析中,我们对结果是否自信,在于数据是否满足假定条件,方差分析的假定条件包括数据正态性数据的方差齐性数据的独立性,其中可以检验的假定有:

  • 数据的正态性
  • 数据的齐性

这里,我们介绍如何对数据的齐性进行检验。齐性检验,是检验不同样本的总体方差是否相同,是根据特定的模型,需要考虑不同的因子放到模型中,不能单独对某一列变量进行齐性检验。

「齐性检验:」

  • Bartlet检验
  • Levene检验

「数据描述:」

❝A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots. ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(npk)
dat <- npk
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
 $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
 $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...

比如上面数据中,相对N进行单因素方差分析,查看不同N的水平是否满足方差齐性,可以这样操作:

「Bartlett检验」

Bartlett检验可以比较多个总体的方差

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bartlett.test(yield ~ N,data=dat)

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> bartlett.test(yield ~ N,data=dat)

 Bartlett test of homogeneity of variances

data:  yield by N
Bartlett's K-squared = 0.057652, df = 1, p-value = 0.8102

结果可以看出,不同的N之间,方差满足齐性要求。

「Levene检验」

Bartlett检验对数据的正态性非常敏感,而Levene检验是一种非参数检验方法,使用范围更广。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(car)
leveneTest(yield ~ N, data=dat)

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> leveneTest(yield ~ N, data=dat)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  0.0054 0.9421
      22    

结果可以看出,P值为0.9421,大于0.05,说明数据符合方差齐性。

11. 多重比较

这里,我们介绍一下方差分析中的多重比较方法。

「agricolae包」

❝This package contains functionality for the Statistical Analysis of experimental designs applied specially for field experiments in agriculture and plant breeding. ❞

「多重比较方法:」

  • LSD
  • scheffe
  • HSD(Tukey)
  • SNK
  • Duncan

「数据描述:」

❝A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots. ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(npk)
dat <- npk
str(dat)

「数据结构:」

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> str(dat)
'data.frame': 24 obs. of  5 variables:
 $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
 $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
 $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
 $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
 $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...

「方差分析」这里对N进行单因素方差分析,block为区组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> m9 = aov(yield ~ block + N, data=dat)
> summary(m9)
            Df Sum Sq Mean Sq F value Pr(>F)   
block        5  343.3   68.66   3.395 0.0262 * 
N            1  189.3  189.28   9.360 0.0071 **
Residuals   17  343.8   20.22                  
---
Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1

结果可以看到,N因素达到极显著水平

11.1 LSD多重比较

❝Multiple comparisons of treatments by means of LSD and a grouping of treatments. The level by alpha default is 0.05. Returns p-values adjusted using one of several methods ❞

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# LSD
re1 = LSD.test(m9,"N")
re1$groups

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> re1 = LSD.test(m9,"N")
> re1$groups
     yield groups
1 57.68333      a
0 52.06667      b
11.2 scheffe多重比较

❝Scheffe 1959, method is very general in that all possible contrasts can be tested for significance and confidence intervals can be constructed for the corresponding linear. The test is conservative. ❞

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(scheffe.test(m9,"N"))

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> (scheffe.test(m9,"N"))
$statistics
   MSerror Df        F   Mean       CV  Scheffe CriticalDifference
  20.22284 17 4.451322 54.875 8.194955 2.109816           3.873379

$parameters
     test name.t ntr alpha
  Scheffe      N   2  0.05

$means
     yield      std  r  Min  Max   Q25   Q50    Q75
0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350

$comparison
NULL

$groups
     yield groups
1 57.68333      a
0 52.06667      b
11.3 Tukey多重比较

❝It makes multiple comparisons of treatments by means of Tukey. The level by alpha default is 0.05. ❞

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Turkey
(HSD.test(m9,"N"))

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> (HSD.test(m9,"N"))
$statistics
   MSerror Df   Mean       CV      MSD
  20.22284 17 54.875 8.194955 3.873379

$parameters
   test name.t ntr StudentizedRange alpha
  Tukey      N   2          2.98373  0.05

$means
     yield      std  r  Min  Max   Q25   Q50    Q75
0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350

$comparison
NULL

$groups
     yield groups
1 57.68333      a
0 52.06667      b

11.4 SNK多重比较

❝SNK is derived from Tukey, but it is less conservative (finds more differences). Tukey controls the error for all comparisons, where SNK only controls for comparisons under consideration. The level by alpha default is 0.05. ❞

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# SNK
(SNK.test(m9,"N"))

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> (HSD.test(m9,"N"))
$statistics
   MSerror Df   Mean       CV      MSD
  20.22284 17 54.875 8.194955 3.873379

$parameters
   test name.t ntr StudentizedRange alpha
  Tukey      N   2          2.98373  0.05

$means
     yield      std  r  Min  Max   Q25   Q50    Q75
0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350

$comparison
NULL

$groups
     yield groups
1 57.68333      a
0 52.06667      b

11.5 Duncan多重比较

❝This test is adapted from the Newman-Keuls method. Duncan's test does not control family wise error rate at the specified alpha level. It has more power than the other post tests, but only because it doesn't control the error rate properly. The Experimentwise Error Rate at: 1-(1-alpha)^(a-1); where "a" is the number of means and is the Per-Comparison Error Rate. Duncan's procedure is only very slightly more conservative than LSD. The level by alpha default is 0.05. ❞

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Duncan
(duncan.test(m9,"N"))

结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> (duncan.test(m9,"N"))
$statistics
   MSerror Df   Mean       CV
  20.22284 17 54.875 8.194955

$parameters
    test name.t ntr alpha
  Duncan      N   2  0.05

$duncan
    Table CriticalRange
2 2.98373      3.873379

$means
     yield      std  r  Min  Max   Q25   Q50    Q75
0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350

$comparison
NULL

$groups
     yield groups
1 57.68333      a
0 52.06667      b

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 育种数据分析之放飞自我 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
R语言方差分析总结
这篇文章涵盖了孙振球,徐勇勇《医学统计学》第4版中关于方差分析的章节,包括:多样本均数比较的方差分析/多因素实验资料的方差分析/重复测量设计资料的方差分析/协方差分析。
医学和生信笔记
2022/11/15
2.9K0
R语言方差分析总结
方差分析与R实现
方差分析泛应用于商业、经济、医学、农业等诸多领域的数量分析研究中。例如商业广告宣传方面,广告效果可能会受广告式、地区规模、播放时段、播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以及如何产生影响等。而在经济管理中,方差分析常用于分析变量之间的关系,如人民币汇率对股票收益率的影响、存贷款利率对债券市场的影响,等等。 协方差是在方差分析的基础上,综合回归分析的方法,研究如何调节协变量对因变量的影响效应,从而更加有效地分析实验处理效应的一种统计技术。 单因素方差分析及R实现 (1)正态性检验
机器学习AI算法工程
2018/03/12
1.9K0
方差分析与R实现
R语言数据分析与挖掘(第五章):方差分析(1)——单因素方差分析
方差分析(analysis of variation,简写为ANOVA)又称变异数分析或F检验,用于两个及两个以上样本均值差别的显著性检验,从函数的形式看,方差分析和回归都是广义线性模型的特例,回归分析lm()也能作方差分析。其目的是推断两组或多组数据的总体均值是否相同,检验两个或多个样本均值的差异是否有统计学意义。方差分析的基本思路为:将试验数据的总变异分解为来源于不同因素的相应变异,并作出数量估计,从而明确各个变异因素在总变异中所占的重要程度;也就是将试验数据的总变异方差分解成各变因方差,并以其中的误差方差作为和其他变因方差比较的标准,以推断其它变因所引起的变异量是否真实的一种统计分析方法。把对试验结果发生影响和起作用的自变量称为因素(factor),即我们所要检验的对象。如果方差分析研究的是一个因素对于试验结果的影响和作用,就称为单因素方差分析。因素的不同选择方案称之为因素的水平(level of factor)或处理(treatment)。因素的水平实际上就是因素的取值或者是因素的分组。样本数据之间差异如果是由于抽样的随机性造成的,称之为随机误差;如果是由于因素水平本身不同引起的差异,称之为系统误差。
DoubleHelix
2019/12/13
5.7K0
R语言数据分析与挖掘(第五章):方差分析(1)——单因素方差分析
R语言_方差分析
在回归分析中,通过量化的预测变量来预测量化的响应变量,建立了相应的回归模型。 同时,预测变量也不一定是量化的,还可以是名义型或者有序型变量。这种情况下,关注的重点通常在组间的差异性分析,称为方差分析(ANOVA)。
用户1147754
2019/05/26
1.6K0
R语言方差分析的注意事项
R语言做方差分析很简单,就是一个函数aov(),包括但不限于单因素方差分析、多因素方差分析、协方差分析、重复测量方差分析等,都是这个函数。
医学和生信笔记
2022/11/15
1.5K0
R语言方差分析的注意事项
方差分析(ANOVA)
诊断图的横轴是拟合值,纵轴是残差、标准差或标准差的平方根,一般当各点的标准差集种在0处且分布较为均匀时,则说明拟合结果较好。上图显示2,3,5这三个样本的拟合值可能存在较大误差和,需仔细考虑。
生信与临床
2020/08/06
2K0
方差分析(ANOVA)
「R」R 中的方差分析ANOVA
方差分析主要通过F检验来进行效果评测,若治疗方案的F检验显著,则说明检验样本组间均值不同。
王诗翔呀
2020/07/02
5.3K0
「R」R 中的方差分析ANOVA
【数据分析 R语言实战】学习笔记 第八章 双因素方差分析与R实现
gl(n, k, length=n*k,labels=1:n,ordered=FALSE)
Ai学习的老章
2019/04/10
7.3K1
【数据分析 R语言实战】学习笔记 第八章 双因素方差分析与R实现
混合线性模型如何进行多重比较
这里,得到的LSD = 6.708889, 多重比较中,用水平的平均值的差值,与LSD比较,如果大于LSD,则认为两水平达到显著性差异。
邓飞
2019/11/04
3.9K0
【数据分析 R语言实战】学习笔记 第八章 单因素方差分析与R实现
方差分析泛应用于商业、经济、医学、农业等诸多领域的数量分析研究中。例如商业广告宣传方面,广告效果可能会受广告式、地区规模、播放时段、播放频率等多个因素的影响,通过方差分析研究众多因素中,哪些是主要的以及如何产生影响等。而在经济管理中,方差分析常用于分析变量之间的关系,如人民币汇率对股票收益率的影响、存贷款利率对债券市场的影响,等等。
Ai学习的老章
2019/04/10
2.6K0
【数据分析 R语言实战】学习笔记 第八章  单因素方差分析与R实现
R in action读书笔记(12)第九章 方差分析
aov(formula, data = NULL, projections =FALSE, qr = TRUE,
Ai学习的老章
2019/04/10
9330
R in action读书笔记(12)第九章 方差分析
R语言数据分析与挖掘(第五章):方差分析(2)——多因素方差分析
在实际应用中,更多出现的是包含多因素的试验和处理。多因素试验与双因素试验背后的基本思想是一致的。与单因素方差分析不同,在双因素方差分析中因素间可能会有交互作用。假设有两个因素A和B,因素A和B没有交互作用指的是A的水平值不取决于B的水平值,反之亦然。对于有交互作用的因素,我们不可孤立地看待这些因素。对于双因素的情形,一般从图像上看,没有交互作用的因素水平图表现为两条不相交的线段,而有交互作用的因素水平图为两相交的线段。例如,下图显示的是在研究年龄和性别对身高是否有显著作用过程中,因素年龄与性别之间的交互作用。从图像上看,两曲线没有明显相交,据此可以推测二者间不存在相互作用。当然,要判定是否存在或者不存在交互作用,还需要根据相应的统计量来分析。
DoubleHelix
2019/12/16
10.4K0
基于matlab的方差分析_方差分析结果怎么看
更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=100
全栈程序员站长
2022/11/04
1.5K0
基于matlab的方差分析_方差分析结果怎么看
「R」用方差分析差异表达基因
对数据的正态性,R中有许多的方法和函数(可以参考博文R语言与正态性检验),这里利用自带常用Shapiro-Wilk正态检验方法(W检验)进行正态性检测。
王诗翔呀
2020/07/06
2.5K0
「R」用方差分析差异表达基因
R语言单因素方差分析简单小例子
探究三种不同的肥料是否对某种作物的产量有影响。做实验的时候就是将一块地随机划分成若干小块,分别施用3种不同的肥料,最终统计产量。最后用单因素方差分析检验不同组之间的均值是否相等。
用户7010445
2020/08/10
1.9K0
R语言单因素方差分析简单小例子
R语言单、双因素方差分析及结果可视化的简单小例子
这里用到的是R语言的内置数据集sample_n_by()函数很有用,能够分组随机抽样%>% 是管道符 是将前面的结果传输给后面的函数
用户7010445
2021/08/31
6.5K1
R语言单、双因素方差分析及结果可视化的简单小例子
经典方差分析:手把手教你读懂、会用1
当解释变量包含名义型和有序型的因子时,我们关注的重点往往在于组间的差异分析。这是非常必要的,尤其是考虑到科学研究中样品分组是普遍存在的,而样品组或者聚类分析获得的聚类簇都不能转化为连续的数值,均需要作为引子进行分析。这种组间的比较分析我们可以称之为方差分析(analysisof variance,ANOVA)。方差分析通过F检验来进行效果评测,与t检验一样,是一种参数检验方法,需要用到总体分布的参数特征(均值、方差),因此是针对符合正态分布总体的样本数据进行分析。
SYSU星空
2022/05/05
4K0
经典方差分析:手把手教你读懂、会用1
完结篇 | GWAS计算BLUE值4--联合方差分析演示
本篇,用书籍中的数据和结论,用R语言的一般线性模型和混合线性模型,做一下一年多点的联合方差分析的演示。
邓飞
2021/12/20
8230
完结篇 | GWAS计算BLUE值4--联合方差分析演示
R语言系列第四期:②R语言多组样本方差分析与KW检验
R语言系列四的第二个部分是对多组连续性数据的处理,分组往往是三组或者三组以上,当然两组数据也可以利用方差分析,但是两组数据还是建议使用t检验。同样多组数据的比较也分为参数法和非参数法,包括这个部分介绍的重点参数法方差分析,以及非参数方法kruskal—Wallis检验。
百味科研芝士
2019/05/23
7.6K0
方差分析:单因子和双因子分析
方差分析(analysis of variance,ANOVA)是分析类别变量对数值因变量影响的一种统计方,其中类别变量称为因子,类别变量的值称为处理或水平。接受处理的对象或实体称为实验单元,方差分析的原理:通过对数据误差的分析来判断类别自变量对数值因变量的影响效果是否显著。
herain
2022/04/27
2.4K0
方差分析:单因子和双因子分析
相关推荐
R语言方差分析总结
更多 >
LV.1
北京康普森农业科技有限公司育种数据分析师
目录
  • 一文展示R语言中的方差分析常用模型 #2021.9.11
    • 1. 方差分析的假定
    • 2. 数据来源
    • 3. 单因素方差分析
    • 4. 单因素随机区组
    • 5. 二因素方差分析(无交互)
    • 6. 二因素方差分析(有交互)
    • 7. 多因素方差分析
    • 8. 裂区试验方差分析
    • 9. 正态性检验
    • 10. 齐性检验
    • 11. 多重比较
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档