Sampling methods¶
Capabilities for sampling of random input parameters.
This module contains functions to sample random input parameters.
- econsa.sampling.cond_mvn(mean, cov, dependent_ind, given_ind=None, given_value=None, check_cov=True)[source]¶
Conditional mean and variance function.
This function provides the conditional mean and variance-covariance matrix of [\(Y\) given \(X\)], where \(Z = (X,Y)\) is the fully-joint multivariate normal distribution with mean equal to
mean
and covariance matrixcov
.This is a translation of the main function of R package condMVNorm.
- Parameters
mean (array_like) – The mean vector of the multivariate normal distribution.
cov (array_like) – Symmetric and positive-definite covariance matrix of the multivariate normal distribution.
dependent_ind (int or array_like) – The indices of dependent variables.
given_ind (array_like, optional) – The indices of independent variables (default value is None). If not specified return unconditional values.
given_value (array_like, optional) – The conditioning values (default value is None). Should be the same length as
given_ind
, otherwise throw an error.check_cov (bool, optional) – Check that
cov
is symmetric, and all eigenvalue is positive (default value is True).
- Returns
cond_mean (numpy.ndarray) – The conditional mean of dependent variables.
cond_cov (numpy.ndarray) – The conditional covariance matrix of dependent variables.
Examples
>>> mean = np.array([1, 1, 1]) >>> cov = np.array([[4.0677098, -0.9620331, 0.9897267], ... [-0.9620331, 2.2775449, 0.7475968], ... [0.9897267, 0.7475968, 0.7336631]]) >>> dependent_ind = [0, ] >>> given_ind = [1, 2] >>> given_value = [1, -1] >>> cond_mean, cond_cov = cond_mvn(mean, cov, dependent_ind, given_ind, given_value) >>> np.testing.assert_almost_equal(cond_mean, -4.347531, decimal=6) >>> np.testing.assert_almost_equal(cond_cov, 0.170718, decimal=6)
Conditional sampling from Gaussian copula.
This module contains functions to sample random input parameters from a Gaussian copula.
- econsa.copula.cond_gaussian_copula(cov, dependent_ind, given_ind, given_value_u, size=1)[source]¶
Conditional sampling from Gaussian copula.
This function provides the probability distribution of conditional sample drawn from a Gaussian copula, given covariance matrix and a uniform random vector.
- Parameters
cov (array_like) – Covariance matrix of the desired sample.
dependent_ind (int or array_like) – The indices of dependent variables.
given_ind (array_like) – The indices of independent variables.
given_value_u (array_like) – The given random vector (\(u\)) that is uniformly distributed between 0 and 1.
size (int) – Number of draws from the conditional distribution. (default value is 1)
- Returns
cond_quan – The conditional sample (\(G(u)\)) that is between 0 and 1, and has the same length as
dependent_ind
.- Return type
numpy.ndarray
Examples
>>> np.random.seed(123) >>> cov = np.array([[ 3.290887, 0.465004, -3.411841], ... [ 0.465004, 3.962172, -0.574745], ... [-3.411841, -0.574745, 4.063252]]) >>> dependent_ind = 2 >>> given_ind = [0, 1] >>> given_value_u = [0.0596779, 0.39804426] >>> condi_value_u = cond_gaussian_copula(cov, dependent_ind, given_ind, given_value_u) >>> np.testing.assert_almost_equal(condi_value_u[0], 0.856504, decimal=6)