如何调整方程系数以获得y和x_i之间的高相关性?

skw*_*990 5 math

给出一组变量,x's.我想找到这个等式的系数值:

y = a_1*x_1 +... +a_n*x_n + c
Run Code Online (Sandbox Code Playgroud)

a_1,a_2,...,a_n所有未知数都在哪里.从数据框的角度考虑这个问题,我想为数据中y的每一行创建这个值.

我的问题是:对于y, a_1...a_n并且c都是未知的,我是否有办法a_1,...,a_ncorr(y,x_1), corr(y,x_2) .... corr(y,x_n)大于0.7 的条件下找到一组解决方案.为简单起见,在此将相关性作为Pearson相关性.我知道不会有独特的解决方案.但是,我如何构建一套a_1,...,a_n满足这一条件的解决方案呢?

花了一天时间来搜索这个想法,却无法获得任何信息.任何解决这个问题的编程语言都是受欢迎的,或至少有一些参考.

Chr*_*lor 4

不,一般来说是不可能的。在某些特殊情况下也许是可以的。

\n\n

给定 x\xe2\x82\x81, x\xe2\x82\x82, ... 你想找到 y = a\xe2\x82\x81x\xe2\x82\x81 + a\xe2\x82\x82x\xe2\ x82\x82 + ... + c 使得 y 和 x 之间的所有相关性都大于某个目标 R。由于相关性是

\n\n
Corr(y, xi) = Cov(y, xi) / Sqrt[ Var(y) * Var(xi) ]\n
Run Code Online (Sandbox Code Playgroud)\n\n

你的约束是

\n\n
Cov(y, xi) / Sqrt[ Var(y) * Var(xi) ] > R\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以重新排列为

\n\n
Cov(y, xi)\xc2\xb2 > R\xc2\xb2 * Var(y) * Var(xi)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这对我所有人来说都是如此。

\n\n

考虑只有两列 x\xe2\x82\x81 和 x\xe2\x82\x82 的简单情况,并进一步假设它们的均值均为零(因此您可以忽略常数 c)和方差 1,并且它们是不相关的。在这种情况下 y = a\xe2\x82\x81x\xe2\x82\x81 + a\xe2\x82\x82x\xe2\x82\x82 协方差和方差为

\n\n
Cov(y, x\xe2\x82\x81) = a\xe2\x82\x81\nCov(y, x\xe2\x82\x82) = a\xe2\x82\x82\nVar(x\xe2\x82\x81)    = 1\nVar(x\xe2\x82\x82)    = 1\nVar(y)     = (a\xe2\x82\x81)\xc2\xb2 + (a\xe2\x82\x82)\xc2\xb2\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以你需要同时满足

\n\n
(a\xe2\x82\x81)\xc2\xb2 > R\xc2\xb2 * ((a\xe2\x82\x81)\xc2\xb2 + (a\xe2\x82\x82)\xc2\xb2)\n(a\xe2\x82\x82)\xc2\xb2 > R\xc2\xb2 * ((a\xe2\x82\x81)\xc2\xb2 + (a\xe2\x82\x82)\xc2\xb2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

将这些不等式加在一起,你可以得到

\n\n
(a\xe2\x82\x81)\xc2\xb2 + (a\xe2\x82\x82)\xc2\xb2 > 2 * R\xc2\xb2 * ((a\xe2\x82\x81)\xc2\xb2 + (a\xe2\x82\x82)\xc2\xb2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这意味着为了满足两个不等式,必须使 R < Sqrt(1/2) (通过消除不等式两边的公因数)。因此,在这个简单的情况下,您可以做的最好的事情就是选择 a\xe2\x82\x81 = a\xe2\x82\x82 (只要它们相等,确切的值并不重要)并且两个相关性 Corr (y,a\xe2\x82\x81) 和 Corr(y,a\xe2\x82\x82) 将等于 0.707。在这种情况下,您无法同时在 y 和所有 x 之间获得高于此值的相关性。

\n\n

对于更一般的列情况n(每列均值为零、方差为 1 且列之间的相关性为零),您无法同时实现大于的相关性1 / sqrt(n)(如 @kazemakase 的评论中所指出的)。

\n\n

一般来说,自变量越多,y 和 x 之间的相关性就越低。另外(虽然我上面没有提到)x 的物质之间的相关性。如果它们总体上呈正相关,您将能够在 y 和 x 之间实现更高的目标相关性。如果它们通常不相关或负相关,则您只能实现 y 和 x 之间的低相关性。

\n