R中的假设检验(二)方差分析

您所在的位置:网站首页 r语言中方差代码是什么 R中的假设检验(二)方差分析

R中的假设检验(二)方差分析

2023-10-14 08:42| 来源: 网络整理| 查看: 265

方差分析的原理:原本想跳过这个部分的,然而突然发现自己看懂了这些公式,就忍不住写出来。 (1)Xij=X均值+(X组内均值-X均值)+(Xij-X组内均值) #Xij代表第i组第j个观察值,X均值代表所有观察值的均值,X组内均值就是每组内部的均值。可以看到打开括号就是成立的,只是巧妙的引入了组内均值和组间均值。 (2)SSD总=SSD组内+SSD组间 #把X组内均值-X均值的方差计算出来,构成组间方差SSD组间;把Xij-X组内均值的方差计算出来,构成组内方差SSD组内。可以通过公式的转换证明出 SSD总=SSD组内+SSD组间。 (3)MS组内=SSD组内/(n-k),MS组间=SSD组间/(k-1)# k代表分组个数,n代表所有的观测值个数,MS代表平均方差。构造时的SSD是符合正态分布的,所以MS也是符合正态分布的。组内差异我们可以通过规定数据的正态性和方差齐性来使值固定下来,而MS组间就是我们的原假设,即假设各组方差齐。 (4)F=MS组间/MS组内 #这里构造了一个F分布,在最理想的情况下,组内差异无,为1,组间差异无,为1,即F=1。当MS组间的平均均值超过显著性,那么F就会落到95%分布以外的区域,这时就可以认为各组方差不全相等。ANOVA分析由于是Fisher发明的,又称为F检验。 好开心,自己终于有点理解了,之前总是听不懂。建议大家跳过这个部分,直接看下面。 单因素方差分析: 应用条件:(1)符合正态性分布(2)各组组内方差齐。 这里常规用的是aov(),支持formula。 代码例子:aov(folate ~ ventilation) ,然后用summary()查看 #组间差异p=0.0436 这里的aov()输出的是1个模型,所以得配合summary显示。这里还有1个骚操作,就是anova(),官方定义:计算一个或多个拟合模型对象的方差(或偏差)表的分析。划重点:模型对象,方差表。 代码例子:anova(lm(folate ~ ventilation)) #p=0.04359 有意思的地方来了,这就是医学统计数上没讲到的点,即方差分析和线性回归都属于一般线性模型。有关这方面的内容,有个博主讲的已经很透彻了

shahaizimxm的CSDN博文 线性回归介绍之五——回归与方差分析的关系https://blog.csdn.net/xiangmin_meng/article/details/22402545

总结一句话,方差分析的x和y,是分组变量和分析变量,其中分组变量是分类资料,分析变量是连续资料;线性回归的x和y,是自变量和因变量,两者都是连续资料。不同点就是x的分布类型,方差分析的x对应多个y(因为后者归属1个组),线性回归的x对应1个y,当然也有对应多个的情况,比如在离散数据中有几个x相等。相同点就是他们都属于一般线性回归模型,且都可以用 y=α+βx+ε 来表示。 多重检验 这里有很多方法,LSD检验、Dunnett检验、Tukey检验、SNK检验、Bonferroni校正、scheffe检验(最保守)等等。教材课本上在进行两两比较用的是SNK,但是当两两比较较多时,比如10组就要对比45次,那么它的假阳性非常高。 LSD是least significant difference的缩写,又称最小显著差异方法,它的敏感度最高,假阳性低,但会放大一类错误(即假阴性,本来是真的却放弃了,又称“弃真”,对面的二类错误就是假阳性),要是LSD法都没有检验出有差别,恐怕真的没差别了。spss上这章用的是Bonferroni校正的LSD检验。 如需要进行任意两组之间的比较而各组样本的容量又相同时,可采用Tukey法;若各组样本的容量不相同时,可采用Scheffe法。 如果组数较少,如3组、4组,各种比较方法得到的结果差别不会很大;如果比较的组数很多,则要慎重选择两两均值比较的方法。 一般参照标准:(1)如果存在明确的对照组,要进行验证性研究,即计划好的某两个或几个组间(和对照组)的比较,适宜用 Bonferroni(LSD)法;(2)若为探索性的两两比较,且各组人数相等,适宜用 Tukey法;(3)其它情况适宜用Scheffe法,它最保守。 实现: LSD代码例子: >library(agricolae) #这里得用到agricolae包的LSD.test函数,agricolae包是一个很常用的统计包。 >out TukeyHSD(aov(folate ~ ventilation)) #TukeyHSD是R自带的方法 在这里插入图片描述 >HSD.test(aov(folate ~ ventilation),‘ventilation’) #这是agricolae包的HSD.test函数,听说是比TukeyHSD函数更好,我还没弄懂agricolae包的显示特点,等我以后弄懂了我再来回答,我先贴图供大家分析。 在这里插入图片描述 SNK代码例子: >SNK.test(aov(folate ~ ventilation),‘ventilation’) #这是agricolae包的SNK.test函数 Scheffe代码例子: >scheffe.test(aov(folate ~ ventilation),‘ventilation’) #这是agricolae包的scheffe.test函数 以上是最常见的几种方法。 这里还有一种方法叫成对比较,pairwise.t.test,非常好用,,能显示成对比较的p值表。 代码示例 >pairwise.t.test(folate,ventilation,p.adjusthod = ‘bonferroni’) 注意这里的p.adjusthod,包括了c(“holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”)。这个是R自带的两组比较的检验方法,输出的是各组两两比较的p值。如果p大于1,则输出1,这个p值的最大就是1。 平常建议使用这个,或者LSD,都可以。 在这里插入图片描述 把这幅图和上面LSD的图比较可以发现,LSD用的是字母表示法,告诉你哪两组有差异,而pairwise.t.test是输出p值。但两者最后呈现的结果是一样的,因此根据需要选择。这个pairwise不用加载agricolae包,可能我比较喜欢,方便快捷。 保守的单因素方差分析 回顾前面,前面说了这么多,其实只是讲了ANOVA的分析,还记得么,它的前提条件是各组数据符合正态分布和方差齐,而这里要介绍Welch的方法,即只需要正态分布,不需要方差齐的检验方法,类似于t检验里,我们介绍过1次。话说Welth真是个保守的人呢,但是他的结果我感觉灵敏度比不上ANOVA。 代码例子:> oneway.test(folate ~ ventilation) #p=0.09277 可以看到,这里输出的p比上面ANOVA输出的p要大很多,结果也从显著的临界值变得不显著。这是个非常悲伤的故事,对于国内追求p值的研究者来说,这无异于是晴天霹雳,所以Welch虽然方便,但还是慎用。这零点几的正负就决定着文章能不能见刊了,说起来真是心酸。

