# pointer.norm: Calculate pointer years using the normalization in a moving... In pointRes: Analyzing Pointer Years and Components of Resilience

 pointer.norm R Documentation

## Calculate pointer years using the normalization in a moving window method

### Description

The function calculates event and pointer years on a `data.frame` with tree-ring series using the normalization in a moving window method introduced by Cropper (1979; cf. Schweingruber et al. 1990, Jetschke et al. 2019). This method locally z-transforms tree growth in year `i` within a symmetric moving window of `n` years, thereby providing the number of standard deviations that tree growth deviates in individual years (Cropper values, Ct) from the window average. To identify event years, one absolute threshold on the number of standard deviations can be set (Cropper 1979), or, alternatively, three intensity classes (Neuwirth et al. 2007). Threshold values for defining event and pointer years can be adjusted.

Prior to the calculation of event and pointer years with `pointer.norm`, a 13-year weighted low-pass filter, as described by Fritts (1976), may be applied on the tree-ring series using `lowpass13`. According to Cropper (1979), such a filter improves the detection of event and pointer years for complacent series, whereas for sensitive series filtering has little effect. Alternatively, a flexible detrending (e.g., using a cubic-smoothing spline with a 50% frequency cut-off at 15 years) may be applied prior to `pointer.norm`.

### Usage

``````pointer.norm(data, period = NULL, window = 13, method.thresh = c("Cropper", "Neuwirth"),
C.thresh = 0.75, N.thresh = c(1, 1.28, 1.645), series.thresh = 75,
make.plot = FALSE)
``````

### Arguments

 `data` a `data.frame` with detrended tree-ring series as columns and years as rows (e.g., output of `detrend` of package dplR), or a `data.frame` with filtered series (output of `lowpass13`). `period` a `vector` specifying the start and end year of the analysis. Defaults to the full period covered by the data. `window` an `integer` specifying the window size (i.e. number of years) to be used to calculate normalized growth deviations. Must be an odd number (>=3). Defaults to 13. `method.thresh` a `character` string of `"Cropper"` or `"Neuwirth"`, specifying whether one absolute threshold or three intensity classes should be used for defining event years. Argument matching is performed. `C.thresh` a (positive) `numeric` specifying the threshold for identification of event years using method `"Cropper"`. Defaults to 0.75. `N.thresh` a `vector` specifying the (positive) thresholds for identification of weak, strong and extreme event years using method `"Neuwirth"`. Defaults to 1, 1.28 and 1.645, respectively. `series.thresh` a `numeric` specifying the minimum percentage of trees that should display a positive (or negative) event year for that year to be considered as positive (or negative) pointer year. Defaults to 75. `make.plot` a `logical` specifying whether a bar plot, showing mean Cropper values, should be created. Pointer years are indicated with dark-gray bars. If event years were defined using `method.thresh "Neuwirth"` (`pointer.norm`), different tones of gray indicate weak, strong and extreme pointer years, based on the most common event year class. Defaults to FALSE.

### Details

The function locally z-transforms tree growth in year `i` within a symmetric moving window of `n` years. For `method.thresh` `"Cropper"`, event years are defined as those years having absolute Cropper values (Ct) above a specified threshold (defaults to |Ct| > 0.75). For `method.thresh` `"Neuwirth"`, three classes of distinct growth deviations can be defined, being 'weak', 'strong' and 'extreme' (defaults to |Ct| > 1, |Ct| > 1.28, and |Ct| > 1.645). The window size can be adjusted (defaults to 13 years), as well as the minimum percentage of trees that should display a positive (or negative) event year for that year to be considered as positive (or negative) pointer year (defaults to 75%).

Note that the resulting time series are truncated by `(window-1)/2` at both ends inherent to the calculation method.

### Value

The function returns a `list` containing the following components:

• for `method.thresh` `"Cropper"`:

 `Cvalues` a `matrix` with Cropper values for individual tree-ring series `EYvalues` a `matrix` indicating positive (1), negative (-1) and non-event years (0) for individual tree-ring series `out` a `data.frame` containing the following columns: `year` - time stamp, `nb.series` - number of series considered, `perc.pos` - percentage of trees showing a positive event year, `perc.neg` - percentage of trees showing a negative event year, `nature` - number indicating whether the year is a positive (1), negative (-1) or no pointer year (0), `Cvalues_mean` - mean Cropper value over the available series, and `Cvalues_sd` - standard deviation of Cropper values `spec.param` a `data.frame` specifying the arguments used in the calculation
• for `method.thresh` `"Neuwirth"`:

 `Cvalues` a `matrix` with Cropper values for individual tree-ring series `EYvalues` a `matrix` indicating weak (1/-1), strong (2/-2) and extreme (3/-3) positive/negative event years, as well as non-event years (0) for individual tree-ring series `out` a `data.frame` containing the following columns: `year` - time stamp, `nb.series` - number of series considered, `perc.pos.extreme` - percentage of trees showing a positive extreme event year, `perc.pos.strong` - percentage of trees showing a positive strong event year, `perc.pos.weak` - percentage of trees showing a positive weak event year, `perc.neg.weak` - percentage of trees showing a negative weak event year, `perc.neg.strong` - percentage of trees showing a negative strong event year, `perc.neg.extreme` - percentage of trees showing a negative extreme event year, `nature` - number indicating whether the year is a positive (1), negative (-1) or no pointer year (0), `Cvalues_mean` - mean Cropper value over the available series, `Cvalues_sd` - standard deviation of Cropper values `spec.param` a `data.frame` specifying the arguments used in the calculation

### Author(s)

Marieke van der Maaten-Theunissen and Ernst van der Maaten.

### References

Cropper, J.P. (1979) Tree-ring skeleton plotting by computer. Tree-Ring Bulletin 39: 47-59.

Jetschke, G., van der Maaten, E. and van der Maaten-Theunissen, M. (2019) Towards the extremes: A critical analysis of pointer year detection methods. Dendrochronologia 53: 55-62.

Fritts, H.C. (1976) Tree rings and climate. Academic Press Inc. (London) Ltd.

Neuwirth, B., Schweingruber, F.H. and Winiger, M. (2007) Spatial patterns of central European pointer years from 1901 to 1971. Dendrochronologia 24: 79-89.

Schweingruber, F.H., Eckstein, D., Serre-Bachet, F. and BrÃ¤ker, O.U. (1990) Identification, presentation and interpretation of event years and pointer years in dendrochronology. Dendrochronologia 8: 9-38.

### Examples

``````## Calculate pointer years on detrended tree-ring series using method.thresh "Cropper"
## and a user-defined threshold for event-year definition of 1
data(s033)
detr_s033 <- detrend(s033, method = "Spline", nyrs = 30)
pyc <- pointer.norm(detr_s033, method.thresh = "Cropper", C.thresh = 1)