View source: R/TruncatedStudentsT.R

TruncatedStudentsT | R Documentation |

Class and methods for left-, right-, and interval-truncated t distributions using the workflow from the distributions3 package.

TruncatedStudentsT(df, location = 0, scale = 1, left = -Inf, right = Inf)

`df` |
numeric. The degrees of freedom of the underlying |

`location` |
numeric. The location parameter of the underlying |

`scale` |
numeric. The scale parameter (standard deviation) of
the underlying |

`left` |
numeric. The left truncation point. Can be any real number,
defaults to |

`right` |
numeric. The right truncation point. Can be any real number,
defaults to |

The constructor function `TruncatedStudentsT`

sets up a distribution
object, representing the truncated t probability distribution by the
corresponding parameters: the degrees of freedom `df`

, the latent mean
`location`

= *μ* and latent scale parameter `scale`

= *σ*
(i.e., the parameters of the underlying *untruncated* t variable),
the `left`

truncation point (with `-Inf`

corresponding to untruncated),
and the `right`

truncation point (with `Inf`

corresponding to untruncated).

The truncated t distribution has probability density function (PDF) *f(x)*:

*f(x) = 1/σ τ((x - μ)/σ) /
(T((right - μ)/σ) - T((left - μ)/σ))*

for *left ≤ x ≤ right*, and 0 otherwise,
where *T* and *τ* are the cumulative distribution function
and probability density function of the standard t distribution with
`df`

degrees of freedom, respectively.

All parameters can also be vectors, so that it is possible to define a vector of truncated t distributions with potentially different parameters. All parameters need to have the same length or must be scalars (i.e., of length 1) which are then recycled to the length of the other parameters.

For the `TruncatedStudentsT`

distribution objects there is a wide range
of standard methods available to the generics provided in the distributions3
package: `pdf`

and `log_pdf`

for the (log-)density (PDF), `cdf`

for the probability
from the cumulative distribution function (CDF), `quantile`

for quantiles,
`random`

for simulating random variables,
`crps`

for the continuous ranked probability score
(CRPS), and `support`

for the support interval
(minimum and maximum). Internally, these methods rely on the usual d/p/q/r
functions provided for the truncated t distributions in the crch
package, see `dtt`

, and the `crps_tt`

function from the scoringRules package.
The methods `is_discrete`

and `is_continuous`

can be used to query whether the distributions are discrete on the entire support
(always `FALSE`

) or continuous on the entire support (always `TRUE`

).

See the examples below for an illustration of the workflow for the class and methods.

A `TruncatedStudentsT`

distribution object.

`dtt`

, `StudentsT`

, `CensoredStudentsT`

,
`TruncatedNormal`

, `TruncatedLogistic`

## package and random seed library("distributions3") set.seed(6020) ## three truncated t distributions: ## - untruncated standard t with 5 degrees of freedom ## - left-truncated at zero with 5 df, latent location = 1 and scale = 1 ## - interval-truncated in [0, 5] with 5 df, latent location = 2 and scale = 2 X <- TruncatedStudentsT( df = c( 5, 5, 5), location = c( 0, 1, 2), scale = c( 1, 1, 2), left = c(-Inf, 0, 0), right = c( Inf, Inf, 5) ) X ## compute mean of the truncated distribution mean(X) ## higher moments (variance, skewness, kurtosis) are not implemented yet ## support interval (minimum and maximum) support(X) ## simulate random variables random(X, 5) ## histograms of 1,000 simulated observations x <- random(X, 1000) hist(x[1, ], main = "untruncated") hist(x[2, ], main = "left-truncated at zero") hist(x[3, ], main = "interval-truncated in [0, 5]") ## probability density function (PDF) and log-density (or log-likelihood) x <- c(0, 0, 1) pdf(X, x) pdf(X, x, log = TRUE) log_pdf(X, x) ## cumulative distribution function (CDF) cdf(X, x) ## quantiles quantile(X, 0.5) ## cdf() and quantile() are inverses (except at truncation points) cdf(X, quantile(X, 0.5)) quantile(X, cdf(X, 1)) ## all methods above can either be applied elementwise or for ## all combinations of X and x, if length(X) = length(x), ## also the result can be assured to be a matrix via drop = FALSE p <- c(0.05, 0.5, 0.95) quantile(X, p, elementwise = FALSE) quantile(X, p, elementwise = TRUE) quantile(X, p, elementwise = TRUE, drop = FALSE) ## compare theoretical and empirical mean from 1,000 simulated observations cbind( "theoretical" = mean(X), "empirical" = rowMeans(random(X, 1000)) ) ## evaluate continuous ranked probability score (CRPS) using scoringRules library("scoringRules") crps(X, x)

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.