R:在因素对之间进行 t 检验

标签 r

我有一个 R 数据框,其中的因子变量有 8 个级别(已排序)。我想在级别 1 和 2、3 和 4、5 和 6 以及 7 和 8 之间进行 t 检验。虽然我可以对数据进行子集化以提取每对类别,但我想知道是否有更简单的方法它。想不通。尝试了以下方法,但它提示长度不同(每个级别有不同数量的观察值):

t.test(var1 ~ levels(factorvar)[1:2], data = mydf)

最佳答案

我认为该错误可能是因为 levels(factorvar)[1:2] 仅返回两个值“1”和“2”,但 t.test 期望~两侧向量的长度相同。换句话说,这不是每个因子水平具有不同数量的观察值的问题。相反,例如,如果 factorvar=1 有 40 个 var1 值,而 factorvar 有 50 个 var1 值code>=2,那么在~两边就需要一个长度为90的向量。

试试这个:

t.test(var1 ~ factorvar, data=mydf[mydf$factorvar %in% c(1,2),])

您还可以创建一个函数,这样您就不必为每个因素组合键入所有代码:

# Function to return p-values from t-test between two factor levels
my.t = function(fac1, fac2){
  t.test(mydf$var1[mydf$factorvar==fac1], 
         mydf$var1[mydf$factorvar==fac2])$p.value
}

# Run the function on factor levels 1 and 2
my.t(1,2)

# Do all four at once
mapply(my.t, seq(1,7,2), seq(2,8,2))

如果您想返回每对因子水平的 t 检验的整个输出(而不仅仅是 p 值),请从上面的函数中删除 $p.value并运行添加了 SIMPLIFY=FALSEmapply

这是一个编码网站,而不是一个统计建议网站,但也要小心multiple comparisons .

关于R:在因素对之间进行 t 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27930881/

相关文章:

r - R中的多类分类

r - 推特:一次获得多个用户的关注者

使用表格在 r 中重现嵌套的 Excel 数据透视表

jquery - R Shiny - 通过列排序禁用数据表中的特定行

r - 如何使用模型名称和变量列表来计算表及其预测?

r - 通过排列两个变量(dplyr)添加计数器列

r - 找不到 gfortran 4.8 来构建包

r - 如何从MODISTools中的超时错误中恢复

r - 如何格式化confusionMatrix插入符号包

r - 解析和评估 R 中的字符串表达式列?