2016-06-22 40 views
0

我有三個因素:字,類型和寄存器。在SPSS,這是很容易進行的SPSS成對比較(或簡單的比較),語法是:如何在SPSS中使用「multcomp」包進行R中的成對比較

/EMMEANS=TABLES(word*register*type) COMPARE(type) ADJ (BONFERRONI) 

,它會給我這樣一個結果:

enter image description here

但是我怎樣才能用Multcomp包在R中實現這一點?說如果我有這樣的anova結果:

library (multcomp) 
anova <- aov (data, min~word*register*type) 
summary (anova) 

我該怎麼做SPSS-like pairwise比較?

+0

你見過'?pairwise.t.test'和它的'p.adjust.method ='參數嗎? – thelatemail

回答

1
hsb2<-read.table("http://www.ats.ucla.edu/stat/data/hsb2.csv", sep=",", header=T) 
attach(hsb2) # attach is a horrible practice, but just roll with it for this example 
pairwise.t.test(write, ses, p.adj = "bonf") 

這給了你在SPSS中看到的Bonferonni兩兩比較。

這可以進一步幫助和一般的UCLA提供了有關在SAS,SPSS,Stata的,Mplus和R命令的一些很好的資源:

http://statistics.ats.ucla.edu/stat/r/faq/posthoc.htm

http://www.ats.ucla.edu/stat/dae/

所以,這是成對比較。您也可以使用p.adjust進行多重比較(多路)。請參閱本手冊頁面「Adjust P-values for Multiple Comparisons」。

他們給出表示其可以由不同的調整,包括邦費羅尼的例子,是:

require(graphics) 

set.seed(123) 
x <- rnorm(50, mean = c(rep(0, 25), rep(3, 25))) 
p <- 2*pnorm(sort(-abs(x))) 

round(p, 3) 
round(p.adjust(p), 3) 
round(p.adjust(p, "BH"), 3) 

## or all of them at once (dropping the "fdr" alias): 
p.adjust.M <- p.adjust.methods[p.adjust.methods != "fdr"] 
p.adj <- sapply(p.adjust.M, function(meth) p.adjust(p, meth)) 
p.adj.60 <- sapply(p.adjust.M, function(meth) p.adjust(p, meth, n = 60)) 
stopifnot(identical(p.adj[,"none"], p), p.adj <= p.adj.60) 
round(p.adj, 3) 
## or a bit nicer: 
noquote(apply(p.adj, 2, format.pval, digits = 3)) 


## and a graphic: 
matplot(p, p.adj, ylab="p.adjust(p, meth)", type = "l", asp = 1, lty = 1:6, 
     main = "P-value adjustments") 
legend(0.7, 0.6, p.adjust.M, col = 1:6, lty = 1:6) 

## Can work with NA's: 
pN <- p; iN <- c(46, 47); pN[iN] <- NA 
pN.a <- sapply(p.adjust.M, function(meth) p.adjust(pN, meth)) 
## The smallest 20 P-values all affected by the NA's : 
round((pN.a/p.adj)[1:20, ] , 4) 

This page也給人以ANOVA一些很好的成對比較示例,其中它們具有mentalphysical,和medical因素和以各種方式調整p值。

This是Bretz的另一優秀資源。

最後,這裏是一個SO question關於R中的N路ANOVA,他們展示瞭如何做3路和100路。

+0

謝謝您的支持!但你給我的例子只是雙向交互。我如何在三方互動中做到這一點,這與雙向比較有很大不同。 –

+0

@PingTang更新了我的答案。我希望它的某些部分是有用的。 –