4
實施例的數據集(行隨機從一個更大的矩陣中提取)numpy.ma.cov - 缺失值的成對相關性?
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,
import rpy2.robjects as robjects
robjects.globalenv['maskedarr'] = robjects.FloatVector(maskedarr.T.flatten())
robjects.r('''
dim(maskedarr) <- c(%d,%d)
maskedarr[] <- replace(maskedarr,!is.finite(maskedarr),NA)
''' % maskedarr.shape)
robjects.r('''
print(cov(maskedarr,use="pairwise"))
''')
[,1] [,2] [,3] [,4]
[1,] 0.0769733 0 0 0.0428294
[2,] 0.0000000 0 0 0.0000000
[3,] 0.0000000 0 0 0.0000000
[4,] 0.0428294 0 0 0.5536484
我得到一個非常不同的矩陣。如果成對相關僅與nan
一起被刪除,那麼我會期望類似R的回答 - numpy.ma.cov
表示allow_masked=True
將允許計算這些成對相關性,但似乎並非如此。我錯過了什麼嗎?
啊,我覺得我是在之前對這個燒燬。明確指定掩碼的要求看起來很不直觀...... – hatmatrix
@crippledlambda:最近(最近2個月左右),在numpy郵件列表上有關於掩碼,缺失值和應該採取哪個方向的討論(有時是激烈的討論) )。我想,如果你有任何建議,它可能(現在仍然)是一個好時機,以徵求你的意見。 – lgautier
@Igautier ...謝謝 - 我應該可以列入名單... – hatmatrix