operators-methods: Methods for operators +,-,*,/,... in Package distr

operators-methodsR Documentation

Methods for operators +,-,*,/,... in Package distr

Description

Arithmetics and unary mathematical transformations for distributions

Arguments

e1,e2

objects of class "UnivariateDistribution" (or subclasses) or "numeric"

Details

Arithmetics as well as all functions from group Math, see Math are provided for distributions; wherever possible exact expressions are used; else random variables are generated according to this transformation and subsequently the remaining slots filled by RtoDPQ, RtoDPQ.d

Methods

-

signature(e1 = "UnivariateDistribution", e2 = "missing") unary operator; result again of class "UnivariateDistribution"; exact

-

signature(e1 = "Norm", e2 = "missing") unary operator; result again of "Norm"; exact

+

signature(e1 = "UnivariateDistribution", e2 = "numeric") result again of class "UnivariateDistribution"; exact

+

signature(e1 = "AbscontDistribution", e2 = "numeric") result of class "AffLinAbscontDistribution"; exact

+

signature(e1 = "DiscreteDistribution", e2 = "numeric") result of class "AffLinDiscreteDistribution"; exact

+

signature(e1 = "LatticeDistribution", e2 = "numeric") result of class "AffLinLatticeDistribution"; exact

+

signature(e1 = "UnivarLebDecDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

+

signature(e1 = "CompoundDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

+

signature(e1 = "AffLinAbscontDistribution", e2 = "numeric") result again of class "AffLinAbscontDistribution"; exact

+

signature(e1 = "AffLinDiscreteDistribution", e2 = "numeric") result again of class "AffLinDiscreteDistribution"; exact

+

signature(e1 = "AffLinLatticeDistribution", e2 = "numeric") result again of class "AffLinLatticeDistribution"; exact

+

signature(e1 = "AffLinUnivarLebDecDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

+

signature(e1 = "Cauchy", e2 = "numeric") result again of class "Cauchy"; exact

+

signature(e1 = "Dirac", e2 = "numeric") result again of class "Dirac"; exact

+

signature(e1 = "Norm", e2 = "numeric") result again of class "Norm"; exact

+

signature(e1 = "Unif", e2 = "numeric") result again of class "Unif"; exact

+

signature(e1 = "Logis", e2 = "numeric") result again of class "Logis"; exact

+

signature(e1 = "numeric", e2 = "UnivariateDistribution") is translated to signature(e1 = "UnivariateDistribution", e2 = "numeric"); exact

-

signature(e1 = "UnivariateDistribution", e2= "ANY");exact

-

signature(e1 = "UnivariateDistribution", e2 = "numeric") is translated to e1 + (-e2); exact

-

signature(e1 = "numeric", e2 = "UnivariateDistribution") is translated to (-e1) + e2; exact

-

signature(e1 = "numeric", e2 = "Beta") if ncp(e2)==0 and e1 == 1, an exact (central) Beta(shape1 = shape2(e2), shape2 = shape1(e2)) is returned, else the default method is used; exact

*

signature(e1 = "UnivariateDistribution", e2 = "numeric") result again of class "UnivariateDistribution"; exact

*

signature(e1 = "AbscontDistribution", e2 = "numeric") result of class "AffLinAbscontDistribution"; exact

*

signature(e1 = "DiscreteDistribution", e2 = "numeric") result of class "AffLinDiscreteDistribution"; exact

*

signature(e1 = "LatticeDistribution", e2 = "numeric") result of class "AffLinLatticeDistribution"; exact

*

signature(e1 = "UnivarLebDecDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

*

signature(e1 = "CompoundDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

*

signature(e1 = "AffLinAbscontDistribution", e2 = "numeric") result again of class "AffLinAbscontDistribution"; exact

*

signature(e1 = "AffLinDiscreteDistribution", e2 = "numeric") result again of class "AffLinDiscreteDistribution"; exact

*

signature(e1 = "AffLinLatticeDistribution", e2 = "numeric") result again of class "AffLinLatticeDistribution"; exact

*

signature(e1 = "AffLinUnivarLebDecDistribution", e2 = "numeric") result of class "AffLinUnivarLebDecDistribution"; exact

*

signature(e1 = "DExp", e2 = "numeric") if abs(e2)>0 result again of class "DExp"; exact

*

signature(e1 = "Exp", e2 = "numeric") if e2>0 result again of class "Exp"; exact

*

signature(e1 = "ExpOrGammaOrChisq", e2 = "numeric") if e1 is a Gamma distribution and e2>0 result of class "Gammad"; exact

*

signature(e1 = "Weibull", e2 = "numeric") if e2>0 result of class "Weibull"; exact

*

signature(e1 = "Cauchy", e2 = "numeric") if abs(e2)>0 result again of class "Cauchy"; exact

*

signature(e1 = "Dirac", e2 = "numeric") result again of class "Dirac"; exact

*

signature(e1 = "Norm", e2 = "numeric") if abs(e2)>0 result again of class "Norm"; exact

*

signature(e1 = "Unif", e2 = "numeric") if abs(e2)>0 result again of class "Unif"; exact

*

signature(e1 = "Logis", e2 = "numeric") if e2>0 result again of class "Logis"; exact

*

signature(e1 = "Lnorm", e2 = "numeric") if e2>0 result again of class "Lnorm"; exact

*

signature(e1 = "numeric", e2 = "UnivariateDistribution") is translated to signature(e1 = "UnivariateDistribution", e2 = "numeric"); exact

/

signature(e1 = "UnivariateDistribution", e2 = "numeric") is translated to e1 * (1/e2); exact

+

signature(e1 = "UnivariateDistribution", e2 = "UnivariateDistribution") result again of class "UnivariateDistribution"; is generated by simulations

-

signature(e1 = "UnivariateDistribution", e2 = "UnivariateDistribution") is translated to (-e1) + (-e2); result again of class "UnivariateDistribution"; is generated by simulations

-

signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): both operands are coerced to class "UnivarLebDecDistribution" and the corresponding method is used.

+

signature(e1 = "AbscontDistribution", e2 = "AbscontDistribution") assumes e1, e2 independent; result again of class "AbscontDistribution"; is generated by FFT

+

signature(e1 = "AbscontDistribution", e2 = "DiscreteDistribution") assumes e1, e2 independent; result again of class "AbscontDistribution"; is generated by FFT

+

signature(e1 = "DiscreteDistribution", e2 = "AbscontDistribution") assumes e1, e2 independent; result again of class "AbscontDistribution"; is generated by FFT

+

signature(e1 = "LatticeDistribution", e2 = "LatticeDistribution") assumes e1, e2 independent; if the larger lattice-width is an integer multiple of the smaller(in abs. value) one: result again of class "LatticeDistribution"; is generated by D/FFT

+

signature(e1 = "DiscreteDistribution", e2 = "DiscreteDistribution") assumes e1, e2 independent; result again of class "DiscreteDistribution"; is generated by explicite convolution

+

signature(e1 = "LatticeDistribution", e2 = "DiscreteDistribution") assumes e1, e2 independent; result again of class "DiscreteDistribution"; is generated by explicite convolution

+

signature(e1 = "UnivarLebDecDistribution", e2 = "UnivarLebDecDistribution") assumes e1, e2 independent; result again of class "UnivarLebDecDistribution"; is generated by separate explicite convolution of a.c. and discrete parts of e1 and e2 and subsequent flattening with flat.LCD; if getdistrOption("withSimplify") is TRUE, result is piped through a call to simplifyD

+

signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): both operands are coerced to class "UnivarLebDecDistribution" and the corresponding method is used.

+

signature(e1 = "Binom", e2 = "Binom") assumes e1, e2 independent; if prob(e1)==prob(e2), result again of class "Binom"; uses the convolution formula for binomial distributions; exact

+

signature(e1 = "Cauchy", e2 = "Cauchy") assumes e1, e2 independent; result again of class "Cauchy"; uses the convolution formula for Cauchy distributions; exact

+

signature(e1 = "Chisq", e2 = "Chisq") assumes e1, e2 independent; result again of class "Chisq"; uses the convolution formula for Chisq distributions; exact

+

signature(e1 = "Dirac", e2 = "Dirac") result again of class "Dirac"; exact

+

signature(e1 = "ExpOrGammaOrChisq", e2 = "ExpOrGammaOrChisq") assumes e1, e2 independent; if e1, e2 are Gamma distributions, result is of class "Gammad"; uses the convolution formula for Gamma distributions; exact

+

signature(e1 = "Pois", e2 = "Pois") assumes e1, e2 independent; result again of class "Pois"; uses the convolution formula for Poisson distributions; exact

+

signature(e1 = "Nbinom", e2 = "Nbinom") assumes e1, e2 independent; if prob(e1)==prob(e2), result again of class "Nbinom"; uses the convolution formula for negative binomial distributions; exact

+

signature(e1 = "Norm", e2 = "Norm") assumes e1, e2 independent; result again of class "Norm"; uses the convolution formula for normal distributions; exact

+

signature(e1 = "UnivariateDistribution", e2 = "Dirac") translated to e1 + location(e2); result again of class "Dirac"; exact

+

signature(e1 = "Dirac", e2 = "UnivariateDistribution") translated to e2 + location(e1); result again of class "Dirac"; exact

+

signature(e1 = "Dirac", e2 = "DiscreteDistribution") translated to e2 + location(e1); result again of class "Dirac"; exact

-

signature(e1 = "Dirac", e2 = "Dirac") result again of class "Dirac"; exact

*

signature(e1 = "Dirac", e2 = "Dirac") result again of class "Dirac"; exact

*

signature(e1 = "UnivariateDistribution", e2 = "Dirac") translated to e1 * location(e2); result again of class "Dirac"; exact

*

signature(e1 = "Dirac", e2 = "UnivariateDistribution") translated to e2 * location(e1); result again of class "Dirac"; exact

*

signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): by means of decomposePM e1 and e2 are decomposed into positive and negative parts; of these, convolutions of the corresponding logarithms are computed separately and finally exp is applied to them, again separately; the resulting mixing components are then “flattened” to one object of class UnivarLebDecDistribution by flat.LCD which according to getdistrOption(withSimplify) gets piped through a call to simplifyD.

/

signature(e1 = "Dirac", e2 = "Dirac") result again of class "Dirac"; exact

/

signature(e1 = "numeric", e2 = "Dirac") result again of class "Dirac"; exact

/

signature(e1 = "numeric", e2 = "AcDcLcDistribution"): if d.discrete(e2)(0)*discreteWeight(e2)>0 throws an error (would give division by 0 with positive probability); else by means of decomposePM e2 is decomposed into positive and negative parts; then, similarly the result obtains as for "*"(signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution")) by the exp-log trick and is “flattened” to one object of class UnivarLebDecDistribution by flat.LCD and according to getdistrOption(withSimplify) is piped through a call to simplifyD; exact..

/

signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): translated to e1 * (1/e2).

^

signature(e1 = "AcDcLcDistribution", e2 = "Integer"): if e2=0 returns Dirac(1); if e2=1 returns e1; if e2<0 translated to (1/e1)^(-e2); exact.

^

signature(e1 = "AcDcLcDistribution", e2 = "numeric"): if e2 is integer uses preceding item; else if e1< 0 with positive probability, throughs an error; else the result obtains similarly to "*"(signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution")) by the exp-log trick and is “flattened” to one object of class UnivarLebDecDistribution by flat.LCD and according to getdistrOption(withSimplify) is piped through a call to simplifyD; exact.

^

signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): if e1 is negative with positive probability, throws an error if e2 is non-integer with positive probability; if e1 is 0 with positive probability throws an error if e2 is non-integer with positive probability. if e2 is integer with probability 1 uses DiscreteDistribution(supp=e1^(Dirac(x)) for each x in support(e2), builds up a corresponding mixing distribution; the latter is “flattened” to one object of class UnivarLebDecDistribution by flat.LCD and according to getdistrOption(withSimplify) is piped through a call to simplifyD. Else the result obtains similarly to "*"(signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution")) by the exp-log trick and is “flattened” to one object of class UnivarLebDecDistribution by flat.LCD and according to getdistrOption(withSimplify) is piped through a call to simplifyD; exact.

^

signature(e1 = "numeric", e2 = "AcDcLcDistribution"): if e1 is negative, throws an error if e2 is non-integer with positive probability; if e1 is 0 throws an error if e2 is non-integer with positive probability. if e2 is integer with probability 1 uses DiscreteDistribution(supp=e1^support(e2), prob=discrete.d(supp)) else the result obtains similarly to "*"(signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution")) by the exp-log trick and is “flattened” to one object of class UnivarLebDecDistribution by flat.LCD and according to getdistrOption(withSimplify) is piped through a call to simplifyD; exact.

References

Ruckdeschel, P., Kohl, M.(2014): General purpose convolution algorithm for distributions in S4-Classes by means of FFT. J. Statist. Softw. 59(4): 1-25.

See Also

UnivariateDistribution-class AbscontDistribution-class
DiscreteDistribution-class LatticeDistribution-class
Norm-class Binom-class Pois-class Dirac-class
Cauchy-class Gammad-class Logis-class Lnorm-class
Exp-class Weibull-class Nbinom-class

Examples

N <- Norm(0,3)
P <- Pois(4)
a <- 3
N + a
N + P
N - a
a * N
a * P
N / a + sin( a * P - N)
N * P
N / N

## takes a little time
N ^ P

1.2 ^ N
abs(N) ^ 1.3

distr documentation built on May 31, 2023, 5:58 p.m.