【问题标题】:How do I do a pairwise t-test on data based on paired interactions of one column (i.e. factor)?如何基于一列(即因子)的配对交互对数据进行配对 t 检验?
【发布时间】:2013-11-01 21:38:46
【问题描述】:

我有一个逗号分隔的 .csv (here) 数据集。在这个数据集中,我有测量数据(“值”列),这些数据是由测量它的站点(“站点”)和拍摄日期考虑的。我要做的是对每个位置组合(“INLET EAST”/“SF EAST 1”、“INLET EAST”/“OUTLET EAST”等)的数据值进行成对 t 检验。我手动运行这些迭代没有问题,但我不知道如何告诉 t.test 函数如何根据常见的 Date 值配对每组数据。有人有任何指示吗?我也不反对任何关于如何在“站点”因素中简化迭代 t.test 过程的想法。感谢您在我在这里的几个月里提供的所有帮助。

对于那些链接不起作用的人,我的数据具有以下结构:

Date     Site        Slope    Location    Season    variable    value
15628    Inlet East  H        Inlet       W         TKN         1.92
15694    Inlet East  H        Inlet       W         TKN         0.98
15628    Outlet East L        Outlet      W         TKN         0.93

...等等。

【问题讨论】:

  • 也许您可以使用 ANOVA 和事后检验来分析您的数据,以查看哪些治疗方法彼此不同?

标签: r statistics


【解决方案1】:

这是一个如何对鸢尾花数据集的每个物种进行 t 检验的示例

library(plyr)
foo <- function(df) {
  t.test(df$Sepal.Length, df$Sepal.Width, data = df)
}
models <- dlply(iris, .(Species), foo)
models

【讨论】:

  • 这很有用,但我的数据值都在一个熔化的列中。我真的不能用t.test(values, values) 喂 t.test。
【解决方案2】:

这是一个函数形式的提案,我已将您的文件 data.csv 读取为“myData”。您可以根据需要更改自变量的名称(或编号)。在您的情况下,我将改进该功能,为分组数据的正态分布添加控件。

foo <- function(dataFrame, dataDepV, dataIndepV){
  if(is.character(dataDepV))   dataDepV   <- which(names(dataFrame)==dataDepV)
  if(is.character(dataIndepV)) dataIndepV <- which(names(dataFrame)==dataIndepV)
  allFactors <- unique(dataFrame[, dataIndepV])

  foo2 <- function(x)
  {
    group1 <- dataFrame[dataFrame[, dataIndepV] == x[1], dataDepV]
    group2 <- dataFrame[dataFrame[, dataIndepV] == x[2], dataDepV]
    myResult <- t.test(group1, group2)
    return(myResult)
  }

  myEndResult           <- combn(allFactors, 2, foo2)
  rownames(myEndResult) <- c("statistic","parameter","p.value","conf.int","estimate",
                             "null.value","alternative","method","data.name")
  colnames(myEndResult) <- combn(allFactors, 2, function(x) paste(x[1],"vs.",x[2]))
  return(myEndResult)

}

A <- foo(dataFrame=myData, dataDepV="value", dataIndepV="Site")

View(A) # should include the result dataframe that you wanted

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2022-12-01
    • 2023-01-31
    • 2019-01-25
    • 2015-05-17
    相关资源
    最近更新 更多