--- title: "Profile Demo" author: "Alexios Galanos" date: "`r Sys.Date()`" output: rmarkdown::html_vignette: css: custom.css vignette: > %\VignetteIndexEntry{Profile Demo} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` 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. ```{r} 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) ``` 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.