The tsprofile
method allows one to specify a
model with given parameters, simulate data from that model under
different lengths, and then estimate the parameters given the simulated
data, thus enabling the creation of parameter distributions under
different size assumptions. The goal of the exercise is to understand
how much variation under the true specified parameters we should expect
given each data size given the algorithms for estimation implemented in
this package.
When choosing n paths to generate for sizes of [400, 800, 1000], for instance, we simply simulate n x max(sizes), creating a (max size) x nsim matrix S, and then for each path (i) and size (j) we estimate S[1:j, i]. Thus the simulated data in size 1000 will include the simulated data for sizes 400 and 800 for each path (i).
The demonstration code below is illustrative of how to create a
specification with fixed parameters which can then be passed to the
tsprofile method. In real world applications, one should set nsim quite
high and the sizes guided by problem specific considerations. The method
can take advantage of parallel functionality using the
future
package as well as tracing using the
progressr
package.
library(tsdistributions)
library(future)
#>
#> Attaching package: 'future'
#> The following object is masked from 'package:rmarkdown':
#>
#> run
library(progressr)
plan(list(
tweak(sequential),
tweak(multisession, workers = 1)
))
# tracing using the progressr package
# handlers(global = TRUE)
# handlers("progress")
# set up some dummy data to establish the specification
spec <- distribution_modelspec(rnorm(100), distribution = "std")
# make sure to set all parameter values. The mu and sigma are otherwise defaulted
# to the mean and standard deviation of the data input.
spec$parmatrix[parameter %in% c("mu","sigma","shape"), value := c(0.0, 1.0, 5.0)]
sim <- tsprofile(spec, nsim = 100, sizes = c(400, 1000, 2000), seed = 100, trace = FALSE)
plan("sequential")
summary(sim)
#>
#> RMSE Profile Summary : STD
#>
#> actual 400 1000 2000
#> mu 0 0.04499 0.02755 0.01964
#> sigma 1 0.06008 0.03501 0.02531
#> shape 5 2.93846 0.87897 0.62052
#> skewness 0 0.00000 0.00000 0.00000
#> kurtosis 9 290.36471 72.09854 12.34290
Note that inspection of the returned object should be conducted to observe whether any NA values are present. If the estimation was no successful for a particular set of data, then NA values are returned. These are not excluded from the returned table, but the summary statistics table removes the NA’s (na.rm) in the calculation of the different measures.