Source code for chaospy.descriptives.correlation.pearson

"""Pearson's correlation matrix."""
import numpy
from scipy.stats import spearmanr
import numpoly
import chaospy


[docs]def Corr(poly, dist=None, **kws): """ Correlation matrix of a distribution or polynomial. Args: poly (numpoly.ndpoly, Distribution): Input to take correlation on. Must have ``len(poly)>=2``. dist (Distribution): Defines the space the correlation is taken on. It is ignored if ``poly`` is a distribution. Returns: (numpy.ndarray): Correlation matrix with ``correlation.shape == poly.shape+poly.shape``. Examples: >>> distribution = chaospy.MvNormal( ... [3, 4], [[2, .5], [.5, 1]]) >>> chaospy.Corr(distribution).round(4) array([[1. , 0.3536], [0.3536, 1. ]]) >>> q0 = chaospy.variable() >>> poly = chaospy.polynomial([q0, q0**2]) >>> distribution = chaospy.Normal() >>> chaospy.Corr(poly, distribution).round(4) array([[1., 0.], [0., 1.]]) """ if isinstance(poly, chaospy.Distribution): poly, dist = numpoly.variable(len(poly)), poly else: poly = numpoly.polynomial(poly) cov = chaospy.Cov(poly, dist, **kws) var = numpy.diag(cov) vvar = numpy.sqrt(numpy.outer(var, var)) return numpy.where(vvar > 0, cov / vvar, 0)