方差分析(ANOVA)在R语言中如何实现?(附数据和代码)

您所在的位置:网站首页 stata中strl和str 方差分析(ANOVA)在R语言中如何实现?(附数据和代码)

方差分析(ANOVA)在R语言中如何实现?(附数据和代码)

#方差分析(ANOVA)在R语言中如何实现?(附数据和代码)| 来源: 网络整理| 查看: 265

引言

方差分析,ANOVA,Analysis of Variances,又叫变异数分析,主要功能是“检验两个或多个样本的平均数的差异是否显著”。其本质是:

分析样本的组间变异程度(方差)和组内变异程度相比,是否足够大。如果够大,证明这个分组因素,对于样本均值的影响是显著的。F检验。ANOVA由F检验实现,因此某些场合也被称为F检验。1 方差分析那个故事一提到方差分析,我就想起自己一个不堪回首的经历。

那是我刚到北大读硕士的第一还是第二年,一个学医的中学同学在301医院进修,问我可以用Stata做方差分析不?(他研究的是很典型的临床医学问题,关注的是某些手术方式是否效果更好之类)

我当时一愣,方差分析什么鬼,和t检验听上去有点关系?感觉好low啊。他们医学不用跑回归的嘛?我们用的统计方法怎么差那么远?不管了,反正我们计量经济学肯定牛——我们控制了很多变量,我们用多期面板数据,我们搞因果推断,我们更靠谱。

然后我自己就百度了下,匆匆忙忙看了下关于方差分析的介绍,看了Stata的官方视频,了解个大概。坦白说,当时我没弄透彻什么是方差分析,Stata里面跑出来的结果也说得不是很清楚。总之,当时的我没能帮上那个忙。

之后很长一段时间,我都在纠结这个事情。我在想,方差分析属于统计学的内容。统计学我是学过的,概率论丢硬币嘛,统计学就讲假设检验和参数估计,最后会提到OLS。至于方差分析,它肯定跑不出概率论和数理统计的范畴!但是。。但问题是,我就不会做方差分析?

直到有一天,我翻到了一本忘了哪个国内教授写的《统计学》一书。里面提到了卡方检验,方差分析,于是就认真看了一遍。发现这本书说的很详细,也提供具体的案例分析。于是我才想明白,这个方差分析简直就是我自己的知识盲区——之前上课用的统计学用的教材,只是简单略过方差分析;计量经济学里面会用到t检验,但是几乎也不会提到方差分析。

好吧,既然这个东西那么基础,想必也会很重要。反正难的我不懂多,不如先搞熟基础。于是就认真把这个方差分析,照着教材学了两三遍,用Excel、Stata、R和Python,都试着实现了一遍。

2 ANOVA在四大统计软件中的实现Stata还是最简单高效。就两个命令,一个叫oneway,一个叫anova。oneway用于做单因素方差分析,anova则用于做多因素方差分析。Excel也很方便(以2019为例):【数据】-【数据分析】-【单因素方差分析/多因素方差分析】(界面如下截图)Raov() 函数。相对Stata啰嗦很多,但过程也细致严谨很多。Python:statsmodels包中的 anova_lm() 函数。最啰嗦,当然也就最严谨了。Excel 2019 的 ANOVA 界面2 单因素方差分析

这里,我们用统计软件之王R(我封给它的)来实现吧。这里我们使用的是R自带的Iris数据集,分析不同的花的亚种,其花瓣的特征如长度,是否存在差异。

其中Species将鸢(yuan1)尾花分为三种,其它4个指标分别表示鸢尾花的花的特征。比如Sepal.Length表示花瓣的长度。这里Species成为分组变量,也就是所谓的“因素”(相当于回归分析中的x);花瓣的长度为结果变量(相当于回归分析中的y),是比较组间均值差异的变量指标。

> data(iris) #导入R自带的Iris数据 > aov1 aov1 Call: aov(formula = Sepal.Length ~ Species, data = iris) Terms: Species Residuals Sum of Squares 63.21213 38.95620 Deg. of Freedom 2 147 Residual standard error: 0.5147894 Estimated effects may be unbalanced > summary(aov1) Df Sum Sq Mean Sq F value Pr(>F) Species 2 63.21 31.606 119.3 tukey tukey = as.data.frame(tukey$Species) > tukey$pair = rownames(tukey) # Plot pairwise TukeyHSD comparisons and color by significance level > ggplot(tukey, aes(colour=cut(`p adj`, c(0, 0.01, 0.05, 1), label=c("p


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3