jax.numpy.corrcoef#
- jax.numpy.corrcoef(x, y=None, rowvar=True)[源代码]#
计算皮尔逊相关系数。
numpy.corrcoef()
的 JAX 实现。这是由
jax.numpy.cov()
计算的样本协方差的标准化版本。对于样本协方差 \(C_{ij}\),相关系数为\[R_{ij} = \frac{C_{ij}}{\sqrt{C_{ii}C_{jj}}}\]它们的构造方式使得值满足 \(-1 \le R_{ij} \le 1\)。
- 参数:
x (类数组) – 形状为
(M, N)
(如果rowvar
为 True) 或(N, M)
(如果rowvar
为 False) 的数组,表示M
个变量的N
个观测值。x
也可以是一维的,表示单个变量的N
个观测值。y (类数组 | None) – 可选的额外观测值集合,形式与
m
相同。如果指定,则y
与m
组合,即对于默认的rowvar = True
情况,m
变为jnp.vstack([m, y])
。rowvar (布尔值) – 如果为 True(默认),则
m
的每一行表示一个变量。如果为 False,则每一列表示一个变量。
- 返回值:
形状为
(M, M)
的协方差矩阵。- 返回类型:
另请参阅
jax.numpy.cov()
: 计算协方差矩阵。
示例
考虑以下两个变量的观测值,它们完全相关。在这种情况下,相关矩阵是一个 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 表示完全负相关。例如,以下是从三维标准正态分布中抽取的 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. 0.1 ] [-0. 1. -0.12] [ 0.1 -0.12 1. ]]