如何在R中既没有正态又没有方差相等的数据上进行双向ANOVA?


16

目前,我正在研究硕士论文,并计划使用SigmaPlot运行统计数据。但是,在花了一些时间处理数据后,我得出的结论是SigmaPlot可能不适合我的问题(我可能会误解了),因此我在R中开始了首次尝试,但并没有因此而变得更加容易。

计划是根据我的数据运行一个简单的TWO-WAY-ANOVA,该结果来自3种不同的蛋白质和对此进行8种不同的处理,所以我的两个因素是蛋白质和处理。我同时使用

> shapiro.test(time)

> ks.test(time, "norm", mean=mean(time), sd=sqrt(var(time)))

在这两种情况下(也许并不奇怪),我最终都得到了非正态分布。

哪一个给我留下了第一个问题,即哪个检验用于方差相等。我想出了

> chisq.test(time)

结果是,我的数据也没有方差相等。

我尝试了不同的数据转换(对数,中心,标准化),所有这些都不能解决我的方差问题。

现在我不知所措,如何进行ANOVA来测试哪些蛋白质和哪些治疗方法彼此之间有显着差异。我发现了有关Kruskal-Walis-Test的一些信息,但仅出于一个因素(?)。我还发现了有关排名或randamization的内容,但还没有找到如何在R中实现这些技术的方法。

有人建议我该怎么办吗?

编辑:谢谢您的回答,我对阅读有点不知所措(似乎越来越多而不是更少),但是我当然会继续前进。

根据建议,这是我的数据示例(对于格式,我感到非常抱歉,我无法找到其他解决方案或放置文件的地方。对于这一切我仍然是陌生的。):

protein treatment   time  
A   con 2329.0  
A   HY  1072.0  
A   CL1 4435.0  
A   CL2 2971.0  
A   CL1-HY sim  823.5  
A   CL2-HY sim  491.5  
A   CL1+HY mix  2510.5  
A   CL2+HY mix  2484.5  
A   con 2454.0  
A   HY  1180.5  
A   CL1 3249.7  
A   CL2 2106.7  
A   CL1-HY sim  993.0  
A   CL2-HY sim  817.5  
A   CL1+HY mix  1981.0  
A   CL2+HY mix  2687.5  
B   con 1482.0  
B   HY  2084.7  
B   CL1 1498.0  
B   CL2 1258.5  
B   CL1-HY sim  1795.7  
B   CL2-HY sim  1804.5  
B   CL1+HY mix  1633.0  
B   CL2+HY mix  1416.3  
B   con 1339.0  
B   HY  2119.0  
B   CL1 1093.3  
B   CL2 1026.5  
B   CL1-HY sim  2315.5  
B   CL2-HY sim  2048.5  
B   CL1+HY mix  1465.0  
B   CL2+HY mix  2334.5  
C   con 1614.8  
C   HY  1525.5  
C   CL1 426.3  
C   CL2 1192.0  
C   CL1-HY sim  1546.0  
C   CL2-HY sim  874.5  
C   CL1+HY mix  1386.0  
C   CL2+HY mix  364.5  
C   con 1907.5  
C   HY  1152.5  
C   CL1 639.7  
C   CL2 1306.5  
C   CL1-HY sim  1515.0  
C   CL2-HY sim  1251.0  
C   CL1+HY mix  1350.5  
C   CL2+HY mix  1230.5

2
似乎您对R的看法很好,但是我觉得您的困难可能与R根本无关。也许您需要先咨询统计学家才能解决问题,然后才能真正解决这个问题。您当前的问题很复杂,可能会阻止人们对此提出质疑。对于技术方面,这里有一些站点:ats.ucla.edu/stat/R/seminars/Repeated_Measures/…个性项目
project)

4
排名测试的一个很好的替代方法是使用置换方差分析(uvm.edu/~dhowell/StatPages/More_Stuff/Permutation%20Anova/…)。使用这种方法,异方差无关紧要。人们使用等级测试的主要原因是因为它们在计算上更加容易。这不再重要。我们拥有R和高效的计算机……
Mikko

