vlambda博客
学习文章列表

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

单因素方差分析是用来检验3组或者3组以上的数据间是否有差异的的一种统计分析方法。

比如下面用到的示例数据: 

探究三种不同的肥料是否对某种作物的产量有影响。做实验的时候就是将一块地随机划分成若干小块,分别施用3种不同的肥料,最终统计产量。最后用单因素方差分析检验不同组之间的均值是否相等。

单因素方差分析的零假设是不同处理间的均值没有差异,如果计算得到的P值小于0.05,则拒绝原假设,即不同处理间是有差异的

以下内容参考https://www.scribbr.com/statistics/anova-in-r/

使用到的数据也可以在上面的链接处获取。

第一步是读入数据

df<-read.csv("one_way_anova/crop.data.csv",header=T)
head(df)
df$fertilizer<-as.factor(df$fertilizer)
summary(df)

数据是3种肥料,每种肥料30个数据

单因素方差分析
> one.way<-aov(yield~fertilizer,data = df)
> summary(one.way)
            Df Sum Sq Mean Sq F value Pr(>F)    
fertilizer   2   6.07  3.0340   7.863  7e-04 ***
Residuals   93  35.89  0.3859                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

p值小于0.05,不同肥料对应的产量是有差异的。具体谁和谁之间是有差异的还不知道,还需要借助多重检验。

tukey.test<-TukeyHSD(one.way)
plot(tukey.test)
image.png

上图的线只要跨0那条虚线说明没有差异。根据上图可以看出肥料2和和肥料1对应的产量没有差异,3和2,3和1有差异。

接下来用箱线图展示结果
library(ggplot2)
ggplot(df,aes(x=fertilizer,y=yield))+
  geom_boxplot(aes(fill=fertilizer),notch=T,width=0.5)+
  geom_jitter(width=0.1)+theme_bw()+
  theme(legend.position = "top")
image.png

最终得出的结论就是这三种肥料中3的效果最好。

明的数据分析笔记本