# E

##### Generic Function for the Computation of (Conditional) Expectations

Generic function for the computation of (conditional) expectations.

- Keywords
- methods, distribution

##### Usage

`E(object, fun, cond, ...)`# S4 method for UnivariateDistribution,missing,missing
E(object,
low = NULL, upp = NULL, Nsim = getdistrExOption("MCIterations"), ...)

# S4 method for UnivariateDistribution,function,missing
E(object, fun,
useApply = TRUE, low = NULL, upp = NULL,
Nsim = getdistrExOption("MCIterations"), ...)

# S4 method for AbscontDistribution,missing,missing
E(object, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for AbscontDistribution,function,missing
E(object, fun, useApply = TRUE,
low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for UnivarMixingDistribution,missing,missing
E(object, low = NULL,
upp = NULL, rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for UnivarMixingDistribution,function,missing
E(object, fun,
useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for UnivarMixingDistribution,missing,ANY
E(object, cond, low = NULL,
upp = NULL, rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for UnivarMixingDistribution,function,ANY
E(object, fun, cond,
useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for DiscreteDistribution,function,missing
E(object, fun, useApply = TRUE,
low = NULL, upp = NULL, ...)

# S4 method for AffLinDistribution,missing,missing
E(object, low = NULL, upp = NULL,
..., diagnostic = FALSE)

# S4 method for AffLinUnivarLebDecDistribution,missing,missing
E(object, low = NULL,
upp = NULL, ..., diagnostic = FALSE)

# S4 method for MultivariateDistribution,missing,missing
E(object,
Nsim = getdistrExOption("MCIterations"), ...)
# S4 method for MultivariateDistribution,function,missing
E(object, fun,
useApply = TRUE, Nsim = getdistrExOption("MCIterations"), ...)

# S4 method for DiscreteMVDistribution,missing,missing
E(object, low = NULL,
upp = NULL, ...)

# S4 method for DiscreteMVDistribution,function,missing
E(object, fun,
useApply = TRUE, ...)

# S4 method for AbscontCondDistribution,missing,numeric
E(object, cond,
useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)

# S4 method for DiscreteCondDistribution,missing,numeric
E(object, cond,
useApply = TRUE, low = NULL, upp = NULL, ...)

# S4 method for UnivariateCondDistribution,function,numeric
E(object, fun, cond,
withCond = FALSE, useApply = TRUE, low = NULL, upp = NULL,
Nsim = getdistrExOption("MCIterations"), ...)

# S4 method for AbscontCondDistribution,function,numeric
E(object, fun, cond,
withCond = FALSE, useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac")
, ..., diagnostic = FALSE)

# S4 method for DiscreteCondDistribution,function,numeric
E(object, fun, cond,
withCond = FALSE, useApply = TRUE, low = NULL, upp = NULL,...)

# S4 method for UnivarLebDecDistribution,missing,missing
E(object, low = NULL,
upp = NULL, rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE )
# S4 method for UnivarLebDecDistribution,function,missing
E(object, fun,
useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE )
# S4 method for UnivarLebDecDistribution,missing,ANY
E(object, cond, low = NULL,
upp = NULL, rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE )
# S4 method for UnivarLebDecDistribution,function,ANY
E(object, fun, cond,
useApply = TRUE, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE )

# S4 method for AcDcLcDistribution,ANY,ANY
E(object, fun, cond, low = NULL,
upp = NULL, rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = getdistrExOption("IQR.fac"), ..., diagnostic = FALSE)
# S4 method for CompoundDistribution,missing,missing
E(object, low = NULL,
upp = NULL, ..., diagnostic = FALSE)

# S4 method for Arcsine,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Beta,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Binom,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Cauchy,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Cauchy,function,missing
E(object, fun, low = NULL, upp = NULL,
rel.tol = getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = max(1e4,getdistrExOption("IQR.fac")), ..., diagnostic = FALSE)
# S4 method for Chisq,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Dirac,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for DExp,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Exp,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Fd,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Gammad,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Gammad,function,missing
E(object, fun, low = NULL, upp = NULL,
rel.tol = getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = max(1e4,getdistrExOption("IQR.fac")), ..., diagnostic = FALSE)
# S4 method for Geom,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Hyper,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Logis,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Lnorm,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Nbinom,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Norm,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Pois,missing,missing
E(object, low = NULL, upp = NULL, ...)
# S4 method for Unif,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Td,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Weibull,missing,missing
E(object, low = NULL, upp = NULL, ..., diagnostic = FALSE)
# S4 method for Weibull,function,missing
E(object, fun, low = NULL, upp = NULL,
rel.tol = getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = max(1e4,getdistrExOption("IQR.fac")), ..., diagnostic = FALSE)
.qtlIntegrate(object, fun, low = NULL, upp = NULL,
rel.tol= getdistrExOption("ErelativeTolerance"),
lowerTruncQuantile = getdistrExOption("ElowerTruncQuantile"),
upperTruncQuantile = getdistrExOption("EupperTruncQuantile"),
IQR.fac = max(1e4,getdistrExOption("IQR.fac")), ...,
.withLeftTail = FALSE, .withRightTail = FALSE, diagnostic = FALSE)

##### Arguments

- object
object of class

`"Distribution"`

- fun
if missing the (conditional) expectation is computed else the (conditional) expection of

`fun`

is computed.- cond
if not missing the conditional expectation given

`cond`

is computed.- Nsim
number of MC simulations used to determine the expectation.

- rel.tol
relative tolerance for

`distrExIntegrate`

.- low
lower bound of integration range.

- upp
upper bound of integration range.

- lowerTruncQuantile
lower quantile for quantile based integration range.

- upperTruncQuantile
upper quantile for quantile based integration range.

- IQR.fac
factor for scale based integration range (i.e.; median of the distribution \(\pm\)

`IQR.fac`

\(\times\)IQR).- …
additional arguments to

`fun`

- useApply
logical: should

`sapply`

, respectively`apply`

be used to evaluate`fun`

.- withCond
logical: is

`cond`

in the argument list of`fun`

.- .withLeftTail
logical: should left tail (falling into quantile range [0,0.02]) be computed separately to enhance accuracy?

- .withRightTail
logical: should right tail (falling into quantile range [0.98,1]) be computed separately to enhance accuracy?

- diagnostic
logical; if

`TRUE`

, the return value obtains an attribute`"diagnostic"`

with diagnostic information on the integration, i.e., a list with entries`method`

(`"integrate"`

or`"GLIntegrate"`

),`call`

,`result`

(the complete return value of the method),`args`

(the args with which the method was called), and`time`

(the time to compute the integral).

##### Details

The precision of the computations can be controlled via
certain global options; cf. `distrExOptions`

.
Also note that arguments `low`

and `upp`

should be given as
named arguments in order to prevent them to be matched by arguments
`fun`

or `cond`

. Also the result, when arguments
`low`

or `upp`

is given, is the *unconditional value* of the
expectation; no conditioning with respect to `low <= object <= upp`

is done.

For the Cauchy, the Gamma and Weibull distribution for integration with
missing argument `cond`

but given argument `fun`

, we use
integration on [0,1] (i.e, via the respective probability transformation).
This done via helper
function `.qtlIntegrate`

, where both arguments `.withLeftTail`

and `.withRightTail`

are `TRUE`

for the Cauchy and Gamma distributions,
and only `.withRightTail`

ist `TRUE`

for the Weibull distribution.

Diagnostics on the involved integrations are available if argument
`diagnostic`

is `TRUE`

. Then there is attribute `diagnostic`

attached to the return value, which may be inspected
and accessed through `showDiagnostic`

and
`getDiagnostic`

.

##### Value

The (conditional) expectation is computed.

##### Methods

- object = "UnivariateDistribution", fun = "missing", cond = "missing":
expectation of univariate distributions using crude Monte-Carlo integration.

- object = "AbscontDistribution", fun = "missing", cond = "missing":
expectation of absolutely continuous univariate distributions using

`distrExIntegrate`

.- object = "DiscreteDistribution", fun = "missing", cond = "missing":
expectation of discrete univariate distributions using

`support`

and`sum`

.- object = "MultivariateDistribution", fun = "missing", cond = "missing":
expectation of multivariate distributions using crude Monte-Carlo integration.

- object = "DiscreteMVDistribution", fun = "missing", cond = "missing":
expectation of discrete multivariate distributions. The computation is based on

`support`

and`sum`

.- object = "UnivariateDistribution", fun = "missing", cond = "missing":
expectation of univariate Lebesgue decomposed distributions by separate calculations for discrete and absolutely continuous part.

- object = "AffLinDistribution", fun = "missing", cond = "missing":
expectation of an affine linear transformation \(aX+b\) as \(a E[X]+b\) for

`X`

either`"DiscreteDistribution"`

or`"AbscontDistribution"`

.- object = "AffLinUnivarLebDecDistribution", fun = "missing", cond = "missing":
expectation of an affine linear transformation \(aX+b\) as \(a E[X]+b\) for

`X`

either`"UnivarLebDecDistribution"`

.- object = "UnivariateDistribution", fun = "function", cond = "missing":
expectation of

`fun`

under univariate distributions using crude Monte-Carlo integration.- object = "UnivariateDistribution", fun = "function", cond = "missing":
expectation of

`fun`

under univariate Lebesgue decomposed distributions by separate calculations for discrete and absolutely continuous part.- object = "AbscontDistribution", fun = "function", cond = "missing":
expectation of

`fun`

under absolutely continuous univariate distributions using`distrExIntegrate`

.- object = "DiscreteDistribution", fun = "function", cond = "missing":
expectation of

`fun`

under discrete univariate distributions using`support`

and`sum`

.- object = "MultivariateDistribution", fun = "function", cond = "missing":
expectation of multivariate distributions using crude Monte-Carlo integration.

- object = "DiscreteMVDistribution", fun = "function", cond = "missing":
expectation of

`fun`

under discrete multivariate distributions. The computation is based on`support`

and`sum`

.- object = "UnivariateCondDistribution", fun = "missing", cond = "numeric":
conditional expectation for univariate conditional distributions given

`cond`

. The integral is computed using crude Monte-Carlo integration.- object = "AbscontCondDistribution", fun = "missing", cond = "numeric":
conditional expectation for absolutely continuous, univariate conditional distributions given

`cond`

. The computation is based on`distrExIntegrate`

.- object = "DiscreteCondDistribution", fun = "missing", cond = "numeric":
conditional expectation for discrete, univariate conditional distributions given

`cond`

. The computation is based on`support`

and`sum`

.- object = "UnivariateCondDistribution", fun = "function", cond = "numeric":
conditional expectation of

`fun`

under univariate conditional distributions given`cond`

. The integral is computed using crude Monte-Carlo integration.- object = "AbscontCondDistribution", fun = "function", cond = "numeric":
conditional expectation of

`fun`

under absolutely continuous, univariate conditional distributions given`cond`

. The computation is based on`distrExIntegrate`

.- object = "DiscreteCondDistribution", fun = "function", cond = "numeric":
conditional expectation of

`fun`

under discrete, univariate conditional distributions given`cond`

. The computation is based on`support`

and`sum`

.- object = "UnivarLebDecDistribution", fun = "missing", cond = "missing":
expectation by separate evaluation of expectation of discrete and abs. continuous part and subsequent weighting.

- object = "UnivarLebDecDistribution", fun = "function", cond = "missing":
expectation by separate evaluation of expectation of discrete and abs. continuous part and subsequent weighting.

- object = "UnivarLebDecDistribution", fun = "missing", cond = "ANY":
expectation by separate evaluation of expectation of discrete and abs. continuous part and subsequent weighting.

- object = "UnivarLebDecDistribution", fun = "function", cond = "ANY":
- object = "UnivarMixingDistribution", fun = "missing", cond = "missing":
expectation is computed component-wise with subsequent weighting acc. to

`mixCoeff`

.- object = "UnivarMixingDistribution", fun = "function", cond = "missing":
expectation is computed component-wise with subsequent weighting acc. to

`mixCoeff`

.- object = "UnivarMixingDistribution", fun = "missing", cond = "ANY":
expectation is computed component-wise with subsequent weighting acc. to

`mixCoeff`

.- object = "UnivarMixingDistribution", fun = "function", cond = "ANY":
expectation is computed component-wise with subsequent weighting acc. to

`mixCoeff`

.- object = "AcDcLcDistribution", fun = "ANY", cond = "ANY":
expectation by first coercing to class

`"UnivarLebDecDistribution"`

and using the corresponding method.- object = "CompoundDistribution", fun = "missing", cond = "missing":
if we are in i.i.d. situation (i.e., slot

`SummandsDistr`

is of class`UnivariateDistribution`

) the formula \(E[N]E[S]\) for \(N\) the frequency distribution and \(S\) the summand distribution; else we coerce to`"UnivarLebDecDistribution"`

.- object = "Arcsine", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Beta", fun = "missing", cond = "missing":
for noncentrality 0 exact evaluation using explicit expressions.

- object = "Binom", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Cauchy", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Chisq", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Dirac", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "DExp", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Exp", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Fd", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Gammad", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Gammad", fun = "function", cond = "missing":
use integration over the quantile range for numerical integration via helper function

`.qtlIntegrate`

.- object = "Geom", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

% \item{object = "Gumbel", fun = "missing", cond = "missing":}{
% exact evaluation using explicit expressions.}
% \item{object = "GPareto", fun = "missing", cond = "missing":}{
% exact evaluation using explicit expressions.}
% \item{object = "GPareto", fun = "function", cond = "missing":}{
% use substitution method (y := log(x)) for numerical integration.}
- object = "Hyper", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Logis", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Lnorm", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Nbinom", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Norm", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

% \item{object = "Pareto", fun = "missing", cond = "missing":}{
% exact evaluation using explicit expressions.}
- object = "Pois", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Unif", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Td", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Weibull", fun = "missing", cond = "missing":
exact evaluation using explicit expressions.

- object = "Weibull", fun = "function", cond = "missing":
use integration over the quantile range for numerical integration via helper function

`.qtlIntegrate`

.

##### See Also

##### Examples

```
# NOT RUN {
# mean of Exp(1) distribution
E <- Exp()
E(E) ## uses explicit terms
E(as(E,"AbscontDistribution")) ## uses numerical integration
E(as(E,"UnivariateDistribution")) ## uses simulations
E(E, fun = function(x){2*x^2}) ## uses simulations
# the same operator for discrete distributions:
P <- Pois(lambda=2)
E(P) ## uses explicit terms
E(as(P,"DiscreteDistribution")) ## uses sums
E(as(P,"UnivariateDistribution")) ## uses simulations
E(P, fun = function(x){2*x^2}) ## uses simulations
# second moment of N(1,4)
E(Norm(mean=1, sd=2), fun = function(x){x^2})
E(Norm(mean=1, sd=2), fun = function(x){x^2}, useApply = FALSE)
# conditional distribution of a linear model
D1 <- LMCondDistribution(theta = 1)
E(D1, cond = 1)
E(Norm(mean=1))
E(D1, function(x){x^2}, cond = 1)
E(Norm(mean=1), fun = function(x){x^2})
E(D1, function(x, cond){cond*x^2}, cond = 2, withCond = TRUE, useApply = FALSE)
E(Norm(mean=2), function(x){2*x^2})
E(as(Norm(mean=2),"AbscontDistribution"))
### somewhat less accurate:
E(as(Norm(mean=2),"AbscontDistribution"),
lowerTruncQuantil=1e-4,upperTruncQuantil=1e-4, IQR.fac= 4)
### even less accurate:
E(as(Norm(mean=2),"AbscontDistribution"),
lowerTruncQuantil=1e-2,upperTruncQuantil=1e-2, IQR.fac= 4)
### no good idea, but just as an example:
E(as(Norm(mean=2),"AbscontDistribution"),
lowerTruncQuantil=1e-2,upperTruncQuantil=1e-2, IQR.fac= .1)
### truncation of integration range; see also m1df...
E(Norm(mean=2), low=2,upp=4)
E(Cauchy())
E(Cauchy(),upp=3,low=-2)
# some Lebesgue decomposed distribution
mymix <- UnivarLebDecDistribution(acPart = Norm(), discretePart = Binom(4,.4),
acWeight = 0.4)
E(mymix)
# }
```

*Documentation reproduced from package distrEx, version 2.8.0, License: LGPL-3*