Re: 有没有可以快速呈现多重比较的MACRO?

楼主: celestialgod (天)   2014-08-01 00:09:00
不好意思,我之前忘记回您信了
我不知道是否有直接的方法做
我是直接写一个function去做的
我知道您是初学者,但是很抱歉的
我所能做的就是奉上我的R code
您如果有任何问题可以再问我,谢谢
code:
# 资料生成
k = 4
n = 3:(k+2) * 100
set.seed(100)
mu = sample(seq(-3, 3, length = 100) * 1.5, k)
sigma = sample(seq(0.5, 10, length = 100), k)
y = unlist(lapply(1:k, function(i) rnorm(n[i], mu[i], sigma[i])))
group = unlist(lapply(1:k, function(i) rep(i, n[i])))
dat = data.frame(y, group)
# 以anova scheffe test为例
# 有很多变量的话,主要是更动scheffe.test第二个element
# 以及aov的公式input,要用paste做。
# 可以用names(dat)做input,前面再加个循环就好。
library(agricolae)
anova_result = aov(y ~ group, dat)
sheffe_test_result = scheffe.test(anova_result,
"group",group=FALSE,console=FALSE)
order_v = order(sheffe_test_result$means[,1])
comparison_result = sheffe_test_result$comparison
sig_level = 0.05
comparison_pairs = rownames(comparison_result)
sign_v = sapply(1:(k-1), function(j){
pair = order_v[j:(j+1)]
location = which(grepl(pair[1], comparison_pairs)
& grepl(pair[2], comparison_pairs))
if(comparison_result$pvalue[location] < sig_level)
return(">")
else
return("=")
})
output_v = paste(order_v[1:2], collapse = paste("", sign_v[1], ""))
if(length(sign_v) > 1){
for(i in 2:(k-1))
output_v = paste(output_v, sign_v[i], order_v[i+1])
}
output_v
# "4 > 2 = 1 > 3"
※ 引述《wanson (望生)》之铭言:
: 在统计板有人提到可以像用R 将快速整理出多重比较
: 如
: 1 > 2 =3 之类的
: 我寄信给那位网友,想跟他请教
: 但没有下文
: 我没有使用过R
: 但想学习看看
: 不知道板上的板友是否也会这个快速整理的方法
: 不知道是否方便教导一下
: 谢谢
作者: wanson (望生)   2014-08-01 02:58:00
谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com