| operators-methods | R Documentation | 
Arithmetics and unary mathematical transformations for distributions
| e1,e2 |  objects of class  | 
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
-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.
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.
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
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.