【问题标题】:T-test between a group of columns and a sorted list一组列和排序列表之间的 T 检验
【发布时间】:2021-10-15 10:59:06
【问题描述】:

这是我的情况:11 个变量列与 1 个列。

我想为 11 列中的每一列测试单列 [将其排序为 0 和 1 以创建两个组]。单列和 11 列的长度不同,不是同调的。

我试过了:

> TTest1 <- t.test(A$Column1, Bsorted0, var.equal = FALSE)
> View(TTest1) 

这给了我一个 7.681668e-05 的 p 值

但是我怎样才能循环这个以便让 A$column1,2,3,4,5...每个都用 Bsorted0 测试?这是正确的方法吗?

谢谢

【问题讨论】:

  • 您可能需要运行 var.test() 来查看 var.equal 标志是 TRUE 还是 FALSE

标签: r t-test


【解决方案1】:

使用lapply 调用匿名函数\(x) (R4.1.0) 或function(x)(R 的早期版本)循环遍历列表。

TTest1_list <- lapply(A, \(x) {
  tryCatch(t.test(x, Bsorted0, var.equal = FALSE),
           error = \(e) e)
})

names(TTest1_list) <- names(A)
ok <- !sapply(TTest1_list, inherits, "error")
Err_list <- TTest1_list[!ok]
TTest1_list <- TTest1_list[ok]

然后,要提取统计数据或 p 值,请在测试列表中使用 sapply

stat <- sapply(TTest1_list, `[[`, 'statistic')
pval <- sapply(TTest1_list, `[[`, 'p.value')

要查看错误,请将conditionMessage 应用于错误列表。

lapply(Err_list, conditionMessage)

【讨论】:

  • 嗨!感谢您的回答.. 它给了我这个错误: if (stderr
猜你喜欢
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 2020-08-30
  • 2014-02-22
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多