1
什么是回覆?请注意,我们实际上并不关心响应是否为正态分布-我们要检查分析中的残差是否近似具有近似方差的正态。但是,如果实际上有治疗效果,那么我们就不会期望响应会以正态分布在边缘。
戴森2012年

1
我会注意到,我只是获取了您发布的数据,并进行了两种方差分析,并对残差进行了夏皮罗威尔克斯检验,得出的p值为0.5022,这并不意味着要过多担心。
戴森2012年

1
@Sabine正态性通常不是什么引起ANOVA的大问题,但是样本应来自相同的总体,这意味着方差相等是最重要的,当然是在随机化之后的假设。如果您的方差近似不相等,您应该采取一些措施(尝试?bartlett.test
Mikko,2012年

Answers:


12

这可能更多是评论而不是答案,但不适合作为评论。我们可能会在这里为您提供帮助,但这可能需要一些迭代。我们需要更多信息。

首先,您的响应变量是什么?

其次,请注意,您的响应的边际分布不必一定是正态分布,而应以模型为条件的分布(即残差)应该是-不清楚您是否已检查过残差。此外,正态性是线性模型(例如ANOVA)的最不重要的假设。残差可能不需要完全正常。一般而言,检验正态性不值得(有关CV的讨论,请参见此处),图要好得多。我会尝试对您的残差进行qq绘制。在R这个与完成qqnorm(),或尝试qqPlot()car包。还值得考虑残差为非正态的方式:偏斜比过度峰度更具破坏性,尤其是当偏斜在组间交替方向时。

如果确实存在一个值得担心的问题,那么进行转换是个不错的策略。记录原始数据是一种选择,但不是唯一的选择。请注意,从这个意义上讲,居中和标准化并不是真正的转换。您想研究Box&Cox系列电源转换。请记住,结果不一定非要完全正常,只要足够好即可。

接下来,尽管您可能会很好,但我不遵循您使用方差的均方性的卡方检验。我会建议你使用列文的测试(使用leveneTest()car)。异质性比非正态性更具​​破坏性,但如果异质性较小,则ANOVA相当强大。一个标准的经验法则是,最大的组方差可以达到最小的四倍,而不会造成严重的问题。良好的转型还应解决异质性。

如果这些策略不够用,我可能会在尝试非参数方法之前探索稳健的回归

如果您可以编辑问题并说更多有关数据的信息,我也许可以对其进行更新以提供更具体的信息。


关于第二点,我最近在这里写了一个答案这可能有助于使这个问题更明确。您可能需要阅读。
gung-恢复莫妮卡

8

注意:此答案是在从SO迁移并合并问题之前发布的,因此已将详细信息添加到此处未解决的问题。@ gung在注释和答案中解决了许多问题)。

有许多不同的方法,此问题已在此站点的其他地方讨论过。以下是一些方法的列表,以及指向网站上其他问题的链接和一些参考资料:

  1. Box-Cox幂变换可以归一化非线性范围内的残差
  2. 对排名数据进行方差分析非常简单,但是功能却很弱,难以解释。参见Conover and Iman,(1981年)
  3. 比例赔率顺序物流模型
  4. 置换测试(Anderson和ter Braak,2003年),由Anderson实施并由其描述,并作为R Vegan软件包中adonis功能
  5. 自举
  6. 分层贝叶斯建模(Gelman 2005

+1,这是一个不错的列表,其中列出了一些可供探索的选项。
gung-恢复莫妮卡

以下是最初在Stack Overflow上交换的注释,在迁移过程中丢失了一些注释。参见meta.stats.stackexchange.com/q/1157/930
chl 2012年

你知道安德森和布拉克的想法是否得到实施?- 亨里克(Henrik) 5月16日15:15
chl 2012年

@Henrik在FORTRAN Anderson 2005中有一个实现,可以通过R包中的R函数adonis获得Vegan/ David 5月16日在16:20
chl 2012年

谢谢。adonis似乎甚至可以使用单变量dvs。但是,我有一种感觉,当我Terms added sequentially (first to last)运行该消息时,它会使用类型1的平方和之类的东西。您使用过它还是可以说些什么?– Henrik 5月16日在17:03
chl 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.