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

ANOVAN: Undefined function or variable "denommat"

Asked by Sanjay Manohar on 25 Jan 2013

Hi, I'm getting this error in ANOVAN: Undefined function or variable "denommat". I have 3 factors, one is a random effect (which individual), the others are predictors.

    Y       = randn(100,1);
    subject = repmat([1:10]', 10,1);
    traits  = randn(100,2); 
    [p,T,stats] = anovan(Y, [subject, traits], ...
           'varnames',   {'Subject','Trait1', 'Trait2'} , ...
           'random',     1, ...
           'continuous', [2 3], ...
           'model',      [0 1 0; 0 0 1; 0 1 1] ...
      ); 
  • I'm looking for the effects of the predictors and their interaction.
  • But it's a mixed effects design, in that, I have repeated measures of the traits for each subject. I've therefore specified 'Subject' as a random effect. What I intend here is to account for the fact that repeated trait measures on an individual may correlated.
  • I think the problem is that the "subject" factor is not used in the design matrix: I've used a column of zeros to specify that the subject is not a categorical regressor (if it were, it would eat up all the between-subject variability, right?)

0 Comments

Sanjay Manohar

3 Answers

Answer by Tom Lane on 25 Jan 2013
Accepted answer

I agree this looks like a bug where if you specify a variable as random but it doesn't actually appear in any terms, the code gets confused. The work-around in your case is not to specify the 'random' argument when no terms use it. I'll report this as a bug to be fixed.

But I don't understand the statement about how including subject in the model would eat up all the between-subject variability. The example doesn't show any between-subject factors. The following code introduces a between-subject factor and specifies that subject is nested in it. Perhaps you want something like this.

Y = randn(100,1);
subject = repmat([1:10]', 10,1);
traits  = randn(100,2); 
between = repmat([1 1 1 1 1 2 2 2 2 2]',10,1);
[p,T,stats] = anovan(Y, [subject, traits, between], ...
           'varnames',   {'Subject','Trait1', 'Trait2' 'Between'} , ...
           'random',     1, ...
           'continuous', [2 3], ...
           'nested',     [0 0 0 1;0 0 0 0;0 0 0 0;0 0 0 0], ...
           'model',      [0 0 0 1;1 0 0 0; 0 1 0 0; 0 0 1 0; 0 1 1 0] ...
      ); 

0 Comments

Tom Lane
Answer by Sachin on 25 Jan 2013

I think you do not have the file in your matlab path, wherein "denommat" function is defined.

0 Comments

Sachin
Answer by Evgeny Pr on 25 Jan 2013
Edited by Evgeny Pr on 25 Jan 2013

I think this is a bug (defect) in function ANOVAN. Variable denommat is not define, but use in nested function MAKESTATS for you input conditions.

0 Comments

Evgeny Pr

Contact us