| operators-methods {distr} | R Documentation | 
Methods for operators +,-,*,/,... in Package distr
Description
Arithmetics and unary mathematical transformations for distributions
Arguments
| e1,e2 |  objects of class  | 
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)==0and- 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)>0result again of class- "DExp"; exact
- *
- signature(e1 = "Exp", e2 = "numeric")if- e2>0result again of class- "Exp"; exact
- *
- signature(e1 = "ExpOrGammaOrChisq", e2 = "numeric")if- e1is a Gamma distribution and- e2>0result of class- "Gammad"; exact
- *
- signature(e1 = "Weibull", e2 = "numeric")if- e2>0result of class- "Weibull"; exact
- *
- signature(e1 = "Cauchy", e2 = "numeric")if- abs(e2)>0result again of class- "Cauchy"; exact
- *
- signature(e1 = "Dirac", e2 = "numeric")result again of class- "Dirac"; exact
- *
- signature(e1 = "Norm", e2 = "numeric")if- abs(e2)>0result again of class- "Norm"; exact
- *
- signature(e1 = "Unif", e2 = "numeric")if- abs(e2)>0result again of class- "Unif"; exact
- *
- signature(e1 = "Logis", e2 = "numeric")if- e2>0result again of class- "Logis"; exact
- *
- signature(e1 = "Lnorm", e2 = "numeric")if- e2>0result 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,- e2independent; result again of class- "AbscontDistribution"; is generated by FFT
- +
- signature(e1 = "AbscontDistribution", e2 = "DiscreteDistribution")assumes- e1,- e2independent; result again of class- "AbscontDistribution"; is generated by FFT
- +
- signature(e1 = "DiscreteDistribution", e2 = "AbscontDistribution")assumes- e1,- e2independent; result again of class- "AbscontDistribution"; is generated by FFT
- +
- signature(e1 = "LatticeDistribution", e2 = "LatticeDistribution")assumes- e1,- e2independent; 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,- e2independent; result again of class- "DiscreteDistribution"; is generated by explicite convolution
- +
- signature(e1 = "LatticeDistribution", e2 = "DiscreteDistribution")assumes- e1,- e2independent; result again of class- "DiscreteDistribution"; is generated by explicite convolution
- +
- signature(e1 = "UnivarLebDecDistribution", e2 = "UnivarLebDecDistribution")assumes- e1,- e2independent; result again of class- "UnivarLebDecDistribution"; is generated by separate explicite convolution of a.c. and discrete parts of- e1and- e2and 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,- e2independent; 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,- e2independent; result again of class- "Cauchy"; uses the convolution formula for Cauchy distributions; exact
- +
- signature(e1 = "Chisq", e2 = "Chisq")assumes- e1,- e2independent; 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,- e2independent; if- e1,- e2are Gamma distributions, result is of class- "Gammad"; uses the convolution formula for Gamma distributions; exact
- +
- signature(e1 = "Pois", e2 = "Pois")assumes- e1,- e2independent; result again of class- "Pois"; uses the convolution formula for Poisson distributions; exact
- +
- signature(e1 = "Nbinom", e2 = "Nbinom")assumes- e1,- e2independent; 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,- e2independent; 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- e1and- e2are decomposed into positive and negative parts; of these, convolutions of the corresponding logarithms are computed separately and finally- expis applied to them, again separately; the resulting mixing components are then “flattened” to one object of class- UnivarLebDecDistributionby- flat.LCDwhich 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)>0throws an error (would give division by 0 with positive probability); else by means of- decomposePM- e2is 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- UnivarLebDecDistributionby- flat.LCDand 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=0returns- Dirac(1); if- e2=1returns- e1; if- e2<0translated to- (1/e1)^(-e2); exact.
- ^
- signature(e1 = "AcDcLcDistribution", e2 = "numeric"): if- e2is integer uses preceding item; else if- e1< 0with 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- UnivarLebDecDistributionby- flat.LCDand according to- getdistrOption(withSimplify)is piped through a call to- simplifyD; exact.
- ^
- signature(e1 = "AcDcLcDistribution", e2 = "AcDcLcDistribution"): if- e1is negative with positive probability, throws an error if- e2is non-integer with positive probability; if- e1is 0 with positive probability throws an error if- e2is non-integer with positive probability. if- e2is integer with probability 1 uses- DiscreteDistribution(supp=e1^(Dirac(x))for each- xin- support(e2), builds up a corresponding mixing distribution; the latter is “flattened” to one object of class- UnivarLebDecDistributionby- flat.LCDand 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- UnivarLebDecDistributionby- flat.LCDand according to- getdistrOption(withSimplify)is piped through a call to- simplifyD; exact.
- ^
- signature(e1 = "numeric", e2 = "AcDcLcDistribution"): if- e1is negative, throws an error if- e2is non-integer with positive probability; if- e1is 0 throws an error if- e2is non-integer with positive probability. if- e2is 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- UnivarLebDecDistributionby- flat.LCDand 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