MATLAB Answers



Asked by Priya
on 19 Jul 2013

I wish to perform multiple linear regression of 5 - 6 predictors (X) at a time.

I have total no. of 50 predictors.

I want to find regression coefficients for all possible combinations of predictors from the master dataset of 50 predictors taking 5 and 6 predictors at a time.

Y = a.X1 + b.X2 + c.X3 + d.X4 + e.X5 + f (5 predictors) Y = a.X1 + b.X2 + c.X3 + d.X4 + e.X5 + f.X6 + g (6 predictors)

I also want to find out the correlation coefficient between original Y and predicted Y after multiple Linear Regression.


>> nchoosek(50,5)+nchoosek(50,6)
ans =

Methinks you needs must rethink your wants...

Whilst it's certainly possible to code a set of loops to do it and maybe one might have sufficient memory to hold the results and perhaps it might even complete in your lifetime simply the sheer number will mean that the likelihood of finding any reason to choose one specific model over another is near zero. You may be able to reject quite a few as being of little value but w/ that many possible combinations the odds are there will be virtually nothing to cause one to select one specific model over another; surely not if you're thinking you're just going to go on blind maximum R-sq.

You'd be far better off to have a physical or other reason to know which are likely predictor variables of interest and pare down the space drastically on that basis.

And, of course, fitting w/o visualization first is always also fraught w/ danger..."beware the nonsense correlation".

Thanks a lot for your guidance. Suppose I have to make 3 combinations of 5 properties:

x = {A,B,C,D,E} % array of total 5 property data

So I am running 3 "for" loops:

for i = 1 : size(x,1)

for j = i : size(x,1)

for k = j : size(x,1)

and then i used regress function. It takes a lot of time. Is there any other fast approach to try such combinations without using any for loop..

Well, you could try things like ndgrid and/or arrayfun ('uniformoutput','false' will be required) but I'd hold out little hope would save any great amount of time...

If you didn't preallocate for the results, doing that will make a noticeable improvement in the loop construct formulation. I'd not expect the for...end itself here to be the real time problem but simply the amount of "stuff" you're doing in sheer numbers.

Log in to comment.

0 Answers

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!