如何在 kdb 中动态计算相关性
How can I calculate correlation dynamically in kdb
我有一个 table 的 returns,我想计算每 n 行的相关性,但我不知道该怎么做。为了更说明问题,我的 table t 是
sym1
sym2
sym3
sym4
3
4
5
1
0
-1
6
4
-3
10
8
9
-4
19
-1
6
如何计算第 1-3 行的 sym1 和 sym2/sym3/sym4 之间的相关性,然后是第 2-4 行等?
目前我只能指定列然后计算,但我正在尝试找到一种方法来修复 sym1 并遍历 sym2-4。这是我当前的代码
(cor).'flip flip each {(til x)xprev\:y}[3;]each (sym1;sym2) from t
这是一个可能适合您的解决方案。
q)update s1s2:(cor).'flip{-3#'reverse{-1_x}\[x;y]}[-1+count i]each(sym1;sym2)from t
sym1 sym2 sym3 sym4 s1s2
------------------------------
3 4 5 1
0 -1 6 4 1
-3 10 8 9 -0.5447048
-4 19 -1 6 -0.9751578
这只是在列之间发现的一种相关性,即 sym1
和 sym2
。前两个结果可以丢弃,因为它们没有相关性所需的 3 个值。
我有一个 table 的 returns,我想计算每 n 行的相关性,但我不知道该怎么做。为了更说明问题,我的 table t 是
sym1 | sym2 | sym3 | sym4 |
---|---|---|---|
3 | 4 | 5 | 1 |
0 | -1 | 6 | 4 |
-3 | 10 | 8 | 9 |
-4 | 19 | -1 | 6 |
如何计算第 1-3 行的 sym1 和 sym2/sym3/sym4 之间的相关性,然后是第 2-4 行等?
目前我只能指定列然后计算,但我正在尝试找到一种方法来修复 sym1 并遍历 sym2-4。这是我当前的代码
(cor).'flip flip each {(til x)xprev\:y}[3;]each (sym1;sym2) from t
这是一个可能适合您的解决方案。
q)update s1s2:(cor).'flip{-3#'reverse{-1_x}\[x;y]}[-1+count i]each(sym1;sym2)from t
sym1 sym2 sym3 sym4 s1s2
------------------------------
3 4 5 1
0 -1 6 4 1
-3 10 8 9 -0.5447048
-4 19 -1 6 -0.9751578
这只是在列之间发现的一种相关性,即 sym1
和 sym2
。前两个结果可以丢弃,因为它们没有相关性所需的 3 个值。