# Class "LatticeDistribution"

### Description

The `LatticeDistribution`

-class is the mother-class of the
classes `Binom`

, `Dirac`

, `Geom`

, `Hyper`

, `Nbinom`

and
`Poisson`

. It formalizes a distribution on a regular affine
linear lattice.

### Objects from the Class

The usual way to generate objects of class `LatticeDistribution`

is to call
the generating function `LatticeDistribution`

.

Somewhat more flexible, but also proner to inconsistencies is a call to
`new("LatticeDistribution")`

, where you may explicitly specify random
number generator, (counting) density, cumulative distribution and quantile
functions. For conveniance, in this call to `new("LatticeDistribution")`

,
an additional possibility is to only specify the random number generator. The
function `RtoDPQ.d`

then approximates the three remaining slots `d`

,
`p`

and `q`

by random sampling.

### Slots

`img`

Object of class

`"Reals"`

: the space of the image of this distribution which has dimension 1 and the name "Real Space"`param`

Object of class

`"Parameter"`

: the parameter of this distribution, having only the slot name "Parameter of a discrete distribution"`r`

Object of class

`"function"`

: generates random numbers`d`

Object of class

`"function"`

: (counting) density/probability function`p`

Object of class

`"function"`

: cumulative distribution function`q`

Object of class

`"function"`

: quantile function`support`

Object of class

`"numeric"`

: a (sorted) vector containing the support of the discrete density function`lattice`

Object of class

`"Lattice"`

: the lattice generating the support.`.withArith`

logical: used internally to issue warnings as to interpretation of arithmetics

`.withSim`

logical: used internally to issue warnings as to accuracy

`.logExact`

logical: used internally to flag the case where there are explicit formulae for the log version of density, cdf, and quantile function

`.lowerExact`

logical: used internally to flag the case where there are explicit formulae for the lower tail version of cdf and quantile function

`Symmetry`

object of class

`"DistributionSymmetry"`

; used internally to avoid unnecessary calculations.

### Extends

Class `"UnivariateDistribution"`

, directly.

Class `"Distribution"`

, by class `"UnivariateDistribution"`

.

### Methods

`initialize`

`signature(.Object = "LatticeDistribution")`

: initialize method- -
`signature(e1 = "LatticeDistribution")`

: application of ‘-’ to this lattice distribution- *
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

: multiplication of this lattice distribution by an object of class ‘numeric’- /
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

: division of this lattice distribution by an object of class ‘numeric’- +
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

: addition of this lattice distribution to an object of class ‘numeric’- -
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

: subtraction of an object of class ‘numeric’ from this lattice distribution- *
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

: multiplication of this lattice distribution by an object of class ‘numeric’- +
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

: addition of this lattice distribution to an object of class ‘numeric’- -
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

: subtraction of this lattice distribution from an object of class ‘numeric’- +
`signature(e1 = "LatticeDistribution", e2 = "LatticeDistribution")`

: Convolution of two lattice distributions. Slots p, d and q are approximated by grids.- -
`signature(e1 = "LatticeDistribution", e2 = "LatticeDistribution")`

: Convolution of two lattice distributions. The slots p, d and q are approximated by grids.`sqrt`

`signature(x = "LatticeDistribution")`

: exact image distribution of`sqrt(x)`

.`lattice`

accessor method to the corresponding slot.

`coerce`

`signature(from = "LatticeDistribution", to = "DiscreteDistribution")`

: coerces an object from`"LatticeDistribution"`

to`"DiscreteDistribution"`

thereby cancelling out support points with probability 0.

### Internal subclass "AffLinLatticeDistribution"

To enhance accuracy of several functionals on distributions,
mainly from package distrEx, there is an internally used
(but exported) subclass `"AffLinLatticeDistribution"`

which has extra slots
`a`

, `b`

(both of class `"numeric"`

), and `X0`

(of class `"LatticeDistribution"`

), to capture the fact
that the object has the same distribution as `a * X0 + b`

. This is
the class of the return value of methods

- -
`signature(e1 = "LatticeDistribution")`

- *
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

- /
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

- +
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

- -
`signature(e1 = "LatticeDistribution", e2 = "numeric")`

- *
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

- +
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

- -
`signature(e1 = "numeric", e2 = "LatticeDistribution")`

- -
`signature(e1 = "AffLinLatticeDistribution")`

- *
`signature(e1 = "AffLinLatticeDistribution", e2 = "numeric")`

- /
`signature(e1 = "AffLinLatticeDistribution", e2 = "numeric")`

- +
`signature(e1 = "AffLinLatticeDistribution", e2 = "numeric")`

- -
`signature(e1 = "AffLinLatticeDistribution", e2 = "numeric")`

- *
`signature(e1 = "numeric", e2 = "AffLinLatticeDistribution")`

- +
`signature(e1 = "numeric", e2 = "AffLinLatticeDistribution")`

- -
`signature(e1 = "numeric", e2 = "AffLinLatticeDistribution")`

There is also an explicit `coerce`

-method from class
`"AffLinLatticeDistribution"`

to class `"AffLinDiscreteDistribution"`

which cancels out support points with probability 0.

### Note

Working with a computer, we use a finite interval as support which
carries at least mass `1-getdistrOption("TruncQuantile")`

.

### Author(s)

Peter Ruckdeschel peter.ruckdeschel@uni-oldenburg.de

### See Also

`LatticeDistribution`

`Parameter-class`

`Lattice-class`

`UnivariateDistribution-class`

`DiscreteDistribution-class`

`Binom-class`

`Dirac-class`

`Geom-class`

`Hyper-class`

`Nbinom-class`

`Pois-class`

`AbscontDistribution-class`

`Reals-class`

`RtoDPQ.d`

### Examples

1 2 3 4 5 6 7 8 9 10 11 | ```
B <- Binom(prob = 0.1,size = 10) # B is a Binomial distribution w/ prob=0.1 and size=10.
P <- Pois(lambda = 1) # P is a Poisson distribution with lambda = 1.
D1 <- B+1 # a new Lattice distributions with exact slots d, p, q
D2 <- D1*3 # a new Lattice distributions with exact slots d, p, q
D3 <- B+P # a new Lattice distributions with approximated slots d, p, q
D4 <- D1+P # a new Lattice distributions with approximated slots d, p, q
support(D4) # the (approximated) support of this distribution is 1, 2, ..., 21
r(D4)(1) # one random number generated from this distribution, e.g. 4
d(D4)(1) # The (approximated) density for x=1 is 0.1282716.
p(D4)(1) # The (approximated) probability that x<=1 is 0.1282716.
q(D4)(.5) # The (approximated) 50 percent quantile is 3.
``` |

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker. Vote for new features on Trello.