View source: R/TruncatedLogistic.R
| TruncatedLogistic | R Documentation |
Class and methods for left-, right-, and interval-truncated logistic distributions using the workflow from the distributions3 package.
TruncatedLogistic(location = 0, scale = 1, left = -Inf, right = Inf)
location |
numeric. The location parameter of the underlying untruncated
logistic distribution, typically written |
scale |
numeric. The scale parameter (standard deviation) of
the underlying untruncated logistic distribution,
typically written |
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 TruncatedLogistic sets up a distribution
object, representing the truncated logistic probability distribution by the
corresponding parameters: the latent mean location = \mu and
latent standard deviation scale = \sigma (i.e., the parameters
of the underlying untruncated logistic variable), the left truncation
point (with -Inf corresponding to untruncated), and the
right truncation point (with Inf corresponding to untruncated).
The truncated logistic distribution has probability density function (PDF):
f(x) = 1/\sigma \lambda((x - \mu)/\sigma) / (\Lambda((right - \mu)/\sigma) - \Lambda((left - \mu)/\sigma))
for left \le x \le right, and 0 otherwise,
where \Lambda and \lambda are the cumulative distribution function
and probability density function of the standard logistic distribution,
respectively.
All parameters can also be vectors, so that it is possible to define a vector of truncated logistic 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 TruncatedLogistic 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 logistic distributions in the crch
package, see dtlogis, and the crps_tlogis
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 TruncatedLogistic distribution object.
dtlogis, Logistic, CensoredLogistic,
TruncatedNormal, TruncatedStudentsT
## package and random seed
library("distributions3")
set.seed(6020)
## three truncated logistic distributions:
## - untruncated standard logistic
## - left-truncated at zero with latent location = 1 and scale = 1
## - interval-truncated in [0, 5] with latent location = 2 and scale = 1
X <- TruncatedLogistic(
location = c( 0, 1, 2),
scale = c( 1, 1, 1),
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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.