Profile Demo

Alexios Galanos

2024-03-14

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 algorihtms 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 demonstation 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)
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.36839 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.