def testProductCopula(self): U = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]) self.assertEqual(U.mean(), 0.25) self.assertEqual(U.var(), 1./9 - 1./16) U = dists.J([dists.TNormal(0, 2, -5, 5)]) self.assertEqual(U.mean(), 0) self.assertEqual(U.var(), 4) U = dists.J([dists.TNormal(1, 2, -4, 6), dists.TNormal(2, 3, -3, 7)]) self.assertEqual(U.mean(), 2) self.assertEqual(U.var(), 5. * 13. - 1. * 4.)
def test2DPPF(self): # prepare data C = np.array([[0.1, 0.08], [0.08, 0.1]]) / 10. U = dists.MultivariateNormal([0.5, 0.5], C, 0, 1) train_samples = U.rvs(1000) fig = plt.figure() plotDensity2d(U) plt.title('true density') fig.show() dist = SGDEdist.byLearnerSGDEConfig(train_samples, config={ "grid_level": 5, "grid_type": "linear", "refinement_numSteps": 0, "refinement_numPoints": 10, "regularization_type": "Laplace", "crossValidation_lambda": 0.000562341, "crossValidation_enable": False, "crossValidation_kfold": 5, "crossValidation_silent": True }, bounds=U.getBounds()) fig = plt.figure() plotDensity2d(dist) plt.title('estimated SGDE density') fig.show() samples = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]).rvs(1000) fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('uniformly drawn samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() transformed_samples = dist.ppf(samples) fig = plt.figure() plt.plot(transformed_samples[:, 0], transformed_samples[:, 1], "o ") plt.title('transformed samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() plt.show()
def testDiscretization(self): epsilon = 1e-14 U = dists.J([dists.Uniform(-1, 2), dists.Uniform(0, 3)]) _, error = U.discretize(level=1, hasBorder=True) assert error < epsilon epsilon = 1e-3 U = dists.J([dists.TNormal(0.5, 0.1, 0, 1)]) sgde, error = U.discretize(level=10) assert error < epsilon epsilon = 1e-1 U = dists.J([dists.TNormal(0.5, 0.1, 0, 1), dists.Beta(5, 10)]) _, error = U.discretize(10) assert error < epsilon
def test2DCDFandPPF(self): # prepare data C = np.array([[0.1, 0.08], [0.08, 0.1]]) / 10. U = dists.MultivariateNormal([0.5, 0.5], C, 0, 1) train_samples = U.rvs(1000) fig = plt.figure() plotDensity2d(U) plt.title('true density') fig.show() dist = KDEDist(train_samples, bounds=U.getBounds()) fig = plt.figure() plotDensity2d(dist) plt.title('estimated KDE density') fig.show() samples = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]).rvs(1000) fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('u space') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() transformed_samples = dist.ppf(samples) fig = plt.figure() plt.plot(transformed_samples[:, 0], transformed_samples[:, 1], "o ") plt.title('x space (transformed)') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() samples = dist.cdf(transformed_samples) fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('u space (transformed)') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() plt.show()
def tesst2DPPF(self): # prepare data numDims = 2 mean = 0.5 C = np.array([[0.1, 0.08], [0.08, 0.1]]) / 10. stddev = np.sqrt(C[0, 0]) U = dists.MultivariateNormal(np.ones(numDims) * mean, C, 0, 1) dist = NatafDist.normal_marginals(mean, stddev, C, bounds=U.getBounds()) fig = plt.figure() plotDensity2d(U) plt.title('true density') fig.show() fig = plt.figure() plotDensity2d(dist) plt.title('estimated Nataf density') fig.show() samples = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]).rvs(1000) fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('uniformly drawn samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() transformed_samples = dist.ppf(samples) fig = plt.figure() plt.plot(transformed_samples[:, 0], transformed_samples[:, 1], "o ") plt.title('transformed samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() plt.show()
def test2DPPF(self): # prepare data C = np.array([[0.1, 0.08], [0.08, 0.1]]) / 10. U = dists.MultivariateNormal([0.5, 0.5], C, 0, 1) fig = plt.figure() plotDensity2d(U) plt.title('true density') fig.show() dist = KDEDist(U.rvs(1000), kernelType=KernelType_EPANECHNIKOV, bounds=U.getBounds()) fig = plt.figure() plotDensity2d(dist) plt.title('estimated KDE density') fig.show() samples = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]).rvs(1000) fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('uniformly drawn samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() transformed_samples = dist.ppf(samples) fig = plt.figure() plt.plot(transformed_samples[:, 0], transformed_samples[:, 1], "o ") plt.title('transformed samples') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() plt.show()
def test2DCDFandPPF(self, plot=True): # prepare data C = np.array([[0.1, 0.08], [0.08, 0.1]]) / 10. U = dists.MultivariateNormal([0.5, 0.5], C, 0, 1) train_samples = U.rvs(1000) if plot: fig = plt.figure() plotDensity2d(U) plt.title('true density') fig.show() dist = SGDEdist.byLearnerSGDEConfig(train_samples, config={ "grid_level": 5, "grid_type": "polyClenshawCurtis", "refinement_numSteps": 0, "refinement_numPoints": 10, "regularization_type": "Laplace", "crossValidation_lambda": 0.000562341, "crossValidation_enable": False, "crossValidation_kfold": 5, "crossValidation_silent": True, "sgde_makePositive": False }, bounds=U.getBounds()) if plot: fig = plt.figure() plotDensity2d(dist) plt.title('estimated SGDE density') fig.show() samples = dists.J([dists.Uniform(0, 1), dists.Uniform(0, 1)]).rvs(500) if plot: fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('u space') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() else: print("-" * 80) print(samples) transformed_samples = dist.ppf(samples, shuffle=False) if plot: fig = plt.figure() plt.plot(transformed_samples[:, 0], transformed_samples[:, 1], "o ") plt.title('x space (transformed)') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() else: print("-" * 80) print(transformed_samples) samples = dist.cdf(transformed_samples, shuffle=False) if plot: fig = plt.figure() plt.plot(samples[:, 0], samples[:, 1], "o ") plt.title('u space (transformed)') plt.xlim(0, 1) plt.ylim(0, 1) fig.show() plt.show() else: print("-" * 80) print(samples)