Multi-fractal Detrended Fluctuation Analysis
fd_mfdfa(
y,
fs = NULL,
removeTrend = c("no", "poly", "adaptive", "bridge")[2],
polyOrder = 1,
standardise = c("none", "mean.sd", "median.mad")[1],
adjustSumOrder = FALSE,
removeTrendSegment = c("no", "poly", "adaptive", "bridge")[2],
polyOrderSegment = 1,
scaleMin = 16,
scaleMax = stats::nextn(floor(NROW(y)/4), factors = 2),
scaleResolution = round(log2(scaleMax - scaleMin)),
dataMin = NA,
scaleS = NA,
overlap = NA,
qq = seq(-5, 5, length.out = 101),
doPlot = FALSE,
returnPlot = FALSE,
returnInfo = FALSE,
silent = FALSE
)
A numeric vector or time series object.
Sample rate
Method to use for global detrending (default = "poly"
)
Order of global polynomial trend to remove if removeTrend = "poly"
. If removeTrend = "adaptive"
polynomials 1
to polyOrder
will be evaluated and the best fitting curve (R squared) will be removed (default = 1
)
Standardise the series using ts_standardise()
with adjustN = FALSE
(default = "mean.sd")
Adjust the time series (summation or difference), based on the global scaling exponent, see e.g. Ihlen (2012) (default = FALSE
)
Method to use for detrending in the bins (default = "poly"
)
The DFA order, the order of polynomial trend to remove from the bin if removeTrendSegment = "poly"
. If removeTrendSegment = "adaptive"
polynomials 1
to polyOrder
will be evaluated and the best fitting polynomial (R squared) will be removed (default = 1
)
Minimum scale (in data points) to use for log-log regression (default = 4
)
Maximum scale (in data points) to use for log-log regression. This value will be ignored if dataMin
is not NA
, in which case bins of size < dataMin
will be removed (default = stats::nextn(floor(NROW(y)/4), factors = 2)
)
The scales at which detrended fluctuation will be evaluated are calculated as: seq(scaleMin, scaleMax, length.out = scaleResolution)
(default = round(log2(scaleMax-scaleMin))
).
#' @param dataMin Minimum number of data points in a bin required for inclusion in calculation of the scaling relation. For example if length(y) = 1024
and dataMin = 4
, the maximum scale used to calculate the slope will be 1024 / 4 = 256
. This value will take precedence over the scaleMax
(default = NA
)
If not NA
, it should be a numeric vector listing the scales on which to evaluate the detrended fluctuations. Arguments scaleMax, scaleMin, scaleResolution
and dataMin
will be ignored (default = NA
)
A number in [0 ... 1]
representing the amount of 'bin overlap' when calculating the fluctuation. This reduces impact of arbitrary time series begin and end points. If length(y) = 1024
and overlap is .5
, a scale of 4
will be considered a sliding window of size 4
with step-size floor(.5 * 4) = 2
, so for scale 128
step-size will be 64
(default = NA
)
A vector containing a range of values for the order of fluctuation q
(default = seq(-5, 5,length.out=101)
)
Output the log-log scale versus fluctuation plot with linear fit by calling function plotFD_loglog()
(default = TRUE
)
Return ggplot2 object (default = FALSE
)
Return all the data used in SDA (default = FALSE
)
Silent-ish mode (default = FALSE
)
A dataframe with values of q
,H(q)
, t(q)
, h(q)
, `D(q)“
set.seed(33)
# White noise
fd_mfdfa(rnorm(4096), doPlot = TRUE)
#>
#>
#> (mf)dfa: Sample rate was set to 1.
#>
#> `geom_smooth()` using formula = 'y ~ x'
#>
#> ~~~o~~o~~casnet~~o~~o~~~
#>
#> Multifractal Detrended FLuctuation Analysis
#>
#> Spec_AUC Spec_Width Spec_CVplus Spec_CVmin Spec_CVtot Spec_CVasymm
#> 1 0.0894 0.0947 0.0455 0.0466 0.0459 -0.0114
#>
#>
#> ~~~o~~o~~casnet~~o~~o~~~
# Pink noise
fd_mfdfa(noise_powerlaw(N=4096), doPlot = TRUE)
#>
#>
#> (mf)dfa: Sample rate was set to 1.
#>
#> `geom_smooth()` using formula = 'y ~ x'
#>
#> ~~~o~~o~~casnet~~o~~o~~~
#>
#> Multifractal Detrended FLuctuation Analysis
#>
#> Spec_AUC Spec_Width Spec_CVplus Spec_CVmin Spec_CVtot Spec_CVasymm
#> 1 0.199 0.217 0.0709 0.104 0.0892 -0.189
#>
#>
#> ~~~o~~o~~casnet~~o~~o~~~
# 'multi' fractal
N <- 2048
y <- rowSums(data.frame(elascer(noise_powerlaw(N=N, alpha = -2)), elascer(noise_powerlaw(N=N, alpha = -.5))*c(rep(.2,512),rep(.5,512),rep(.7,512),rep(1,512))))
fd_mfdfa(y=y, doPlot = TRUE)
#>
#>
#> (mf)dfa: Sample rate was set to 1.
#>
#> `geom_smooth()` using formula = 'y ~ x'
#>
#> ~~~o~~o~~casnet~~o~~o~~~
#>
#> Multifractal Detrended FLuctuation Analysis
#>
#> Spec_AUC Spec_Width Spec_CVplus Spec_CVmin Spec_CVtot Spec_CVasymm
#> 1 0.212 0.246 0.0732 0.176 0.14 -0.412
#>
#>
#> ~~~o~~o~~casnet~~o~~o~~~