多重比较之后要用字表标出各个水平的显著性标记,由于组别比较多,人工标记太繁琐。R 中有没有什么函数可以将这个工作自动化啊?
怎么用 R 标出多重比较后的显著性
昨天看了一下 zwdbordeaux 的帖子(http://cos.name/cn/topic/12277),将显著性标记这部分内容梳理了一下,代码如下:
library(agricolae) #给出 LSD.test() 函数<br />
library(MASS) #给出 cabbages 数据,别无它用<br />
aov1 <- by(data = cabbages, INDICES = cabbages$Cult,<br />
FUN = function(df) aov(HeadWt ~ Date, data = df)) #分组对某个变量进行方差分析,前期应该排除该分组与该变量没有交互作用<br />
mul <- lapply(aov1, FUN = function(model) LSD.test(y = model, trt = c("Date"), group = TRUE, console = FALSE)) #分组标记显著性<br />
lapply(mul, function(result) result$groups) #给出分组标记显著性结果
字母标记后的结果非常简洁,结果如下:
$c39<br />
trt means M<br />
1 d16 3.18 a<br />
2 d20 2.80 a<br />
3 d21 2.74 a</p>
<p>$c52<br />
trt means M<br />
1 d20 3.11 a<br />
2 d16 2.26 b<br />
3 d21 1.47 c
</p>哪位高手能够把上面的流程编程一个函数啊?我编了一个,调用总是出错,说找不到变量。
<br />
mul.test <- function(data, groups, compare, value_var, alpha) {<br />
library(agricolae)<br />
aov1 <- by(data = data, INDICES = groups,<br />
FUN = function(df) aov(value_var ~ compare, data = df))<br />
mul <- lapply(aov1, function(model) LSD.test(model, trt = quote(comopare),<br />
group = TRUE, alpha = alpha))<br />
mul.result <- lapply(mul, function(result) result$groups)<br />
mul.result<br />
}<br />
大家帮我看一下呢!
</p>
没人啊?自己顶一个呢。
5 天 后
继续顶!