Description Usage Arguments Details References Examples
Generates timeseries with given properties, just provide (1) the target marginal distribution and its parameters, (2) the target autocorrelation structure or individual autocorrelation values up to a desired lag, and (3) the probablility zero if you wish to simulate an intermittent process.
1 2 3 4 5 6 7 8 9 10 |
n |
number of values |
margdist |
target marginal distribution |
margarg |
list of marginal distribution arguments |
p |
integer - model order (if NULL - limits maximum model order according to auto-correlation structure values) |
p0 |
probability zero |
TSn |
number of timeseries to be generated |
distbounds |
distribution bounds (default set to c(-Inf, Inf)) |
acsvalue |
target auto-correlation structure (from lag 0) |
A step-by-step guide:
First define the target marginal (margdist
), that is, the probability distribution
of the generated data. For example set margdist = 'ggamma'
if you wish to generate
data following the Generalized Gamma distribution, margidst = 'burrXII'
for Burr
type XII distribution etc. For a full list of the distributions we support see the
help vignette.
In general, the package supports all build-in distribution functions of R and of other packages.
Define the parameters' values (margarg
) of the distribution you selected. For example
the Generalized Gamma has one scale and two shape parameters so set the desired value,
e.g., margarg = list(scale = 2, shape1 = 0.9, shape2 = 0.8)
. Note distributions might
have different number of parameters and different type of parameters (location, scale, shape).
See the help vignette
for details on the parameters of each distribution we support.
If you wish your time series to be intermittent (e.g., precipitation), then define the probability zero. For example, set p0 = 0.9, if you wish your generated data to have 90% of zero values (dry days).
Define your linear autocorrelations.
You can supply specific lag autocorrelations starting from lag 0
and up to a desired lag, e.g., acs = c(1, 0.9, 0.8, 0.7)
; this will generate
a process with lag1, 2 and 3 autocorrelations equal with 0.9, 0.8 and 0.7.
Alternatively, you can use a parametric autocorrelation structure (see section 3.2 in
Papalexiou (2018).
We support the following autocorrelation structures (acs) weibull, paretoII,
fgn and burrXII. See also acs
examples.
Define the order to the autoregressive model p. For example if you aim to preserve the first 10 lag autocorrelations then just set p = 10. Otherwise set it p = NULL and the model will decide the value of p in order to preserve the whole autocorrelation structure.
Lastly just define the time series length, e.g., n = 1000
and number of time series
you wish to generate, e.g., TSn = 10
.
Play around with the following given examples which will make the whole process a piece of cake.
Papalexiou, S.M. (2018). Unified theory for stochastic modelling of hydroclimatic processes: Preserving marginal distributions, correlation structures, and intermittency. Advances in Water Resources, 115, 234-252, doi: 10.1016/j.advwatres.2018.02.013
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | library(CoSMoS)
## Case1:
## You wish to generate 3 time series of size 1000 each
## that follow the Generalized Gamma distribution with parameters
## scale = 1, shape1 = 0.8, shape2 = 0.8
## and autocorrelation structure the ParetoII
## with parameters scale = 1 and shape = .75
x <- generateTS(margdist = 'ggamma',
margarg = list(scale = 1,
shape1 = .8,
shape2 = .8),
acsvalue = acs(id = 'paretoII',
t = 0:30,
scale = 1,
shape = .75),
n = 1000,
p = 30,
TSn = 3)
## see the results
plot(x)
## Case2:
## You wish to generate time series the same distribution
## and autocorrelations as is Case1 but intermittent
## with probability zero equal to 90%
y <- generateTS(margdist = 'ggamma',
margarg = list(scale = 1,
shape1 = .8,
shape2 = .8),
acsvalue = acs(id = 'paretoII',
t = 0:30,
scale = 1,
shape = .75),
p0 = .9,
n = 1000,
p = 30,
TSn = 3)
## see the results
plot(y)
## Case3:
## You wish to generate a time series of size 1000
## that follows the Beta distribution
## (e.g., relative humidity ranging from 0 to 1)
## with parameters shape1 = 0.8, shape2 = 0.8, is defined from 0 to 1
## and autocorrelation structure the ParetoII
## with parameters scale = 1 and shape = .75
z <- generateTS(margdist = 'beta',
margarg = list(shape1 = .6,
shape2 = .8),
distbounds = c(0, 1),
acsvalue = acs(id = 'paretoII',
t = 0:30,
scale = 1,
shape = .75),
n = 1000,
p = 20)
## see the results
plot(z)
## Case4:
## Same in previous case but now you provide specific
## autocorrelation values for the first three lags,
## ie.., lag 1 to 3 equal to 0.9, 0.8 and 0.7
z <- generateTS(margdist = 'beta',
margarg = list(shape1 = .6,
shape2 = .8),
distbounds = c(0, 1),
acsvalue = c(1, .9, .8, .7),
n = 1000,
p = TRUE)
## see the results
plot(z)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.