numpy.corrcoef#

numpy.corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value>, *, dtype=None)[原始碼]#

返回皮爾森積差相關係數。

請參考 cov 的文件以取得更多詳細資訊。相關係數矩陣 R 和共變異數矩陣 C 之間的關係為

\[R_{ij} = \frac{ C_{ij} } { \sqrt{ C_{ii} C_{jj} } }\]

R 的值介於 -1 和 1 之間,包含端點。

參數:
xarray_like

包含多個變數和觀測值的 1-D 或 2-D 陣列。x 的每一列代表一個變數,每一欄代表所有這些變數的單次觀測。另請參閱下方的 rowvar

yarray_like,選用

額外的一組變數和觀測值。y 的形狀與 x 相同。

rowvarbool,選用

如果 rowvar 為 True(預設值),則每一列代表一個變數,觀測值位於欄中。否則,關係會轉置:每一欄代表一個變數,而列包含觀測值。

bias_NoValue,選用

沒有作用,請勿使用。

自版本 1.10.0 起已棄用。

ddof_NoValue,選用

沒有作用,請勿使用。

自版本 1.10.0 起已棄用。

dtypedata-type,選用

結果的資料類型。依預設,返回資料類型將至少具有 numpy.float64 精度。

在版本 1.20 中新增。

返回:
Rndarray

變數的相關係數矩陣。

另請參閱

cov

共變異數矩陣

註解

由於浮點數捨入,產生的陣列可能不是 Hermitian 矩陣,對角線元素可能不是 1,且元素可能不滿足不等式 abs(a) <= 1。實部和虛部會被裁剪到區間 [-1, 1],以嘗試改善這種情況,但在複數情況下幫助不大。

此函數接受但會捨棄引數 biasddof。這是為了向後相容此函數的先前版本。這些引數對函數的傳回值沒有影響,在此版本和先前的 NumPy 版本中可以安全地忽略它們。

範例

>>> import numpy as np

在此範例中,我們生成兩個隨機陣列 xarryarr,並計算行向和列向的皮爾森相關係數 R。由於 rowvar 預設為 true,我們首先找到 xarr 變數之間的行向皮爾森相關係數。

>>> import numpy as np
>>> rng = np.random.default_rng(seed=42)
>>> xarr = rng.random((3, 3))
>>> xarr
array([[0.77395605, 0.43887844, 0.85859792],
       [0.69736803, 0.09417735, 0.97562235],
       [0.7611397 , 0.78606431, 0.12811363]])
>>> R1 = np.corrcoef(xarr)
>>> R1
array([[ 1.        ,  0.99256089, -0.68080986],
       [ 0.99256089,  1.        , -0.76492172],
       [-0.68080986, -0.76492172,  1.        ]])

如果我們加入另一組變數和觀測值 yarr,我們可以計算 xarryarr 中變數之間的行向皮爾森相關係數。

>>> yarr = rng.random((3, 3))
>>> yarr
array([[0.45038594, 0.37079802, 0.92676499],
       [0.64386512, 0.82276161, 0.4434142 ],
       [0.22723872, 0.55458479, 0.06381726]])
>>> R2 = np.corrcoef(xarr, yarr)
>>> R2
array([[ 1.        ,  0.99256089, -0.68080986,  0.75008178, -0.934284  ,
        -0.99004057],
       [ 0.99256089,  1.        , -0.76492172,  0.82502011, -0.97074098,
        -0.99981569],
       [-0.68080986, -0.76492172,  1.        , -0.99507202,  0.89721355,
         0.77714685],
       [ 0.75008178,  0.82502011, -0.99507202,  1.        , -0.93657855,
        -0.83571711],
       [-0.934284  , -0.97074098,  0.89721355, -0.93657855,  1.        ,
         0.97517215],
       [-0.99004057, -0.99981569,  0.77714685, -0.83571711,  0.97517215,
         1.        ]])

最後,如果我們使用選項 rowvar=False,則欄現在被視為變數,我們將找到 xarryarr 中變數之間的列向皮爾森相關係數。

>>> R3 = np.corrcoef(xarr, yarr, rowvar=False)
>>> R3
array([[ 1.        ,  0.77598074, -0.47458546, -0.75078643, -0.9665554 ,
         0.22423734],
       [ 0.77598074,  1.        , -0.92346708, -0.99923895, -0.58826587,
        -0.44069024],
       [-0.47458546, -0.92346708,  1.        ,  0.93773029,  0.23297648,
         0.75137473],
       [-0.75078643, -0.99923895,  0.93773029,  1.        ,  0.55627469,
         0.47536961],
       [-0.9665554 , -0.58826587,  0.23297648,  0.55627469,  1.        ,
        -0.46666491],
       [ 0.22423734, -0.44069024,  0.75137473,  0.47536961, -0.46666491,
         1.        ]])