Hurst coefficient estimation in the time domain

Share:

Description

Function to estimate the Hurst parameter H of a long memory time series by one of several methods as specified in input. These methods all work directly with the sample values of the time series (not the spectrum).

aggabs

The series is partitioned into m groups. Within each group, the first absolute moment about the mean of the entire series is evaluated. A measure of the variability of this statistic between groups is calculated. The number of groups, m, is increased and the process is repeated. The observed variability changes with increasing m in a way related by theory to the Hurst parameter H of the input series. For the methods used here, a log-log plot of variability versus number of groups is, ideally, linear, with a slope related to H, so H can be determined by linear regression.

aggvar

The series is partitioned into m groups. Within each group, the variance (relative to the mean of the entire series) is evaluated. A measure of the variability of this statistic between groups is calculated. The number of groups, m, is increased and the process is repeated. The observed variability changes with increasing m in a way related by theory to the Hurst parameter H of the input series. For the methods used here, a log-log plot of variability versus number of groups is, ideally, linear, with a slope related to H, so H can be determined by linear regression.

diffvar

The series is partitioned into m groups. Within each group, the variance, relative to the mean of the entire series, is evaluated. The first difference of the variances is then evaluated. A measure of the variability of this statistic between groups is calculated. The number of groups, m, is increased and the process is repeated. The observed variability changes with increasing m in a way related by theory to the Hurst parameter H of the input series. For the methods used here, a log-log plot of variability versus number of groups is, ideally, linear, with a slope related to H, so H can be determined by linear regression.

higuchi

The series is assumed to have the character of a noise, not a motion. The series is partitioned into m groups. The cumulative sums of the series are evaluated to convert the series from a noise to a motion. Absolute differences of the cumulative sums between groups are analyzed to estimate the fractal dimension of the path. The number of groups, m, is increased and the process is repeated. The result changes with increasing m in a way related by Higuchi's theory to the Hurst parameter H of the input series. A log-log plot of the statistic versus number of groups is, ideally, linear, with a slope related to H, so H can be determined by linear regression.

Usage

1
2
hurstBlock(x, method="aggAbs", scale.min=8, scale.max=NULL,
    scale.ratio=2, weight=function(x) rep(1,length(x)), fit=lm)

Arguments

x

a vector containing a uniformly-sampled real-valued time series.

fit

a function representing the linear regression scheme to use in fitting the resulting statistics (on a log-log scale). Supported functions are: lm, lmsreg, and ltsreg. See the on-line help documentation for each of these for more information: in R, these are found in the MASS package while in S-PLUS they are indigenous and found in the splus database. Default: lm.

method

a character string indicating the method to be used to estimate the Hurst coefficient (H). Choices are:

"aggabs"

Absolute Values of the Aggregated Series

"aggVar"

Aggregated Variance Method

"diffvar"

Differenced Variance Method

"higuchi"

Higuchi's Method

Default: "aggabs".

scale.max

an integer denoting the maximum scale (block size) to use in partitioning the series. Default: length(x).

scale.min

an integer denoting the minimum scale (block size) to use in partitioning the series. Default: 8.

scale.ratio

ratio of successive scales to use in partitioning the data. For example, if scale.min=8 and scale.ratio=2, the first scale will be 8, the second scale 16, the third scale 32, and so on. Default: 2.

weight

a function with a single required variable (x) used to weight the resulting statistics (x) for each scale during linear regression. Currently, only supported when fit=lm. Default: function(x) rep(1,length(x)).

Value

an object of class fractalBlock.

References

T. Higuchi (1988), Approach to an irregular time series on the basis of the fractal theory, Physica D, 31, 277–283.

M.S. Taqqu, V. Teverovsky, and W. Willinger, Estimators for Long- Range Dependence: an Empirical Study (1995), Fractals, 3, pp. 785–798.

M. S. Taqqu and V. Teverovsky, On Estimating the Intensity of Long- Range Dependence in Finite and Infinite Variance Time Series (1998), in A practical Guide to Heavy Tails: Statistical Techniques and Applications, pp. 177–217, Birkhauser, Boston.

See Also

fractalBlock, hurstSpec, lm.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## create test series 
set.seed(100)
x <- rnorm(1024)
walk <- cumsum(x)

## calculate the Hurst coefficient of a random 
## walk series using various techniques 
methods <- c("aggabs","aggvar","diffvar","higuchi")
z <- lapply(methods, function(method, walk){
    hurstBlock(ifelse1(method=="higuchi",diff(walk),walk), method=method)
},walk=walk )
names(z) <- methods

## plot results 
old.plt <- splitplot(2,2,1)
for (i in 1:4){
    if (i > 1)
       splitplot(2,2,i)
    plot(z[[i]], key=FALSE)
    mtext(paste(attr(z[[i]],"stat.name"), round(as.numeric(z[[i]]),3), sep=", H="),
       line=0.5, adj=1)
}
par(old.plt)

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