Change-point Detection: Pettitt’s Test

The approach after Pettitt (1979) is commonly applied to detect a single change-point in hydrological series or climate series with continuous data.

It tests the H0: The T variables follow one or more distributions that have the same location parameter (no change), against the alternative: a change point exists.

The Pettitt-test is conducted in such a way:

02 - Load Data:

## 'data.frame':    21915 obs. of  23 variables:
##  $ Site    : int  40762 40762 40762 40762 40762 40762 40762 40762 40762 40762 ...
##  $ Year    : int  1959 1959 1959 1959 1959 1959 1959 1959 1959 1959 ...
##  $ Month   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Day     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ dd      : num  118 170 262 226 108 240 200 128 150 248 ...
##  $ ff      : num  1.2 5.4 1.8 1.2 1.4 1.8 2 1 1.4 1.4 ...
##  $ tmin    : num  -1 -1 -7 -9 -6 -8 -6 -6 -7 -7 ...
##  $ t       : num  3.12 0.32 -1.52 -0.76 0.92 1.56 3.4 1.92 4.6 4.08 ...
##  $ tmax    : num  6 1 2 4 6 7 10 7 12 10 ...
##  $ td      : num  1.66 -2.56 -5.88 -6.62 -5.46 -4.94 -3.36 -4.28 -6.48 -4.8 ...
##  $ p0      : num  864 864 870 868 870 ...
##  $ p       : num  1030 1032 1042 1040 1042 ...
##  $ rrr     : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ ewm     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ um      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ sshn    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ radglo24: int  NA NA NA NA NA NA NA NA NA NA ...
##  $ evt     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ewsm    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ nm      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ umax    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ umin    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ tsoil_m : int  NA NA NA NA NA NA NA NA NA NA ...
##     Site Year Month Day  dd  ff tmin     t tmax    td     p0       p rrr
## 1  40762 1959     1   1 118 1.2   -1  3.12    6  1.66 864.18 1030.50   0
## 2  40762 1959     1   2 170 5.4   -1  0.32    1 -2.56 863.92 1032.20   0
## 3  40762 1959     1   3 262 1.8   -7 -1.52    2 -5.88 869.98 1041.75   0
## 4  40762 1959     1   4 226 1.2   -9 -0.76    4 -6.62 868.04 1040.40   0
## 5  40762 1959     1   5 108 1.4   -6  0.92    6 -5.46 870.46 1041.60   0
## 6  40762 1959     1   6 240 1.8   -8  1.56    7 -4.94 871.38 1043.15   0
## 7  40762 1959     1   7 200 2.0   -6  3.40   10 -3.36 871.06 1041.85   0
## 8  40762 1959     1   8 128 1.0   -6  1.92    7 -4.28 870.32 1041.15   0
## 9  40762 1959     1   9 150 1.4   -7  4.60   12 -6.48 869.36 1039.25   0
## 10 40762 1959     1  10 248 1.4   -7  4.08   10 -4.80 868.04 1037.50   0
##    ewm um sshn radglo24 evt ewsm nm umax umin tsoil_m
## 1   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 2   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 3   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 4   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 5   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 6   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 7   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 8   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 9   NA NA   NA       NA  NA   NA NA   NA   NA      NA
## 10  NA NA   NA       NA  NA   NA NA   NA   NA      NA

03 - Prepare Data:

## 'data.frame':    21915 obs. of  2 variables:
##  $ date: Date, format: "1959-01-01" "1959-01-02" ...
##  $ t   : num  3.12 0.32 -1.52 -0.76 0.92 1.56 3.4 1.92 4.6 4.08 ...
##          date     t
## 1  1959-01-01  3.12
## 2  1959-01-02  0.32
## 3  1959-01-03 -1.52
## 4  1959-01-04 -0.76
## 5  1959-01-05  0.92
## 6  1959-01-06  1.56
## 7  1959-01-07  3.40
## 8  1959-01-08  1.92
## 9  1959-01-09  4.60
## 10 1959-01-10  4.08
##       date                  t         
##  Min.   :1959-01-01   Min.   :-15.85  
##  1st Qu.:1973-12-31   1st Qu.:  6.22  
##  Median :1988-12-31   Median : 15.56  
##  Mean   :1988-12-31   Mean   : 14.88  
##  3rd Qu.:2003-12-31   3rd Qu.: 24.04  
##  Max.   :2018-12-31   Max.   : 35.08  
##                       NA's   :59

04 - Pettitt’s test:

## 
##  Pettitt's test for single change-point detection
## 
## data:  Tave[["t"]]
## U* = 11366000, p-value < 2.2e-16
## alternative hypothesis: two.sided
## sample estimates:
## probable change point at time K 
##                            8638
## [1] "1982-10-23"

As given in the publication of Pettitt (1979) the change-point of Page’s data is located at t = "1982-10-23", with KT = 11366000 and p = < 2.2e-16