scipy.stats.random_correlation#
- scipy.stats.random_correlation = <scipy.stats._multivariate.random_correlation_gen object>[原始碼]#
隨機相關矩陣。
返回一個隨機相關矩陣,給定一個特徵值向量。
eigs 關鍵字指定相關矩陣的特徵值,並暗示維度。
- 參數:
- eigs1 維 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。