【问题标题】:How can i calculate correlation matrix?如何计算相关矩阵?
【发布时间】:2013-11-13 15:55:57
【问题描述】:

我有一个包含a, b, c 列的表格。我可以使用函数形式以某种方式计算cor[a;a]cor[a;b]cor[a;c] 的相关矩阵吗?

?[table; (); 0b; (`aa`ab`ac)!((cor; `a; `a); (cor; `a; `b);(cor; `a; `b));

如何生成最后一个参数的列表? (cor;a;b)

【问题讨论】:

    标签: kdb


    【解决方案1】:
    q)show t:([]a:5?1.0;b:5?1.0;c:5?1.0)
    a          b         c
    ------------------------------
    0.389056   0.949975  0.6919531
    0.391543   0.439081  0.4707883
    0.08123546 0.5759051 0.6346716
    0.9367503  0.5919004 0.9672398
    0.2782122  0.8481567 0.2306385
    
    q)u cor/:\:u:flip t
     | a          b          c
    -| --------------------------------
    a| 1          -0.1328262 0.6671159
    b| -0.1328262 1          -0.1830702
    c| 0.6671159  -0.1830702 1
    

    【讨论】:

      【解决方案2】:

      所以手动输入表格:

      q)t:([] a:10?10; b:10?10; c:10?10)
      q)?[t;();0b;`aa`ab`ac!((cor;`a;`a);(cor;`a;`b);(cor;`a;`c))]
         aa ab         ac
         -----------------------
         1  -0.2530506 0.7966834
      

      如果您想生成最后一个参数,假设您希望第一列的所有排列与所有列相结合:

      q)a:{(`$raze'[string x])!(cor),/:x}{x[0],/:x}cols t;
      q)?[t;();0b;a]
         aa ab         ac
         -----------------------
         1  -0.2530506 0.7966834
      

      如果您想要所有列排列:

      q)a:{(`$raze'[string x])!(cor),/:x}{x cross x}cols t
      q)?[t;();0b;a]
         aa ab         ac        ba         bb bc        ca        cb        cc
         ----------------------------------------------------------------------
         1  -0.2530506 0.7966834 -0.2530506 1  -0.268787 0.7966834 -0.268787 1
      

      【讨论】:

        猜你喜欢
        • 2012-10-01
        • 2016-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-24
        • 1970-01-01
        • 2022-08-06
        相关资源
        最近更新 更多