Stan 中的对称回归

Symmetric Regression In Stan

我需要数据点的向量(组织 A 和 B 中的基因表达),我想看看它们是否有任何系统性偏差(基因 X 在 A 和 B 中的相同表达)。

当时的想法是在 stan 中建立一个简单的回归模型,看看斜率 (beta) 的后验概率与 1 有多少重叠。

model {
  for (n in 1:N){  
    y[n] ~ normal(alpha[i[n]] + beta[i[n]] * x[n], sigma[i[n]]);
  }
}

然而,根据哪个向量是 x 和哪个是 y,我得到不同的结果,其中一个斜率大约为 1 而另一个不是(参见图片,其中 x 和 y 交换,彩色线代表我得到的回归来自模型(灰色是斜率 1))。正如我发现的那样,对于像普通最小二乘法这样的回归方法来说,这是一个典型的事情,如果一个值依赖于另一个值,这是有道理的。但是,这里没有依赖关系,两个向量是“相等的”。

现在的问题是,在 stan 中执行对称回归的合适模型是什么。


按照 LukasNeugebauer 的建议首先标准化数据并在没有拦截的情况下工作,并没有解决问题。

我作弊了一下,找到了解决办法:

当您 rotate the coordinate system 旋转 45 度时,新的 y 轴 (y') 表示等量的 x 和 y 信息。因此,假设仅在新 y 轴上的方差涉及 x 和 y。

x' =  x*cos((pi/180)*45) + y*sin((pi/180)*45)
y' = -x*sin((pi/180)*45) + x*cos((pi/180)*45)

以上模型现在产生对称结果。其中斜率为 0,表示旧系统中的斜率为 1。