Running anovan on a Large (21504Rx90C) matrix

I am currently attempting to run a full anovan model on a 21504Rx90C matrix, which results in an out-of-memory error. I am doing this in order to extract the sum of squares contribution of each factor used in the anova model.
The anova model itself has 7 factors with 3,4,4,4,7,4,4 levels respectively. I was wondering if there was perhaps a way of breaking down the code to avoid running into this error and staying within the memory constraints?
Dummy code below:
Data = randn(21504,90)
SumSq = zeros(190,size(Data,2));
for iii = 1:size(Data,2)
[~,tbl,~,~] = anovan(Data(:,iii),{var1 var2 var3 var4 var5 var6 var7},...
'model','full',...
'varnames',{'var1','var2','var3','var4','var5','var6','var7'});
SumSq(1:end,iii) = cell2mat(tbl(2:end,2));
iii
end

4 Comments

If you can't get anovan to give you the SS's, you could get them for the dataset you describe with one of the short-cut SS methods that only work for balanced designs. I don't know if there are canned routines for any of those, though, so you might have to do the programming yourself.
I am not aware of any such short cut methods. Where could I find information on these?
See chapter 9 of this book
Watch out for numerical problems, though.
Thank you. I will try and implement this method and see if I have any luck.

Sign in to comment.

Answers (0)

Categories

Find more on Frequently-used Algorithms in Help Center and File Exchange

Asked:

on 6 Nov 2020

Commented:

on 10 Nov 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!