scipy.stats.random_correlation#
- scipy.stats.random_correlation = <scipy.stats._multivariate.random_correlation_gen object>[源代码]#
随机相关矩阵。
返回一个随机相关矩阵,给定一个特征值向量。
eigs 关键字指定相关矩阵的特征值,并暗示维度。
- 参数:
- eigs1d ndarray
相关矩阵的特征值
- seed{None, int,
numpy.random.Generator
,numpy.random.RandomState
}, 可选 如果 seed 为 None (或 np.random),则使用
numpy.random.RandomState
单例。如果 seed 是一个整数,则使用一个新的RandomState
实例,并使用 seed 初始化。如果 seed 已经是Generator
或RandomState
实例,则使用该实例。- tolfloat,可选
输入参数检查的容差
- diag_tolfloat,可选
结果矩阵对角线偏差的容差。默认值:1e-7
- 返回:
- 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])
方法
rvs(eigs=None, random_state=None)
绘制随机相关矩阵,所有矩阵都具有特征值 eigs。