Mathematical and statistical functions for the Arrdist distribution, which is commonly used in matrixed Bayesian estimators such as Kaplan-Meier with confidence bounds over arbitrary dimensions.

Returns an R6 object inheriting from class SDistribution.

The Arrdist distribution is defined by the pmf, $$f(x_{ijk}) = p_{ijk}$$ for \(p_{ijk}, i = 1,\ldots,a, j = 1,\ldots,b; \sum_i p_{ijk} = 1\).

This is a generalised case of Matdist with a third dimension over an arbitrary length.
By default all results are returned for the median curve as determined by
`(dim(a)[3L] + 1)/2`

where `a`

is the array and assuming third dimension is odd,
this can be changed by setting the `which.curve`

parameter.

Given the complexity in construction, this distribution is not mutable (cannot be updated after construction).

The distribution is supported on \(x_{111},...,x_{abc}\).

Arrdist(array(0.5, c(2, 2, 2), list(NULL, 1:2, NULL)))

N/A

N/A

McLaughlin, M. P. (2001). A compendium of common probability distributions (pp. 2014-01). Michael P. McLaughlin.

Other discrete distributions:
`Bernoulli`

,
`Binomial`

,
`Categorical`

,
`Degenerate`

,
`DiscreteUniform`

,
`EmpiricalMV`

,
`Empirical`

,
`Geometric`

,
`Hypergeometric`

,
`Logarithmic`

,
`Matdist`

,
`Multinomial`

,
`NegativeBinomial`

,
`WeightedDiscrete`

Other univariate distributions:
`Arcsine`

,
`Bernoulli`

,
`BetaNoncentral`

,
`Beta`

,
`Binomial`

,
`Categorical`

,
`Cauchy`

,
`ChiSquaredNoncentral`

,
`ChiSquared`

,
`Degenerate`

,
`DiscreteUniform`

,
`Empirical`

,
`Erlang`

,
`Exponential`

,
`FDistributionNoncentral`

,
`FDistribution`

,
`Frechet`

,
`Gamma`

,
`Geometric`

,
`Gompertz`

,
`Gumbel`

,
`Hypergeometric`

,
`InverseGamma`

,
`Laplace`

,
`Logarithmic`

,
`Logistic`

,
`Loglogistic`

,
`Lognormal`

,
`Matdist`

,
`NegativeBinomial`

,
`Normal`

,
`Pareto`

,
`Poisson`

,
`Rayleigh`

,
`ShiftedLoglogistic`

,
`StudentTNoncentral`

,
`StudentT`

,
`Triangular`

,
`Uniform`

,
`Wald`

,
`Weibull`

,
`WeightedDiscrete`

`distr6::Distribution`

-> `distr6::SDistribution`

-> `Arrdist`

`name`

Full name of distribution.

`short_name`

Short name of distribution for printing.

`description`

Brief description of the distribution.

`alias`

Alias of the distribution.

`properties`

Returns distribution properties, including skewness type and symmetry.

`distr6::Distribution$cdf()`

`distr6::Distribution$confidence()`

`distr6::Distribution$correlation()`

`distr6::Distribution$getParameterValue()`

`distr6::Distribution$iqr()`

`distr6::Distribution$liesInSupport()`

`distr6::Distribution$liesInType()`

`distr6::Distribution$parameters()`

`distr6::Distribution$pdf()`

`distr6::Distribution$prec()`

`distr6::Distribution$print()`

`distr6::Distribution$quantile()`

`distr6::Distribution$rand()`

`distr6::Distribution$setParameterValue()`

`distr6::Distribution$stdev()`

`distr6::Distribution$summary()`

`distr6::Distribution$workingSupport()`

`new()`

Creates a new instance of this R6 class.

`Arrdist$new(pdf = NULL, cdf = NULL, which.curve = 0.5, decorators = NULL)`

`pdf`

`numeric()`

Probability mass function for corresponding samples, should be same length`x`

. If`cdf`

is not given then calculated as`cumsum(pdf)`

.`cdf`

`numeric()`

Cumulative distribution function for corresponding samples, should be same length`x`

. If given then`pdf`

calculated as difference of`cdf`

s.`which.curve`

`numeric(1) | character(1)`

Which curve (third dimension) should results be displayed for? If between (0,1) taken as the quantile of the curves otherwise if greater than 1 taken as the curve index, can also be 'mean'. See examples.`decorators`

`(character())`

Decorators to add to the distribution during construction.

`mean()`

The arithmetic mean of a (discrete) probability distribution X is the expectation $$E_X(X) = \sum p_X(x)*x$$ with an integration analogue for continuous distributions. If distribution is improper (F(Inf) != 1, then E_X(x) = Inf).

`median()`

Returns the median of the distribution. If an analytical expression is available
returns distribution median, otherwise if symmetric returns `self$mean`

, otherwise
returns `self$quantile(0.5)`

.

`mode()`

The mode of a probability distribution is the point at which the pdf is a local maximum, a distribution can be unimodal (one maximum) or multimodal (several maxima).

`variance()`

The variance of a distribution is defined by the formula $$var_X = E[X^2] - E[X]^2$$ where \(E_X\) is the expectation of distribution X. If the distribution is multivariate the covariance matrix is returned. If distribution is improper (F(Inf) != 1, then var_X(x) = Inf).

`skewness()`

