【问题标题】:Correlation matrix with missing data缺失数据的相关矩阵
【发布时间】:2019-10-17 14:04:35
【问题描述】:

我的数据具有以下结构,我想从中获取相关矩阵,但缺少一些数据。我使用如下代码不会返回正确的输出。 任何帮助,将不胜感激。

输入c_retnumpy 数组:

1   2    3    4    5   6 
              4    5   6
1   2    3    4    5   6
1   2    3    4    5   6
                   5   6
1   2    3    4    5   6

即使在缺少数字的情况下,所需的输出也会计算相关性,尽管相关系数是在较小的数据集上计算的(取决于可用的数据)。在这种情况下,第二行(只有最后 3 个数据点)与其他行的相关性将通过在数字 4 处切割所有其他行来计算。除了需要相同的第 5 行大小为第二行。

我的代码:

 corr_mat = np.corrcoef(c_ret, rowvar=True)

输出:

1   1    1    1    1   1 

1   1    1    1    1   1 
1   1    1    1    1   1 

1   1    1    1    1   1 

希望的输出:

1   1    1    1    1   1 
1   1    1    1    1   1 
1   1    1    1    1   1 
1   1    1    1    1   1 
1   1    1    1    1   1 
1   1    1    1    1   1 

【问题讨论】:

    标签: python numpy correlation


    【解决方案1】:

    你可以试试np.ma.corrcoefnp.ma.masked_invalid

    c_ret = np.array([[ 1.,  2.,  3.,  4.,  5.,  6.],
                      [np.nan, np.nan, np.nan,  4.,  5.,  6.],
                      [ 1.,  2.,  3.,  4.,  5.,  6.],
                      [ 1.,  2.,  3.,  4.,  5.,  6.],
                      [np.nan, np.nan, np.nan, np.nan,  5.,  6.],
                      [ 1.,  2.,  3.,  4.,  5.,  6.]])
    
    
    np.ma.corrcoef(np.ma.masked_invalid(c_ret), rowvar=True).data
    
    Out[293]:
    array([[1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.]])
    

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2014-04-29
      • 1970-01-01
      相关资源
      最近更新 更多