Solved – What does R mean by “unbalanced design”

I think this means an unequal sample in different conditions. But it seems to mean something else. . .

I have a data set like below

particip    group   device  width   length  accep   thresh  rating  d-rating 1           RA      Dingo   nom     nom     Y       5       8       3 1           RA      Dingo   nom     long    Y       4       6       2 1           RA      Dingo   fat     nom     Y       4       6       2 1           RA      Dingo   fat     long    N       6       4      -2 

and I'm running an ANOVA on it like so

aov.AMIDS_d <- aov(d.rating ~ group*device*width*length + Error(particip/(device*width*length))+group,data.AMIDS_d)  

This works ok until I try to print the condition means like so

print(model.tables(aov.AMIDS_d,"means"),digits=3) 

and it says

Error in model.tables.aovlist(aov.AMIDS_d, "means") : design is unbalanced so cannot proceed 

According to the design, it ought to be balanced, so I need to check my data structure. I tried

table(data.AMIDS_d[,2:5]) 

to give a table of observations per condition and got this

, , width = fat, length = long       device group Dingo SNAR    NR    12   12    NV    12   12    RA    12   12  , , width = nom, length = long       device group Dingo SNAR    NR    12   12    NV    12   12    RA    12   12  , , width = fat, length = nom       device group Dingo SNAR    NR    12   12    NV    12   12    RA    12   12  , , width = nom, length = nom       device group Dingo SNAR    NR    12   12    NV    12   12    RA    12   12 

which looks both correct and balanced. So what is causing the unbalanced design error?

In case anyone else has this problem, check that your all your factor columns, particularly any containing numbers and including your participant-identifier column, are classed as a Factor and not as an Integer by using str(yourdata) or class(yourdata$columnname). My particular culprit was the participants column.

If it's classed as an Integer, then

yourdata$columnname <- as.factor(yourdata$columnname) 

will re-class it as a factor.

Similar Posts:

Rate this post

Leave a Comment