R语言统计分析之方差分析

R语言是一个很好的做统计分析的语言,本文对R的方差分析做个总结

方差分析我个人理解就是变异分解(作为农学生这些都是田间统计学的),在一组数据中由于数据之间的差异会有一个总的变异即总方差,而基于我们的试验设计以及分析可以将变异分解为试验处理造成的变异(这个一般是我们想要的,方差分析的F测验基本上也是比较处理的变异是否显著大于误差引起的变异以确定处理是都有效)因此在做试验的时候都想要误差小一些才能体现出处理的效应,所以也采取了一些方法,如:设置区组可以将田块的非试验因素造成的差异(如田块肥力有一定的变化趋势)从试验误差分离出来,协方差分析可以利用回归对某些试验外的因素效应进行去除。
简单的说,以下表为例,ABC之间的方差就是处理效应的方差,Value1-2的差异就是取样误差造成的(或许会有一些我们不知道的因素造成的差异均归为误差),我们的目的就是比较处理的方差与误差的方差是否具有显著性,试验设计的目的就是尽可能的减少误差以体现处理的差异。

项目Value 1Value2
A69
B78
C510

单因素方差分析

下面基于R做一下简单的分析示例
代码很简单,做的时候需要根据实验处理确定方差分解项
数据sss如下
在这里插入图片描述
在这里插入图片描述

df <- read.csv('sss.csv')
# 正态分布检验
shapiro.test(df[which(df[, 2] == "A"), ] $x)
shapiro.test(df[which(df[, 2] == "B"), ] $x)
shapiro.test(df[which(df[, 2] == "C"), ] $x)
shapiro.test(df[which(df[, 2] == "D"), ] $x)
shapiro.test(df[which(df[, 2] == "E"), ] $x)

# 方差齐次检验
bartlett.test(x~method, data = df)
library(car)
library(carData)
# 离群点检验
outlierTest(aov(x~method, data=df))
# 单因素方差分析
df <- read.csv('sss.csv')
df$method <- factor(df$method)
aov.model <- aov(x~method, data = df)
summary(aov.model)
boxplot(x~method, data = df)
# 多重比较 图基法
TukeyHSD(aov.model, ordered = F)
# TukeyHSD(aov(x~method, data = df), ordered = F)
plot(TukeyHSD(aov(x~method, data = df)))
library(agricolae) # 新复极差法多重比较
out <-duncan.test (aov.model)
out$groups
plot(out) 

# 绘图自动标ab
library(MASS)
library(TH.data)
library(survival)
library(mvtnorm)
library(multcomp)
tuk <- glht(aov(x~method, data = df), linfct = mcp(method = "Tukey"))
plot(cld(tuk, level = 0.05), col = "lightgrey")

两因素方差分析

数据有重复需考虑交互作用
homework3.csv数据如下
在这里插入图片描述

hm2 <- read.csv('homework3.csv')
# 正态分布,离散值,方差均一性检验,太多了没写全
shapiro.test(hm2[which(hm2[, 2] == "A"), ] $血压)
shapiro.test(hm2[which(hm2[, 3] == "T0"), ] $血压)
bartlett.test(血压~诱导方法, data = hm2)
library(car)
library(carData)
outlierTest(aov(血压~诱导方法, data=hm2))

aov.hw <- aov(血压~诱导方法*时间, data = hm2)
summary(aov.hw)
# 不同时间不同诱导方法之间差异显著,诱导方法与时间之间存在较强互作
TukeyHSD(aov.hw, ordered = F)
plot(TukeyHSD(aov.hw))
TukeyHSD(aov(血压~诱导方法*时间, data = hm2), ordered = F)
plot(TukeyHSD(aov(血压~诱导方法*时间, data = hm2)))
# 新复极差法Duncan
library(agricolae)
out <-duncan.test (aov(血压~诱导方法*时间, hm2),"时间")
out$groups
plot(out) 

在这里插入图片描述
具体细节可以继续深入研究,只要知道方差分解项,三因素、裂区等设计实现起来就简单了。

  • 0
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值