1. 残差需符合正态或接近正态分布。
2. 各组别的方差相同,即方差齐性。
summary(ToothGrowth)
## len supp dose
## Min. : 4.20 OJ:30 Min. :0.500
## 1st Qu.:13.07 VC:30 1st Qu.:0.500
## Median :19.25 Median :1.000
## Mean :18.81 Mean :1.167
## 3rd Qu.:25.27 3rd Qu.:2.000
## Max. :33.90 Max. :2.000
再查看数据结构:
str(ToothGrowth)
#'data.frame': 60 obs. of 3 variables:
# $ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
# $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
# $ dose: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
从上述可知,此数据集包含60行*3列的数据。
mydata mydata$dose
# 查看dose是否已经转为为factor
str(mydata)
#'data.frame': 60 obs. of 3 variables:
# $ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
# $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
# $ dose: Factor w/ 3 levels "0.5","1","2": 1 1 1 1 1 1 1 1 1 1 ...
从上述结果可知,dose已经被转化成为factor,并且是一个3水平的(levels)分类变量。 下一步,查看一下6组间的样本量各是多少:
table(mydata$supp, mydata$dose)
# 0.5 1 2
# OJ 10 10 10
# VC 10 10 10
上述是一个2*3的表格,每个样本量分别为10,因此属于 均衡设计双因素方差分析 。
library(ggplot2)
ggplot(mydata, aes(dose, len, color = supp)) +
geom_boxplot()
从上图中基本可以了解到,不同的剂量(dose)与不同的给药方式(supp)可能都会对牙齿的生长(len)有影响,并且可能存在交互作用。 下一步进行统计分析。
首先,拟合只包含主效应的的方程,此类方程假定dose与supp之间是相互独立的。
# 未包含dose:supp的交互项
myaov_1 summary.aov(myaov_1)
# Df Sum Sq Mean Sq F value Pr(>F)
#dose 2 2426.4 1213.2 82.81 < 2e-16 ***
#supp 1 205.4 205.4 14.02 0.000429 ***
#Residuals 56 820.4 14.7
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
上述的输出结果包含两个重要的统计值: F值与p值 。 如果认为 dose 与 supp 之间可能存在交互作用;换句话说,想要研究给药剂量(dose)与牙齿生长(len)之间的关系会不会随着给药方式的不同(supp)而改变,那么可以在方程中加入 交互项 。
## 添加dose:supp的交互项
myaov_2 summary.aov(myaov_2)
# Df Sum Sq Mean Sq F value Pr(>F)
#dose 2 2426.4 1213.2 92.000 < 2e-16 ***
#supp 1 205.4 205.4 15.572 0.000231 ***
#dose:supp 2 108.3 54.2 4.107 0.021860 *
#Residuals 54 712.1 13.2
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
上述呈现了各个组别之间的两两比较结果。TukeyHSD(myaov_2, which = "dose:supp")
#Tukey multiple comparisons of means
# 95% family-wise confidence level
#Fit: aov(formula = len ~ dose + supp + dose:supp, data = mydata)
#$`dose:supp`
diff lwr upr p adj
#1:OJ-0.5:OJ 9.47 4.671876 14.2681238 0.0000046
#2:OJ-0.5:OJ 12.83 8.031876 17.6281238 0.0000000
#0.5:VC-0.5:OJ -5.25 -10.048124 -0.4518762 0.0242521
#1:VC-0.5:OJ 3.54 -1.258124 8.3381238 0.2640208
#2:VC-0.5:OJ 12.91 8.111876 17.7081238 0.0000000
#2:OJ-1:OJ 3.36 -1.438124 8.1581238 0.3187361
#0.5:VC-1:OJ -14.72 -19.518124 -9.9218762 0.0000000
#1:VC-1:OJ -5.93 -10.728124 -1.1318762 0.0073930
#2:VC-1:OJ 3.44 -1.358124 8.2381238 0.2936430
#0.5:VC-2:OJ -18.08 -22.878124 -13.2818762 0.0000000
#1:VC-2:OJ -9.29 -14.088124 -4.4918762 0.0000069
#2:VC-2:OJ 0.08 -4.718124 4.8781238 1.0000000
#1:VC-0.5:VC 8.79 3.991876 13.5881238 0.0000210
#2:VC-0.5:VC 18.16 13.361876 22.9581238 0.0000000
#2:VC-1:VC 9.37 4.571876 14.1681238 0.0000058
library(car)
leveneTest(len ~ dose*supp, data = mydata)
##Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
##group 5 1.7086 0.1484
## 54
p值等于0.1484,提示各组间的方差没有显著性差异。因此,没有违反方差齐性的前提。 第二步 :检验残差是否符合正态分布(可以做一个qq图):
plot(myaov_2, 2)
所有的点大体上分布在对角线上,提示:没有违反正态性的原则。
library(car)
my_model Anova(my_model, type = "III")
这里推荐使用type = "III",指的是采用第三类平方和,也是其他商业类统计软件(如SPSS)所采取的模式。
##Anova Table (Type III tests)
##Response: len
Sum Sq Df F value Pr(>F)
##(Intercept) 1750.33 1 132.730 3.603e-16 ***
##dose 885.26 2 33.565 3.363e-10 ***
##supp 137.81 1 10.450 0.002092 **
##dose:supp 108.32 2 4.107 0.021860 *
##Residuals 712.11 54
##---
##Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
结果的解释以及其他内容与均衡设计类似,不再赘述。
好啦,今天的内容就到这里~~
▌声明:本文由 R语言与统计 首发,转载请注明 ▌图片来源:壹伴助手 ▌编辑:June 让R语言与统计更简单 对我们最好的鼓励就是点赞,关注与转发哦!❤好文,点个在看吧