jax.numpy.corrcoef#

jax.numpy.corrcoef(x, y=None, rowvar=True)[原始碼]#

計算 Pearson 相關係數。

JAX 版本的 numpy.corrcoef() 實作。

這是由 jax.numpy.cov() 計算的樣本共變異數的標準化版本。對於樣本共變異數 \(C_{ij}\),相關係數為

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

它們的建構方式使得值滿足 \(-1 \le R_{ij} \le 1\)

參數:
  • x (ArrayLike) – 形狀為 (M, N) (如果 rowvar 為 True) 或 (N, M) (如果 rowvar 為 False) 的陣列,表示 M 個變數的 N 個觀測值。x 也可能是一維的,表示單一變數的 N 個觀測值。

  • y (ArrayLike | None) – 額外觀測值的選用集合,格式與 m 相同。如果指定,則 y 會與 m 組合,即對於預設的 rowvar = True 情況,m 會變成 jnp.vstack([m, y])

  • rowvar (bool) – 如果為 True (預設值),則 m 的每一列代表一個變數。如果為 False,則每一欄代表一個變數。

傳回:

形狀為 (M, M) 的共變異數矩陣。

傳回型別:

Array

另請參閱

範例

考量以下兩個完全相關的變數的觀測值。在這種情況下,相關矩陣是 2x2 的 1 矩陣

>>> x = jnp.array([[0, 1, 2],
...                [0, 1, 2]])
>>> jnp.corrcoef(x)
Array([[1., 1.],
       [1., 1.]], dtype=float32)

現在考量以下兩個完全負相關的變數的觀測值。在這種情況下,相關矩陣的非對角線上有 -1

>>> x = jnp.array([[-1,  0,  1],
...                [ 1,  0, -1]])
>>> jnp.corrcoef(x)
Array([[ 1., -1.],
       [-1.,  1.]], dtype=float32)

或者,這些序列可以指定為個別引數,在這種情況下,它們會在繼續計算之前堆疊。

>>> x = jnp.array([-1, 0, 1])
>>> y = jnp.array([1, 0, -1])
>>> jnp.corrcoef(x, y)
Array([[ 1., -1.],
       [-1.,  1.]], dtype=float32)

相關矩陣的項目會標準化,使其值落在 -1 到 +1 的範圍內,其中 +1 表示完全正相關,-1 表示完全負相關。例如,以下是從 3 維標準常態分佈中繪製的 100 個點的相關性

>>> key = jax.random.key(0)
>>> x = jax.random.normal(key, shape=(3, 100))
>>> with jnp.printoptions(precision=2):
...   print(jnp.corrcoef(x))
[[1.   0.03 0.12]
 [0.03 1.   0.01]
 [0.12 0.01 1.  ]]