从 table 构建一个具有非对齐日期的相关矩阵
Construct a correlation matrix from table with non-aligned dates
我查看了 this post 以计算给定输入 table 的相关矩阵。
我的问题是我的列未始终对齐。
例如:
([]date:.z.d+til 100;a:100?10f;b:(10#0n),90?1f;c:(90?1f),(10#0n))
date a b c
---------------------------------------------
2019.11.18 6.018138 0.1357346
2019.11.19 2.365495 0.9805366
2019.11.20 0.5136894 0.2821858
2019.11.21 9.013581 0.4946025
2019.11.22 1.0842 0.967023
2019.11.23 4.543989 0.6901084
2019.11.24 4.597627 0.6303566
2019.11.25 2.18889 0.01415349
2019.11.26 3.050233 0.2783062
2019.11.27 5.259109 0.6675121
2019.11.28 5.175593 0.1684333 0.3706485
2019.11.29 5.14162 0.5885103 0.4183277
我不想在计算相关矩阵之前删除所有包含空值的行,因为我有很多列并且所有日期的交集可能是空集。
相反,我想应用 n*(n-1)
操作来填充我自己构建的相关矩阵,方法是采用 a
和 b
的联合系列,并将导致我的相关矩阵 C
在 C[1,2]
和 C[2,1]
.
我坚持n*(n-1)
操作因为我上面提到的post中的答案似乎做了n*n
操作(我的n
大致等于700
).
这可能会让您找到接近您正在寻找的东西:
q)m:(1_cols t)!();
q){x{m::m,'key[x]!1f,value(1_x)cor\:y;1_x}/x}1_flip t
q)m^flip m
| a b c
-| ----------------------------------
a| 1 0.01418217 0.04938382
b| 0.01418217 1 -0.06297328
c| 0.04938382 -0.06297328 1
仅使用 3 个 cor 操作。
我查看了 this post 以计算给定输入 table 的相关矩阵。
我的问题是我的列未始终对齐。
例如:
([]date:.z.d+til 100;a:100?10f;b:(10#0n),90?1f;c:(90?1f),(10#0n))
date a b c
---------------------------------------------
2019.11.18 6.018138 0.1357346
2019.11.19 2.365495 0.9805366
2019.11.20 0.5136894 0.2821858
2019.11.21 9.013581 0.4946025
2019.11.22 1.0842 0.967023
2019.11.23 4.543989 0.6901084
2019.11.24 4.597627 0.6303566
2019.11.25 2.18889 0.01415349
2019.11.26 3.050233 0.2783062
2019.11.27 5.259109 0.6675121
2019.11.28 5.175593 0.1684333 0.3706485
2019.11.29 5.14162 0.5885103 0.4183277
我不想在计算相关矩阵之前删除所有包含空值的行,因为我有很多列并且所有日期的交集可能是空集。
相反,我想应用 n*(n-1)
操作来填充我自己构建的相关矩阵,方法是采用 a
和 b
的联合系列,并将导致我的相关矩阵 C
在 C[1,2]
和 C[2,1]
.
我坚持n*(n-1)
操作因为我上面提到的post中的答案似乎做了n*n
操作(我的n
大致等于700
).
这可能会让您找到接近您正在寻找的东西:
q)m:(1_cols t)!();
q){x{m::m,'key[x]!1f,value(1_x)cor\:y;1_x}/x}1_flip t
q)m^flip m
| a b c
-| ----------------------------------
a| 1 0.01418217 0.04938382
b| 0.01418217 1 -0.06297328
c| 0.04938382 -0.06297328 1
仅使用 3 个 cor 操作。