R语言进行单因素方差分析
方差分析(analysis of variance,ANOVA),能够找到类别独立变量和连续非独立变量之间的关系,主要用于检测不同的数据集的均值是否相同。如果样本中仅包含了一个变量作为独立变量,我们可以进行单因素方差分析。否则就要实施双因素方差分析。
操作,此处作单因素
方差分析
#前齿轮数与油耗的关系
library(stats)
data("mtcars")
boxplot(mtcars$mpg~factor(mtcars$gear),xlab='gear',ylab='mpg')
#进行单因素
方差分析,检测mpg值是否与gear有关
oneway.test(mtcars$mpg~factor(mtcars$gear))
One-way analysis of means (not assuming equal variances)
data: mtcars$mpg and factor(mtcars$gear)
F = 11.285, num df = 2.0000, denom df = 9.5083, p-value = 0.00308`
#用aov进行
方差分析
mtcars.aov = aov(mtcars$mpg~factor(mtcars$gear))
summary(mtcars.aov)
Df Sum Sq Mean Sq F value Pr(>F)
factor(mtcars$gear) 2 483.2 241.62 10.9 0.000295 ***
Residuals 29 642.8 22.17
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
aov也可以以表的形式输入摘要信息
model.tables(mtcars.aov,"means")
Tables of means
Grand mean
20.09062
factor(mtcars$gear)
3 4 5
16.11 24.53 21.38
rep 15.00 12.00 5.00
#由aov模型,我们可以使用TurkeyHSD进行事后比较检验
mtcars_posthoc = TukeyHSD(mtcars.aov)
mtcars_posthoc
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = mtcars$mpg ~ factor(mtcars$gear))
$`factor(mtcars$gear)`
diff lwr upr p adj
4-3 8.426667 3.9234704 12.929863 0.0002088
5-3 5.273333 -0.7309284 11.277595 0.0937176
5-4 -3.153333 -9.3423846 3.035718 0.4295874
plot(mtcars_posthoc)
#均值差异可视化处理
总结
oneway.test的函数优势在于应用welch修正以处理变量的不均匀性,不过函数返回结果没有aov丰富,也不提供事后检验。两次的p值都很小,拒绝gear不同mpg值相同的原假设。
我们不清楚那两个样本的存在比较大的差异,我们用事后检验,得出4-3差别最大。