Learn R Programming

trend (version 1.1.6)

bu.test: Buishand U Test for Change-Point Detection

Description

Performes the Buishand U test for change-point detection of a normal variate.

Usage

bu.test(x, m = 20000)

Value

A list with class "htest" and "cptest"

data.name

character string that denotes the input data

p.value

the p-value

statistic

the test statistic

null.value

the null hypothesis

estimates

the time of the probable change point

alternative

the alternative hypothesis

method

character string that denotes the test

data

numeric vector of Sk for plotting

Arguments

x

a vector of class "numeric" or a time series object of class "ts"

m

numeric, number of Monte-Carlo replicates, defaults to 20000

Details

Let \(X\) denote a normal random variate, then the following model with a single shift (change-point) can be proposed:

$$ x_i = \left\{ \begin{array}{lcl} \mu + \epsilon_i, & \qquad & i = 1, \ldots, m \\ \mu + \Delta + \epsilon_i & \qquad & i = m + 1, \ldots, n \\ \end{array} \right.$$

with \(\epsilon \approx N(0,\sigma)\). The null hypothesis \(\Delta = 0\) is tested against the alternative \(\Delta \ne 0\).

In the Buishand U test, the rescaled adjusted partial sums are calculated as

$$S_k = \sum_{i=1}^k \left(x_i - \bar{x}\right) \qquad (1 \le i \le n)$$

The sample standard deviation is $$ D_x = \sqrt{n^{-1} \sum_{i=1}^n \left(x_i - \bar{x}\right)}$$

The test statistic is calculated as: $$U = \left[n \left(n + 1 \right) \right]^{-1} \sum_{k=1}^{n-1} \left(S_k / D_x \right)^2 $$.

The p.value is estimated with a Monte Carlo simulation using m replicates.

Critical values based on \(m = 19999\) Monte Carlo simulations are tabulated for \(U\) by Buishand (1982, 1984).

References

T. A. Buishand (1982), Some Methods for Testing the Homogeneity of Rainfall Records, Journal of Hydrology 58, 11--27.

T. A. Buishand (1984), Tests for Detecting a Shift in the Mean of Hydrological Time Series, Journal of Hydrology 73, 51--69.

See Also

efp sctest.efp

Examples

Run this code
data(Nile)
(out <- bu.test(Nile))
plot(out)

data(PagesData)
bu.test(PagesData)
 

Run the code above in your browser using DataLab