Calculate a given number of EOT modes either internally or between RasterStacks.
# S4 method for RasterStackBrick
eot(
x,
y = NULL,
n = 1,
standardised = TRUE,
write.out = FALSE,
path.out = ".",
prefix = "remote",
reduce.both = FALSE,
type = c("rsq", "ioa"),
verbose = TRUE,
...
)
if n = 1 an EotMode, if n > 1 an EotStack of n
EotModes. Each EotMode has the following components:
mode - the number of the identified mode (1 - n)
eot - the EOT (time series) at the identified base point.
Note, this is a simple numeric vector, not of class ts
coords_bp - the coordinates of the identified base point
cell_bp - the cell number of the indeified base point
cum_exp_var - the (cumulative) explained variance of the considered EOT
r_predictor - the RasterLayer of the correlation coefficients between the base point and each pixel of the predictor domain
rsq_predictor - as above but for the coefficient of determination
rsq_sums_predictor - as above but for the sums of coefficient of determination
int_predictor - the RasterLayer of the intercept of the regression equation for each pixel of the predictor domain
slp_predictor - same as above but for the slope of the regression equation for each pixel of the predictor domain
p_predictor - the RasterLayer of the significance (p-value) of the the regression equation for each pixel of the predictor domain
resid_predictor - the RasterBrick of the reduced data for the predictor domain
Apart from rsq_sums_predictor, all *_predictor fields are also returned for the *_response domain, even if predictor and response domain are equal. This is due to that fact, that if not both fields are reduced after the first EOT is found, these RasterLayers will differ.
a Raster*
object used as predictor
a Raster*
object used as response. If y
is
NULL
, x
is used as y
the number of EOT modes to calculate
logical. If FALSE
the calculated r-squared values
will be multiplied by the variance
logical. If TRUE
results will be written to disk
using path.out
the file path for writing results if write.out
is TRUE
.
Defaults to current working directory
optional prefix to be used for naming of results if
write.out
is TRUE
logical. If TRUE
both x
and y
are reduced after each iteration. If FALSE
only y
is reduced
the type of the link function. Defaults to 'rsq'
as in original
proposed method from van den Dool 2000. If set to 'ioa'
index of agreement is
used instead
logical. If TRUE
some details about the
calculation process will be output to the console
not used at the moment
For a detailed description of the EOT algorithm and the mathematics behind it, see the References section. In brief, the algorithm works as follows: First, the temporal profiles of each pixel xp of the predictor domain are regressed against the profiles of all pixels xr in the response domain. The calculated coefficients of determination are summed up and the pixel with the highest sum is identified as the 'base point' of the first/leading mode. The temporal profile at this base point is the first/leading EOT. Then, the residuals from the regression are taken to be the basis for the calculation of the next EOT, thus ensuring orthogonality of the identified teleconnections. This procedure is repeated until a predefined amount of n EOTs is calculated. In general, remote implements a 'brute force' spatial data mining approach to identify locations of enhanced potential to explain spatio-temporal variability within the same or another geographic field.
Empirical Orthogonal Teleconnections
H. M. van den Dool, S. Saha, A. Johansson (2000)
Journal of Climate, Volume 13, Issue 8, pp. 1421-1435
tools:::Rd_expr_doi("10.1175/1520-0442(2000)013<1421:eot>2.0.CO;2")1421:eot>
Empirical Methods in Short-Term Climate Prediction
H. M. van den Dool (2007)
Oxford University Press, Oxford, New York
tools:::Rd_expr_doi("https://doi.org/10.1093/oso/9780199202782.001.0001")
### EXAMPLE I
### a single field
# \donttest{
data(vdendool)
## claculate 2 leading modes
nh_modes <- eot(x = vdendool, y = NULL, n = 2,
standardised = FALSE,
verbose = TRUE)
plot(nh_modes, y = 1, show.bp = TRUE)
plot(nh_modes, y = 2, show.bp = TRUE)
# }
Run the code above in your browser using DataLab