【问题标题】:Performing statistics on multiple columns of data对多列数据执行统计
【发布时间】:2012-12-25 16:23:07
【问题描述】:

我正在尝试对包含数百到数千列的数据表进行某些统计,例如 t 检验。数据的格式设置为我比较的两组值在同一列中

所以,基本上我的第一次尝试是像下面这样剪切和粘贴;

NN <-read.delim("E:/output.txt")
View(NN)
attach(NN)

#output p-values of 100 t-tests 
sink(file="E:/ttest.txt", append=TRUE, split=FALSE)
t.test(Tree1[1:13],Tree1[14:34])$p.value
t.test(Tree2[1:13],Tree2[14:34])$p.value
t.test(Tree3[1:13],Tree3[14:34])$p.value

.... ... .. .

随着数据的增长,这变得越来越不切实际。有没有办法通过每一列依次循环这些 t 检验并将输出保存到文件中?

提前致谢。

【问题讨论】:

  • Tree1Tree2 等是什么?
  • @Dwin - 你鼓励我在回答中添加免责声明 - 干得好。
  • @Jack Tree1、Tree2 等只是列名。

标签: r loops statistics multiple-columns


【解决方案1】:

感谢所有输入。只是一些澄清;当我一次运行数百个 t 检验时,他们每次都在比较独立的数据集。因此,例如,第 1 列 (Tree1) 中的值,第 1:50 行将仅与同一列中的第 51:100 行进行一次比较,并且不再使用。第 2 列(Tree2)也是如此,依此类推。类型 1 错误仍然是一个问题吗?在我看来,我基本上是一次对单独的数据集进行 t 检验。

话虽如此,我已经想出了一种使用 for 循环执行此操作的方法,结果与单独对每一列进行 t 测试时的结果相对应。

for (i in 1:100)

  print (t.test(mydata[1:50, i],mydata[51:100, i])$p.value)

end;

唯一的问题是我的输出前面总是有一个 [1]。

【讨论】:

  • 那为什么要使用for 循环呢?我使用lapply 发布的答案给出了完全相同的结果,但也会打印出变量标签。它也不需要像for 解决方案那样指定1:ncol(mydata)。另外,为什么你有一个end; 声明?这是与 R 中的时间序列数据相关的完全不同的函数!为了澄清 re: type 1 错误,每组数据是否独立并不重要。没有针对性地挖掘 100 组分析以获得显着结果,事先推理只是要求找到虚假结果。
【解决方案2】:

不确定这是否是一种明智的方法,或者它是否可以正常工作,但请尝试mapply 使用索引部分,如下所示:

test <- data.frame(a=1:100,b=101:200)

testa <- test[1:50, ]
testb <- test[51:100, ]
t.test2 <- function(x, y) t.test(x, y)[["p.value"]]
mapply(t.test2, testa, testb)

编辑:我使用了 thelatemail 的数据,因此具有可比性。他的警告是正确的。

【讨论】:

    【解决方案3】:

    lapply 将通过匿名函数将您带到那里:

    > test <- data.frame(a=1:100,b=101:200)
    > lapply(test,function(x) t.test(x[1:50],x[51:100])$p.value)
    $a
    [1] 2.876776e-31
    
    $b
    [1] 2.876776e-31
    

    我应该为良好的实践尽自己的一份力量,同时还要注意,一次运行 100 次 t-tests 可能会出现 1 类错误和其他不良情况。 孤立地提取 p 值也可能是一个非常糟糕的举动。

    【讨论】:

    • “请注意,一次运行 100 次 t-tests 充满了 1 类错误的可能性”+1 表示警告。
    猜你喜欢
    • 2015-06-02
    • 2013-10-20
    • 2021-08-07
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    相关资源
    最近更新 更多