Re: [問題] 有沒有可以快速呈現多重比較的MACRO?

看板R_Language作者 (攸藍)時間10年前 (2014/08/01 00:09), 10年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
不好意思,我之前忘記回您信了 我不知道是否有直接的方法做 我是直接寫一個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 : 但想學習看看 : 不知道板上的板友是否也會這個快速整理的方法 : 不知道是否方便教導一下 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.192.51 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1406822943.A.914.html ※ 編輯: celestialgod (218.164.192.51), 08/01/2014 00:11:35

08/01 02:58, , 1F
謝謝
08/01 02:58, 1F
文章代碼(AID): #1JsceVaK (R_Language)
文章代碼(AID): #1JsceVaK (R_Language)