我想知道是否有办法避免使用t.test()
3次来比较3个变量x1
,x2
和x3
,而是使用{{1}一次输入任何两个变量一次?
例如,对于:t.test()
,我现在正在使用:x1 = rnorm(20) ; x2 = rnorm(20) ; x3 = rnorm(20)
,但我可以只使用一次t.test(x1, x2) ; t.test(x1, x3) ; t.test(x2, x3)
吗?
以下是我尝试过但没有成功的事情:
t.test()
答案 0 :(得分:3)
与刚才cor
上的问题类似,以下是处理成对计算的语法:
set.seed(21L)
x1 <- rnorm(20); x2 <- rnorm(20); x3 <- rnorm(20)
pcor <- function(...) {
combn(list(...),
2,
function(y) cor(y[[1]], y[[2]]),
simplify=FALSE)
}
pcor(x1, x2, x3)
pttest <- function(...) {
combn(list(...),
2,
function(a) t.test(x=a[[1]], y=a[[2]]) #change this to whatever your want
simplify=FALSE)
}
pttest(x1, x2, x3)
答案 1 :(得分:2)
我们可以使用pairwise.t.test
library(dplyr)
library(magrittr)
data(airquality)
airquality %>%
mutate(Month = factor(Month, labels = month.abb[5:9])) %>%
summarise(pval = list(pairwise.t.test(Ozone, Month, p.adj = "bonf")$p.value)) %>%
pull(pval) %>%
extract2(1)
# May Jun Jul Aug
#Jun 1.0000000000 NA NA NA
#Jul 0.0002931151 0.10225483 NA NA
#Aug 0.0001949061 0.08312222 1.000000000 NA
#Sep 1.0000000000 1.00000000 0.006969712 0.004847635
使用OP的例子
pairwise.t.test(c(x1, x2, x3), rep(paste0("x", 1:3), each = 20), p.adj = "bonf")
# Pairwise comparisons using t tests with pooled SD
#data: c(x1, x2, x3) and rep(paste0("x", 1:3), each = 20)
# x1 x2
# x2 0.486 -
# x3 1.000 0.095
set.seed(24)
x1 <- rnorm(20)
x2 <- rnorm(20)
x3 <- rnorm(20)
答案 2 :(得分:1)
如果你想随机使用任何变量,试试这个:
wsdl.exe [path To Your WSDL File] //in visual studio command line
答案 3 :(得分:0)
通过使用成对t检验,必须调整alpha值。 Bonferroni校正通常用于农业,Holm有时用于医学。如果没有这样的纠正,就会产生比应有的更大的差异。