Apply arithmetic operators to probability distributions. These operations transform distributions in intuitive ways, treating them similarly to numeric values.
Supported Operators
d + aora + dShifts the distribution by adding constant
a. Equivalent toshift().d - aShifts the distribution by subtracting constant
a. Equivalent toshift(d, -a).-dFlips the distribution (negation). Equivalent to
flip().d * aora * dScales the distribution by multiplying by constant
a. Equivalent tomultiply().d / aScales the distribution by dividing by constant
a. Equivalent tomultiply(d, 1/a).a / dReturns the distribution of
a / X(reciprocal scaling). Fora = 1, equivalent toinvert().d ^ aRaises the distribution to power
a. For positive distributions only, computed asexp(a * log(d)).a ^ dReturns the distribution of
a^X. Requires positive basea.
Power Operator Details
The power operator ^ deserves special attention:
When the base is a distribution (e.g.,
dst_beta(1, 1)^2), it computes the distribution ofX^ausing the transformationexp(a * log(X)). This requires all values in the distribution to be positive.When the exponent is a distribution (e.g.,
2^dst_norm(0, 1)), it computes the distribution ofa^Xusingexp(X * log(a)). The baseamust be positive.
These implementations internally use both Math.dst() methods log()
and exp().
See also
shift(),multiply(),flip(),invert()for the underlying transformation functionsMath.dst()forlog(),exp(), andsqrt()functions
Examples
d <- distionary::dst_beta(3, 2)
# Shifting and scaling
d + 10 # Shift right by 10
#> Shifted distribution (continuous)
#> --Parameters--
#> $distribution
#> Beta distribution (continuous)
#> --Parameters--
#> shape1 shape2
#> 3 2
#>
#> $shift
#> [1] 10
#>
d * 2 # Scale by 2
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Beta distribution (continuous)
#> --Parameters--
#> shape1 shape2
#> 3 2
#>
#> $constant
#> [1] 2
#>
3 * d - 5 # Scale then shift
#> Shifted distribution (continuous)
#> --Parameters--
#> $distribution
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Beta distribution (continuous)
#> --Parameters--
#> shape1 shape2
#> 3 2
#>
#> $constant
#> [1] 3
#>
#>
#> $shift
#> [1] -5
#>
# Power operations
exp(d) # e^X: exponential of Beta
#> Exponentiated distribution (continuous)
#> --Parameters--
#> $distribution
#> Beta distribution (continuous)
#> --Parameters--
#> shape1 shape2
#> 3 2
#>
2^d # 2^X: base 2 raised to Beta
#> Exponentiated distribution (continuous)
#> --Parameters--
#> $distribution
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Beta distribution (continuous)
#> --Parameters--
#> shape1 shape2
#> 3 2
#>
#> $constant
#> [1] 0.6931472
#>
#>
# With positive distributions
d_pos <- distionary::dst_unif(1, 2)
d_pos^2 # X^2: uniform squared
#> Exponentiated distribution (continuous)
#> --Parameters--
#> $distribution
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Logarithmic distribution (continuous)
#> --Parameters--
#> $distribution
#> Uniform distribution (continuous)
#> --Parameters--
#> min max
#> 1 2
#>
#>
#> $constant
#> [1] 2
#>
#>
d_pos^0.5 # sqrt(X): square root
#> Exponentiated distribution (continuous)
#> --Parameters--
#> $distribution
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Logarithmic distribution (continuous)
#> --Parameters--
#> $distribution
#> Uniform distribution (continuous)
#> --Parameters--
#> min max
#> 1 2
#>
#>
#> $constant
#> [1] 0.5
#>
#>
sqrt(d_pos) # Equivalent to d_pos^0.5
#> Exponentiated distribution (continuous)
#> --Parameters--
#> $distribution
#> Scaled distribution (continuous)
#> --Parameters--
#> $distribution
#> Logarithmic distribution (continuous)
#> --Parameters--
#> $distribution
#> Uniform distribution (continuous)
#> --Parameters--
#> min max
#> 1 2
#>
#>
#> $constant
#> [1] 0.5
#>
#>
