R: Class "LatticeDistribution"

LatticeDistribution-class {distr} | R Documentation

## 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

    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.
    ## in RStudio or Jupyter IRKernel, use q.l(.)(.) instead of q(.)(.)

[Package distr version 2.8.0 Index]