非参数方差分析:Kruskal-Wallis检验 KW法,不假设各组的数据分布,仅假设各组具有相似的分布,适用于不符合正态分布的情况,比如偏峰分布。该方法比较简单,原假设同ANOVA。 代码例子: >kruskal.test(folate ~ ventilation) #p=0.1234 这没什么好说的,后面继续上面的多重检验环节。

以上即是常用的单因素方差分析,双因素方差分析例如anova( lm( hr ~ subj+time ) ),以及双因素非参数方差分析的Friedman检验例如friedman.test ( hr ~ time | subj )就不提了。这些我的领域用的太少太少了,所以我就随便过一遍,没有心思去了解。

重新审视线性回归和方差分析 我们说,anova()函数是输出方差分析表,且这个模型的x需要是分类变量。但是,若x是离散变量呢? 当x是离散变量,x与y构建的一元线性回归模型,这个模型在前面讲过,这个模型的斜率是b,截距是a,而若把b定义为模型方差,把a定义为残差方差,那么对于同样构建成这个模型的方差分析,斜率是组间波动,截距是组内波动。所以,对b进行的统计检验其实就是对组间方差进行分析。 由此,可以运用F检验,对一元线性回归模型进行显著性检验,代入一元线性回归分析,即F检验是对原假设“回归模型的斜率为0”作出显著性检验。

今天终于结束了,码字码的很开心,方差分析还差个协方差分析,后面的其他的如卡方啥的都很简单,没啥特别的,所以这么说来,这些关于统计学的知识学习也慢慢接近尾声了。明天开始最喜欢的方差分析的作图时间。 今天比昨天进步一点,每天如此,生活就很充实了。

今天我又回来了,重磅中的重磅,我来解释上面的两两比较中遗留的问题。这个原来是统计学的基础,但是因为我没看统计学原理书,所以这个基础知识点不知道。今天终于明白了。这个就是“多重比较的字母标记法” 多重比较的字母标记法:步骤:(1)将全部平均数从大到小顺序排列,然后在最大的平均数上标上字母a(2)将该平均数依次和其以下各水平均数相比,凡差异不显著的都标字母a,直至某一个与之相差显著的平均数则标以字母b(3)再以该表有b的平均数为标准,与上方各个比它大的平均数比,凡不显著的也一律表以字母b(4)重复以上步骤,标c,d…(5)这样各平均数间,凡有一个标记相等字母的即为差异不显著,凡具有不同标记字母的即为差异显著。在实际应用时,一般以大写字母A,B,C…表示α=0.01显著水平,以小写字母a,b,c…表示α=0.05显著水平。

如此一来,上面的所有的两两比较的方法都通悟了,今天的收获非常的大。这个坑填上了。



【本文地址】


今日新闻


推荐新闻


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