Locally linear model

Share:

Description

Casdagli test of nonlinearity via locally linear forecasts

Usage

1
2
3
4
5
6
7
8
llar(x, m, d = 1, steps = d, series, eps.min = sd(x)/2,
	eps.max = diff(range(x)), neps = 30, trace = 0)

llar.predict(x, m, d=1, steps=d, series, n.ahead=1, 
eps=stop("you must specify a window value"),
onvoid=c("fail","enlarge"), r = 20, trace=1)

llar.fitted(x, m, d=1, steps=d, series, eps, trace=0)

Arguments

x

time series

m, d, steps

embedding dimension, time delay, forecasting steps

series

time series name (optional)

n.ahead

n. of steps ahead to forecast

eps.min, eps.max

min and max neighbourhood size

neps

number of neighbourhood levels along which iterate

eps

neighbourhood size

onvoid

what to do in case of an isolated point: stop or enlarge neighbourhood size by an r%

r

if an isolated point is found, enlarge neighbourhood window by r%

trace

tracing level: 0, 1 or more than 1 for llar, 0 or 1 for llar.forecast

Details

llar does the Casdagli test of non-linearity. Given the embedding state-space (of dimension m and time delay d) obtained from time series series, for a sequence of distance values eps, the relative error made by forecasting time series values with a linear autoregressive model estimated on points closer than eps is computed. If minimum error is reached at relatively small length scales, a global linear model may be inappropriate (using current embedding parameters). This was suggested by Casdagli(1991) as a test for non-linearity.

llar.predict tries to extend the given time series by n.ahead points by iteratively fitting locally (in the embedding space of dimension m and time delay d) a linear model. If the spatial neighbourhood window is too small, your time series last point would be probably isolated. You can ask to automatically enlarge the window eps by a factor of r% sequentially, until enough neighbours are found for fitting the linear model.

llar.fitted gives out-of-sample fitted values from locally linear models.

Value

llar gives an object of class 'llar'. I.e., a list of components:

RMSE

vector of relative errors

eps

vector of neighbourhood sizes (in the same order of RMSE)

frac

vector of fractions of the time series used for RMSE computation

avfound

vector of average number of neighbours for each point in the time series which can be plotted using the plot method, and transformed to a regular data.frame with the as.data.frame function.

Function llar.forecast gives the vector of n steps ahead locally linear iterated forecasts.

Function llar.fitted gives out-of-sample fitted values from locally linear models.

Warning

For long time series, this can be slow, especially for relatively big neighbourhood sizes.

Note

The C implementation was re-adapted from that in the TISEAN package ("ll-ar" routine, see references). However, here the euclidean norm is used, in place of the max-norm.

Author(s)

Antonio, Fabio Di Narzo

References

M. Casdagli, Chaos and deterministic versus stochastic nonlinear modelling, J. Roy. Stat. Soc. 54, 303 (1991)

Hegger, R., Kantz, H., Schreiber, T., Practical implementation of nonlinear time series methods: The TISEAN package; CHAOS 9, 413-435 (1999)

Examples

1
2
3
4
5
6
7
8
res <- llar(log(lynx), m=3, neps=7)
plot(res)

x.new <- llar.predict(log(lynx),n.ahead=20, m=3, eps=1, onvoid="enlarge", r=5)
lag.plot(x.new, labels=FALSE)

x.fitted <-  llar.fitted(log(lynx), m=3, eps=1)
lag.plot(x.fitted, labels=FALSE)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.