Hello all,

I have a model with 44 input parameters. When I want to create PCE with degrees up to 5, everything goes well and the calculations are done without problems. However, when I increase the degree, MATLAB quits a few seconds after I run the program. Can anyone help me to solve this problem?

I am running MATLAB on Ubuntu.

Thanks in advance

Hi @Aep93,

a total-degree basis in 44 dimensions with degree 5 has already more than a million elements: {44+5 \choose 5} = 1906884

Creating an even larger basis might cause Matlab to run out of memory, and it does not make sense, because if you have a huge number of regressors in the basis, you also need a huge number of points in the experimental design. How many experimental design points do you have available?

If you have a high-dimensional problem, common ways to reduce the size of the basis are using q-norm (hyperbolic) truncation or restricting the maximum interaction order to 2 or 3, see e.g. Question regarding PCE and LOO error. And in case you don’t use it yet, you should try UQLab’s degree and q-norm adaptivity, such as

`MetaOpts.Degree = 1:5;`

You could also try to first identify the important variables in your model, and then build a meta-model only on these.

I hope this helps, let us know how you made it work!

Hello @nluethen. Thank you very much for your response. I wanted to have about 800 experimental points. Do you think it can be enough or I should increase it? Do you have an estimation of the number of experimental points needed for 44 input parameters?

I am currently using “MetaOpts.Degree = 1:5” right now as you mentioned and I meant that the system crashes when I increase it: “MetaOpts.Degree = 1:6”.

Also, I cannot reduce the number of variables because I want to study their effects in different frequencies and their importance varies in each frequency. So I cannot neglect any of them. Do you think the way I am doing the whole procedure is correct or do you have other suggestions for me?

Thanks in advance

Hi @Aep93,

Sorry for not answering earlier. I saw that you got helpful advice from @bsudret in PCE with many inputs. What I meant is that using no q-norm truncation, no restriction of interaction order, and a degree of 6 for 44 input variables, the number of basis functions and of coefficients to compute is so large (P = 15'890'700) that Matlab might run out of memory. This is the most likely explanation for the crash you observed.

If you use a degree of 6, I would say that a q-norm truncation of at least 0.7 is needed to keep the number of basis elements in a reasonable range (with which I mean less than 100’000). For a degree of up to 10, you need to choose an even smaller q-norm and/or restrict the interaction order.

Good luck!