纽比·马·柯夫有缺失值的成对相关?

2024-06-16 19:03:34 发布

您现在位置:Python中文网/ 问答频道 /正文

示例数据集(行是从大得多的矩阵中随机抽取的)

import numpy as np

test = [[np.nan, np.nan, 0.217, 0.562],
        [np.nan, np.nan, 0.217, 0.562],
        [0.269, 0.0, 0.217, 0.562],
        [np.nan, np.nan, 0.217, -0.953],
        [np.nan, np.nan, 0.217, -0.788],
        [0.75, 0.0, 0.217, 0.326],
        [0.207, 0.0, 0.217, 0.814],
        [np.nan, np.nan, 0.217, 0.562],
        [np.nan, np.nan, 0.217, -0.022],
        [np.nan, np.nan, 0.217, 0.562],
        [np.nan, np.nan, 0.217, -0.953],
        [np.nan, np.nan, 0.217, -0.953],
        [0.078, 0.0, 0.217, -0.953],
        [np.nan, np.nan, 0.217, -0.953],
        [0.078, 0.0, 0.217, 0.562]]

maskedarr = np.ma.array(test)

np.ma.cov(maskedarr,rowvar=False,allow_masked=True)

[[-- -- -- --]
 [-- -- -- --]
 [-- -- 0.0 0.0]
 [-- -- 0.0 0.554]]

但是,如果我用R

^{pr2}$

我得到了一个完全不同的矩阵。如果两两相关是在移除nan的情况下得到的,那么我希望类似R的答案-numpy.ma.cov说,allow_masked=True将允许计算这些成对关联,但似乎并非如此。我错过什么了吗?在


Tags: 数据testimportnumpytrue示例asnp
1条回答
网友
1楼 · 发布于 2024-06-16 19:03:34

您的maskedarr没有任何值被屏蔽。在

>>> maskedarr.mask
False

初始化数组时需要包含mask参数。在

^{pr2}$

现在maskedarr.mask如下所示。在

>>> maskedarr.mask
array([[ True,  True, False, False],
       [ True,  True, False, False],
       [False, False, False, False],
       [ True,  True, False, False],
       [ True,  True, False, False],
       [False, False, False, False],
       [False, False, False, False],
       [ True,  True, False, False],
       [ True,  True, False, False],
       [ True,  True, False, False],
       [ True,  True, False, False],
       [ True,  True, False, False],
       [False, False, False, False],
       [ True,  True, False, False],
       [False, False, False, False]], dtype=bool)

这次做numpy.ma.cov时:

>>> np.ma.cov(maskedarr,rowvar=False,allow_masked=True)
masked_array(data =
 [[0.0769732996251 0.0 0.0 0.0428294015418]
 [0.0 0.0 0.0 0.0]
 [0.0 0.0 0.0 0.0]
 [0.0428294015418 0.0 0.0 0.553648402899]],
             mask =
 [[False False False False]
 [False False False False]
 [False False False False]
 [False False False False]],
       fill_value = 1e+20)

相关问题 更多 >