观察R中数千个样品的平均差异是否具有统计学意义

时间:2016-01-30 00:18:24

标签: r statistics

我对R的熟练程度基本上是基本的,所以如果我在软件上无法提出要求,请耐心等待。

我有以下数据:

x1 x2 x3 y1 y2 y3
5  4  3  9  8  7
0  1  9  4  2  1
2  1  2  3  2  2
3  3  1  2  3  4

这样可以持续大约27,000行。 您可以将这些视为临床试验中的反应,其中x1,x2,x3代表患者的x组,y1,y2,y3代表y组患者。 有人问我是否可以看出组x和组y之间的平均差异对于~27,000行中的每一行(可能是使用t检验)是否具有统计显着性,并且他们是否可以将p值显示为单独的列。所以它看起来像这样:

x1 x2 x3 y1 y2 y3 p-value
5  4  3  9  8  7  0.7780
0  1  9  4  2  1  0.2404
2  1  2  3  2  2  0.2311
3  3  1  2  3  4  0.1113

对我来说这样做似乎是不合理的,但是我想知道我是否能基本上执行~27,000 t.tests(在x1 + x2 + x3和y1 + y2 + y3之间)并且有一列显示每个测试的p值作为相邻列。或者即使有另一个更好的方法来衡量重要性而不使用t.test。谢谢。

1 个答案:

答案 0 :(得分:0)

假设这些组的长度相等:

getPValue <- function(row)
{
  l <- length(row)/2
  x <- row[1:l]
  y <- row[-(1:l)]
  fit <- t.test(x,y)
  return(fit$p.value)
}

data <- cbind(data,apply(data,1,getPValue))

编辑:

如果您还要附加每行测试的绝对平均差异,您可以使用:

getPValue <- function(row)
{
  l <- length(row)/2
  x <- row[1:l]
  y <- row[-(1:l)]
  fit <- t.test(x,y)
  return(fit$p.value)
}

getMeanDiff <- function(row)
{
  l <- length(row)/2
  x <- row[1:l]
  y <- row[-(1:l)]
  return(abs(mean(x)-mean(y)))
}

diff <- apply(data,1,getMeanDiff)
p.value <-apply(data,1,getPValue)

data <- data.frame(cbind(data,diff,p.value))