scipy.stats.random_correlation#

scipy.stats.random_correlation = <scipy.stats._multivariate.random_correlation_gen object>[source]#

一个随机相关矩阵。

返回一个随机相关矩阵,给定一个特征值向量。 返回的矩阵是对称正半定的,且对角线为单位矩阵。

eigs 关键字指定相关矩阵的特征值,并暗示维度。

参数:
eigs1d ndarray

相关矩阵的特征值。 所有特征值都需要是非负的,并且总和需要等于特征值的数量。

seed{None, int, numpy.random.Generator, numpy.random.RandomState}, optional

如果 seed 为 None (或 np.random),则使用 numpy.random.RandomState 单例。 如果 seed 是一个 int,则使用一个新的 RandomState 实例,并使用 seed 进行种子设置。 如果 seed 已经是一个 GeneratorRandomState 实例,则使用该实例。

tolfloat, optional

输入参数检查的容差

diag_tolfloat, optional

结果矩阵的对角线偏差的容差。 默认值:1e-7

方法

rvs(eigs=None, random_state=None)

绘制随机相关矩阵,所有矩阵都具有特征值 eigs。

返回值:
rvsndarray 或标量

随机大小的 N 维矩阵,维度为 (size, dim, dim),每个矩阵都具有特征值 eigs。

引发:
RuntimeError

浮点错误阻止生成有效的相关矩阵。

注释

生成一个随机相关矩阵,该矩阵遵循 Davies & Higham 阐述的数值稳定算法。 该算法使用单个 O(N) 相似变换来构造对称正半定矩阵,并应用一系列 Givens 旋转来缩放它,使其对角线上有 1。

参考文献

[1]

Davies, Philip I; Higham, Nicholas J; “Numerically stable generation of correlation matrices and their factors”, BIT 2000, Vol. 40, No. 4, pp. 640 651

示例

>>> import numpy as np
>>> from scipy.stats import random_correlation
>>> rng = np.random.default_rng()
>>> x = random_correlation.rvs((.5, .8, 1.2, 1.5), random_state=rng)
>>> x
array([[ 1.        , -0.02423399,  0.03130519,  0.4946965 ],
       [-0.02423399,  1.        ,  0.20334736,  0.04039817],
       [ 0.03130519,  0.20334736,  1.        ,  0.02694275],
       [ 0.4946965 ,  0.04039817,  0.02694275,  1.        ]])
>>> import scipy.linalg
>>> e, v = scipy.linalg.eigh(x)
>>> e
array([ 0.5,  0.8,  1.2,  1.5])