[Rd] Wrong df in bartlett.test when subsetting data (PR#1124)

jens.lund@nordea.com jens.lund@nordea.com
Wed, 10 Oct 2001 17:43:53 +0200 (MET DST)

Full_Name: Jens Lund
Version: 1.3.1
OS: Windows
Submission from: (NULL) (

When we subset a dataset bartlett.test does not calculate the df correctly:

X <- rnorm(50)     # Generate simulated samples
f <- gl(10,5)      # Generate a factor with 10 levels and
                   # 5 replications of each level

# Works correctly
bartlett.test(X,f) # Correct number of df = 9

# Just use the first 5 levels of f
# Does not work correctly
bartlett.test(X[1:25],f[1:25]) # Should have df = 4, but uses df = 9
bartlett.test(X~f,subset=1:25) # Should have df = 4, but uses df = 9

In version 1.2.2 the problem could be solved by substituting
        k <- nlevels(g)
with    k <- length(unique(g))
(I do not get the R-code in the new version get by typing bartlett.test at the

This might leed to a discussion on whether nlevels should return the number of
attained factor levels or the number of "theoretical" levels:
nlevels(f)       # Returns 10, fine!
nlevels(f[1:25]) # Returns 10, might not be fine; 5 might be the correct
The same question might be asked for levels, levels(f) versus levels(f[1:25]).
At least the documentation should be clear on this point, which I do not think
it is now. (Perhaps the levels attribute on the factor should be changed for a
subset of the data, but this is probably not an efficient way of doing

A similar problem also comes up with interactions between factors in unbalanced
g <- gl(2,40,50)
nlevels(f:g)         # Returns 20
length(unique(f:g))  # Returns 10
table(f,g)           # See the design

This bug has also been seen on version 1.2.2 on Linux, but is reproduced for
this bug report on:
> version
platform i386-pc-mingw32
arch     x86            
os       Win32          
system   x86, Win32     
major    1              
minor    3.1            
year     2001           
month    08             
day      31             
language R              

Best regards, Jens

r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch