I am dealing with a 21-dimensional uncertain input problem. The inputs are all Gaussian distributed, and one of them is a negative number. I used the LARS method to expand it into a chaotic polynomial. When it is expanded into a Hermite polynomial, the program can run. However, when the polynomial is set to an arbitrary polynomial, the program will report an error. I took a quick look at the program and the reason for the error is that the program cannot handle the inverse cumulative distribution of negative inputs. So I would like to ask everyone how to deal with this problem.
Hi Eric,
Could you provide a minimal working example to reproduce the error?
In principle there should be no issues in using arbitrary polynomials with negative variables.
Hi ste,
This is my parameter setting
%% Specify these marginals in UQLab:
mu = [1.57 1.16 1.87 0.15 0.06 -0.22 265.52 932.27 1.94 25.5 27.40 189.700 80 150 200 60 130 160 70 140 180];
unc1 = 0.02; unc2 = 0.06;
sigma1 = mu(1:9)*unc1;
sigma2 = mu(10:21)*unc2;
sigma = [sigma1,sigma2];
for ii = 1:n
InputOpts.Marginals(ii).Type = ‘Gaussian’;
InputOpts.Marginals(ii).Moments = [mu(ii) sigma(ii)];
end
%%
When the type variable is not specified,
%% Select PCE as the metamodeling tool in UQLab:
MetaOpts.Type = ‘Metamodel’;
MetaOpts.MetaType = ‘PCE’;
%%
Calculation finished.
However,when forcing the use of arbitrary polynomials,
%% Select PCE as the metamodeling tool in UQLab:
MetaOpts.Type = ‘Metamodel’;
MetaOpts.MetaType = ‘PCE’;
MetaOpts.PolyTypes = {‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’…
‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’…
‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’…
‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’,‘arbitrary’};
%%
the program ran into an error.
I looked at the program and it seems that the error is caused by the 6th variable in mu being a negative number.
Dear @LJY
I’m actually surprised that it works even without specifying the poly types.
The main problem is that the standard deviation for variable 6 in your code is negative. Substituting sigma1 = abs(mu(1:9))*unc1; to your definition of sigma1 makes it work perfectly in my case:
If this is not the issue, please share some data and a full script so that I can try to reproduce your problem.
Best regards,
Stefano
Dear ste
thank you very much!After specifying the standard deviation to be positive, the program can be run.

