3

尝试使用 MA 归一化(http://en.wikipedia.org/wiki/MA_plotx )对两个变量和R 中的 loess 进行如下处理:y

> x = rnorm(100) + 5
> y = x + 0.6 + rnorm(100)*0.8
> m = log2(x/y)
> a = 0.5*log(x*y)

我想以平均值m为 0 的方式对 x 和 y 进行归一化,就像在标准 MA 归一化中一样,然后反算正确的 x 和 y 值。首先在 MA 上运行黄土:

> l = loess(m ~ a)

那么获得校m正值的方法是什么?这个对吗?

> mc <- predict(l, a)
# original MA plot
> plot(a,m)
# corrected MA plot
> plot(a,m-mc)

我不清楚在对象predict的情况下实际上做了什么,以及它与在返回的对象中loess使用有何不同- 有人可以解释一下吗?最后,我怎样才能根据这个更正计算新的值?l$residualslloessxy

4

1 回答 1

0

首先,是的,您提出的方法得到了正确的m值。

关于预测函数:是的,l$residualsm - fitted(l),并且m - predict(l)都给出相同的结果:校正后的 m 值。但是,该predict函数更通用:它将任何新值作为输入。如果您只想使用数据的一个子集来拟合黄土,然后对数据的整体进行预测(例如,当使用加标标准时),这很有用。

最后,您如何根据此更正计算新值x和值?y如果您将数据转换为日志空间,通过创建两个新变量x1 <- log2(x)y1 <- log2(y),它会变得更容易查看。由于我们在对数空间中,计算ma更简单:

  • m <- x1 - y1
  • a <- (x1 + y1)/2

现在,为了根据拟合的黄土模型更正您的数据,而不是m通过您的更正来更新变量mc,您可以更新x1andy1代替。放:

  • x1 <- x1 - mc / 2
  • y1 <- y1 + mc / 2

此更新与更新具有相同的效果m <- m - mc(因为m将重新计算为更新后的x1和之间的差异y1)并且对a值没有影响。

要获取更正后的数据,请通过返回2^x1和转换它们2^y1

这是 affy 包中 normalize.loess 函数的作者使用的方法,最初在此处描述(并且包括循环查看所有变量对而不是本例中的单个变量对的能力): http:/ /web.mit.edu/~r/current/arch/i386_linux26/lib/R/library/limma/html/normalizeCyclicLoess.html

于 2018-01-27T00:39:37.173 回答