KDB 中的空感知协方差矩阵

问题描述

我正在研究 Nick Psaris 的 Funq,但需要一个空感知函数来制作协方差矩阵。我将用它来创建一个马氏距离矩阵。 他提供了一些空感知函数

navg = 空感知平均

nvar null 感知 var

nsvar = 空感知样本变量

有什么建议吗?

解决方法

这是我想出的:

nSCovMatrix:{[matrix]
    //takes table or array
    //null aware Sample Covariance Matrix
    $[98h=type matrix;matrix:"f"$(flip matrix[cols matrix]);matrix:"f"$matrix];
    corMatrix:u cor/:\:u: flip matrix;
    sd:sqrt nsvar[matrix]; //standard dev of each variable
    diagMatrix:sd*{x=/:x}til first count each dataSet;
    :covMatrix:(diagMatrix) mmu corMatrix mmu (diagMatrix);
 };

我找到相关矩阵并将其转换为协方差矩阵,方法是取每个变量的 std dev,用 s.d. 制作一个对角矩阵,然后将其与相关矩阵相乘两次。虽然远未优化