jax.numpy.corrcoef#
- jax.numpy.corrcoef(x, y=None, rowvar=True, dtype=None)[源代码]#
计算 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,则每一列代表一个变量。dtype (DTypeLike | None) – 结果的可选数据类型。必须是浮点或复数类型;如果未指定,则将根据输入的 dtype 确定。
- 返回:
形状为
(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.03 0.12] [0.03 1. 0.01] [0.12 0.01 1. ]]