The skewness of a distribution is defined by the third standardised moment, $$sk_X = E_X[\frac{x - \mu}{\sigma}^3]$$ where \(E_X\) is the expectation of distribution X, \(\mu\) is the mean of the distribution and \(\sigma\) is the standard deviation of the distribution. If distribution is improper (F(Inf) != 1, then sk_X(x) = Inf).

`kurtosis()`

The kurtosis of a distribution is defined by the fourth standardised moment, $$k_X = E_X[\frac{x - \mu}{\sigma}^4]$$ where \(E_X\) is the expectation of distribution X, \(\mu\) is the mean of the distribution and \(\sigma\) is the standard deviation of the distribution. Excess Kurtosis is Kurtosis - 3. If distribution is improper (F(Inf) != 1, then k_X(x) = Inf).

`entropy()`

The entropy of a (discrete) distribution is defined by $$- \sum (f_X)log(f_X)$$ where \(f_X\) is the pdf of distribution X, with an integration analogue for continuous distributions. If distribution is improper then entropy is Inf.

`mgf()`

The moment generating function is defined by $$mgf_X(t) = E_X[exp(xt)]$$ where X is the distribution and \(E_X\) is the expectation of the distribution X. If distribution is improper (F(Inf) != 1, then mgf_X(x) = Inf).

`cf()`

The characteristic function is defined by $$cf_X(t) = E_X[exp(xti)]$$ where X is the distribution and \(E_X\) is the expectation of the distribution X. If distribution is improper (F(Inf) != 1, then cf_X(x) = Inf).

`pgf()`

The probability generating function is defined by $$pgf_X(z) = E_X[exp(z^x)]$$ where X is the distribution and \(E_X\) is the expectation of the distribution X. If distribution is improper (F(Inf) != 1, then pgf_X(x) = Inf).

```
x <- Arrdist$new(pdf = array(0.5, c(3, 2, 4),
dimnames = list(NULL, 1:2, NULL)))
Arrdist$new(cdf = array(c(0.5, 0.5, 0.5, 1, 1, 1), c(3, 2, 4),
dimnames = list(NULL, 1:2, NULL))) # equivalently
#> Arrdist(3x2x4)
# d/p/q/r
x$pdf(1)
#> [,1] [,2] [,3]
#> 1 0.5 0.5 0.5
x$cdf(1:2) # Assumes ordered in construction
#> [,1] [,2] [,3]
#> 1 0.5 0.5 0.5
#> 2 1.0 1.0 1.0
x$quantile(0.42) # Assumes ordered in construction
#> [,1] [,2] [,3]
#> [1,] 1 1 1
x$rand(10)
#> [,1] [,2] [,3]
#> [1,] 2 1 2
#> [2,] 1 2 1
#> [3,] 1 2 1
#> [4,] 2 2 2
#> [5,] 2 2 1
#> [6,] 2 2 1
#> [7,] 2 2 2
#> [8,] 2 2 1
#> [9,] 1 2 1
#> [10,] 1 1 1
# Statistics
x$mean()
#> [1] 1.5 1.5 1.5
x$variance()
#> [1] 0.25 0.25 0.25
summary(x)
#> Array Probability Distribution.
#> Parameterised with:
#>
#> Id Support
#> <char> <char>
#> 1: cdf [0,1]^n
#> 2: pdf [0,1]^n
#> 3: which.curve {mean} ∪ ℤ ∪ (0,1)
#> 4: x ℤ
#> Value
#> <list>
#> 1:
#> 2: 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,...
#> 3: 0.5
#> 4:
#> Tags
#> <list>
#> 1: required,linked
#> 2: required,linked
#> 3: required
#> 4: immutable
#>
#>
#> Quick Statistics
#> Mean: 1.5, 1.5, 1.5
#> Variance: 0.25, 0.25, 0.25
#> Skewness: 000
#> Ex. Kurtosis: -2-2-2
#>
#> Support: {1, 2} Scientific Type: ℝ^n
#>
#> Traits: discrete; univariate
#> Properties: asymmetric; platykurtic platykurtic platykurtic; no skew no skew no skew
# Changing which.curve
arr <- array(runif(90), c(3, 2, 5), list(NULL, 1:2, NULL))
arr <- aperm(apply(arr, c(1, 3), function(x) x / sum(x)), c(2, 1, 3))
arr[, , 1:3]
#> , , 1
#>
#> 1 2
#> [1,] 0.04677327 0.9532267
#> [2,] 0.32013436 0.6798656
#> [3,] 0.41040922 0.5895908
#>
#> , , 2
#>
#> 1 2
#> [1,] 0.7650905 0.2349095
#> [2,] 0.5823992 0.4176008
#> [3,] 0.2655225 0.7344775
#>
#> , , 3
#>
#> 1 2
#> [1,] 0.45597150 0.5440285
#> [2,] 0.46175050 0.5382495
#> [3,] 0.08836011 0.9116399
#>
x <- Arrdist$new(arr)
x$mean() # default 0.5 quantile (in this case index 3)
#> [1] 1.544029 1.417601 1.634341
x$setParameterValue(which.curve = 3) # equivalently
x$mean()
#> [1] 1.544029 1.538250 1.911640
# 1% quantile
x$setParameterValue(which.curve = 0.01)
x$mean()
#> [1] 0.5319016 0.4988487 1.1706783
# 5th index
x$setParameterValue(which.curve = 5)
x$mean()
#> [1] 1.591033 1.077222 1.634341
# mean
x$setParameterValue(which.curve = "mean")
x$mean()
#> [1] 1.513675 1.404545 1.681100
```