# Box-Ljung test on white noise series

I generate this data in R:

set.seed(111)
ds=rnorm(1000)


When I perform Box-Ljung test to test the independency:

Box.test(ds,type='Ljung',lag=log(length(ds)))


it gave me p-value=0.5957, which is reasonable. However, when I perform this:

Box.test(ds[180:299],type='Ljung',lag=log(length(ds[180:299])))


it gave me p-value=0.00162045, which means the autocorrelation of this sub-sequence is significantly different from zero. This also happens for some other subsequences. However, I generated the time series using $rnorm$ function in R with 1000 data points. Could anybody please explain this? Thanks very much in advance.

For the convenience of you readers who are not using R, the sub-sequence ds[180:299] can be obtained here: http://ykang.hostoi.com/ds120.pdf

-
Welcome to the site. I removed your signature.... if you register, you will get one automatically. – Peter Flom Oct 5 '12 at 10:14
Small portions of your data may exhibit dependence, but overall (if long enough), rnorm will give you a non-dependent signal. – Roman Luštrik Oct 5 '12 at 10:22
120 values is not small. This is intersting to me. Since I don't live in an R world, I can't duplicate the 100 values and thus explain this conumdrum. Please attach the 100 values to your post and I will put this under my microscope. – IrishStat Oct 5 '12 at 11:22
There is no problem with the test. You could see the significant correlation in 'acf' or 'pacf'(lag 4). It seems for small sample using 'rnorm' is really independent. – vinux Oct 5 '12 at 13:18
It wouldn't hurt for @IrishStat to do an analysis of this with autobox. I am just starting to use R today but he has tested software and is familiar with the Box-Ljung test which is not new! If the results don't match I would trust his results and start looking for bugs in your R program. Even if it can be explained theoreticlly that does not prove it is right and he will study your series thoroughly and quickly and for free and will probably post an answer here for all of us to see. – Michael Chernick Oct 5 '12 at 15:29

Let us do a simulation where we apply the test 1000 times for time series of length 120.

> fun <- function(n) {Box.test(rnorm(n),type="Ljung-Box",lag=log(n))\$p.value}
> set.seed(111)
> mc <- sapply(rep(120,1000),fun)
> sum(mc<0.05)/length(mc)
[1] 0.039


So you get 39 cases out of 1000 for which the null is rejected if we assume threshold 0.05. This is perfectly normal.

The test statistic is a random variable which has a distribution. This means that it can get values which are unlikely, or likely with small probability. We reject the null hypothesis when the value is unlikely, yet by doing this we commit Type I error.

-
 Type I error is a good explanation. Any test can't go with 100% sure. Totally agree. – Elaine Oct 8 '12 at 23:41 @IrishStat Agree with you that the test is clearly impacted by n. But when I tried to increase n to 10000 instead of 120 and do the simulation which Mpiktas did, the percentage of being rejected was even larger, which is not going well with my understandings... – Elaine Oct 9 '12 at 0:01 @Elaine, with set.seed(111) and n to 10000, I got 0.044. Which is again normal. By increasing n the percentage must go to 0.05, since then the finite sample test distribution converges to the true distribution. – mpiktas Oct 9 '12 at 6:41