有一个函数't.test()`在R中输入多个变量
我想知道是否有一种方法可以避免使用t.test 3次来比较3个变量x1、x2和x3,而是使用t.test一次来获取输入到其中的任意两个变量 例如,对于:x1=rnorm20;x2=rnorm20;x3=rnorm20,我现在使用:t.testx1,x2;t、 testx1,x3;t、 testx2,x3,但我可以只使用t.test一次吗 以下是我尝试过但没有成功的方法:有一个函数't.test()`在R中输入多个变量,r,function,R,Function,我想知道是否有一种方法可以避免使用t.test 3次来比较3个变量x1、x2和x3,而是使用t.test一次来获取输入到其中的任意两个变量 例如,对于:x1=rnorm20;x2=rnorm20;x3=rnorm20,我现在使用:t.testx1,x2;t、 testx1,x3;t、 testx2,x3,但我可以只使用t.test一次吗 以下是我尝试过但没有成功的方法: 如果要随机使用任何变量,请尝试以下操作: s = sample(x = c("x1","x2","x3"),size = 2,
如果要随机使用任何变量,请尝试以下操作:
s = sample(x = c("x1","x2","x3"),size = 2,replace = F)
t.test(eval(parse(text=s[1])),eval(parse(text=s[2])))
如果要随机使用任何变量,请尝试以下操作:
s = sample(x = c("x1","x2","x3"),size = 2,replace = F)
t.test(eval(parse(text=s[1])),eval(parse(text=s[2])))
我们可以使用成对t检验
以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
数据
我们可以使用成对t检验
以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
数据
与您刚才关于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)
与您刚才关于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)
通过使用两两t检验,必须调整alpha值。Bonferroni校正常用于农业,Holm有时用于医学。如果不进行这样的校正,一个人的差异会比应该的更显著。通过使用两两t检验,必须调整alpha值。Bonferroni校正常用于农业,Holm有时用于医学。没有这样的校正,一个人的差异比它应该的更显著。正是因为这个原因,才使用方差分析。正确。t、 这个测试对一对变量有效,你必须执行三个测试,在三次检查你的假设时传播错误。方差分析通过比较多个变量的假设来避免这种情况。如果你想用t.test做一次,那是不可能的。@TUSHAr,我完全理解!但我的问题是一个编程问题!我只是想知道我能不能让R中的t.test函数从编程的角度做我想做的事情?你可以使用pairwise.t.test并用一种可能的校正方法调整pvaluebonferroni@rnorouzian请核对我的答案。这能解决你的问题吗?正是因为这个原因,我们使用了方差分析。正确。t、 这个测试对一对变量有效,你必须执行三个测试,在三次检查你的假设时传播错误。方差分析通过比较多个变量的假设来避免这种情况。如果你想用t.test做一次,那是不可能的。@TUSHAr,我完全理解!但我的问题是一个编程问题!我只是想知道我能不能让R中的t.test函数从编程的角度做我想做的事情?你可以使用pairwise.t.test并用一种可能的校正方法调整pvaluebonferroni@rnorouzian请核对我的答案。这是否解决了您的问题?如果您想要类似的输出,请检查lower.tri。您所做的一切都可以写成:combnda.framex1,x2,x3,2,functionxt.testx[1],x[2],fc如果您想要类似的输出,请检查lower.tri。您所做的一切都可以写成:combnda.framex1,x2,x3,2,functionxt.testx[1],x[2],F