-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong usage of the Nataf transformation #70
Comments
Hi Regis, |
Hi Regis, We do not present Nataf "as a means to induce correlation between random variables" as you suggest. As you can see in the documentation (https://uqpyproject.readthedocs.io/en/latest/transformations_doc.html), the Nataf transformation is defined as the CDF-based mapping from a vector of arbitrarily distributed random variables X (having known marginals F_i(X_i) and Gaussian copula) to a vector of standard normal random variables Z. If the variables in X are linearly correlated, the Nataf transformation will not produce independent Gaussian random variables, as I believe you suggest. Instead, the Nataf transformation will produce linearly correlated normal random variables. One cannot analytically compute this linear correlation of the Gaussian random vector although it can be determined using the ITAM. See the attached paper on the ITAM, which was written for stochastic translation processes (the stochastic process extension of Nataf) but is equally applicable to random vectors. Of course, it may arise that the user prescribes a random vector with marginals and correlation matrix that are incompatible with the Nataf model. That is, there are certain well-defined combinations of marginal distributions and correlations for which it is impossible to find a correlated Gaussian random vector that maps to this particular pair of marginals and correlations. This is the well-known Nataf incompatibility to which you refer in your question. The ITAM method is built exactly for this case. It is meant to identify a normal random vector Z and the associated linear correlation matrix that will map as close as possible to the Nataf incompatible vector with incompatible marginals and (non-Gaussian) linear correlation. This leverages the so-called correlation distortion that can be computed directly from the marginal distributions and Gaussian correlation (see the equation for xi_ij in the documentation link provided above). I hope this clarifies our implementation from a theory perspective. That said, I still have some questions regarding your suggestion about its implementation. The following statement is not clear to me: "You could improve a lot your module by making the link between the isoprobabilistic transformations and the probabilistic model more oriented: the transformation is conditioned by the model, not the other way around." On preliminary investigation, I see some differences in the structure of our code and OpenTurns. Specifically, OpenTurns has broken out various separate classes for Nataf and InverseNataf and it has additional capability related to the generalized Nataf for elliptical copulas. UQpy, on the other hand, includes both Nataf and its inverse in a single class that also deals with the case of linearly correlated random variables. OpenTurns does not seem to deal with this case of linearly correlated random variables and correlation distortion. Please correct me if I'm wrong on that point. Thanks for your comments and please clarify if I have misunderstood you. |
Hi Michael,
To help you in your investigations (as you started to look at our code) here is the list of transformations available in OpenTURNS, all located into the Uncertainty/Algorithm/Transformation root directory:
Sorry for my bad english, I do my best but past midnight it becomes even worst! Régis |
Regis, thanks for your detailed response. To your individual points:
And thanks for the pointers wrt OpenTURNS. No question we will study your code carefully when considering extensions to these parts of our code. In the end, it seems we are of similar mind on many of these matters and I hope that my responses have helped to clarify. Best, P.S. No need to apologize. I had no trouble with your English. |
I can see two issues in the way the Nataf transformation is defined In Transformation.py:
You could improve a lot your module by making the link between the isoprobabilistic transformations and the probabilistic model more oriented: the transformation is conditioned by the model, not the other way around. You can have a look at the OpenTURNS project (www.openturns.org) and more specifically the Uncertainty/Algorithm/Transformation folder of the sources to have a possible implementation of it. The only fully generic transformation you can rely upon is the Rosenblatt transformation, also available in OpenTURNS.
The text was updated successfully, but these errors were encountered: