# DiscreteDistribution

##### Generating function "DiscreteDistribution"

Generates an object of class `"DiscreteDistribution"`

- Keywords
- distribution

##### Usage

```
DiscreteDistribution(supp, prob, .withArith=FALSE, .withSim=FALSE,
.lowerExact = TRUE, .logExact = FALSE,
.DistrCollapse = getdistrOption("DistrCollapse"),
.DistrCollapse.Unique.Warn =
getdistrOption("DistrCollapse.Unique.Warn"),
.DistrResolution = getdistrOption("DistrResolution"),
Symmetry = NoSymmetry())
```

##### Arguments

- supp
numeric vector which forms the support of the discrete distribution.

- prob
vector of probability weights for the elements of

`supp`

.- .withArith
normally not set by the user, but if determining the entries

`supp`

,`prob`

distributional arithmetics was involved, you may set this to`TRUE`

.- .withSim
normally not set by the user, but if determining the entries

`supp`

,`prob`

simulations were involved, you may set this to`TRUE`

.- .lowerExact
normally not set by the user: whether the

`lower.tail=FALSE`

part is calculated exactly, avoing a ```1-.`

''.- .logExact
normally not set by the user: whether in determining slots

`d,p,q`

, we make particular use of a logarithmic representation to enhance accuracy.- .DistrCollapse
controls whether in generating a new discrete distribution, support points closer together than

`.DistrResolution`

are collapsed.- .DistrCollapse.Unique.Warn
controls whether there is a warning whenever collapsing occurs or when two points are collapsed by a call to

`unique()`

(default behaviour if`.DistrCollapse`

is`FALSE`

)- .DistrResolution
minimal spacing between two mass points in a discrete distribution

- Symmetry
you may help R in calculations if you tell it whether the distribution is non-symmetric (default) or symmetric with respect to a center; in this case use

`Symmetry=SphericalSymmetry(center)`

.

##### Details

If `prob`

is missing, all elements in `supp`

are equally weighted.

Typical usages are

DiscreteDistribution(supp, prob) DiscreteDistribution(supp)

##### Value

Object of class `"DiscreteDistribution"`

##### Note

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

.

Also, we require that support points have distance at least
`.DistrResoltion`

, if this condition fails,
upon a suggestion by Jacob van Etten, jacobvanetten@yahoo.com,
we use the global option `.DistrCollapse`

to
decide whether we use collapsing or not. If we do so, we collapse support
points if they are too close to each other, taking
the (left most) median among them as new support point which accumulates
all the mass of the collapsed points.
With `.DistrCollapse==FALSE`

, we at least collapse
points according to the result of `unique()`

, and if after this
collapsing, the minimal distance is less than `.DistrResoltion`

,
we throw an error. By `.DistrCollapse.Unique.Warn`

,
we control, whether we throw a warning upon collapsing or not.

##### See Also

`DiscreteDistribution-class`

`AbscontDistribution-class`

`RtoDPQ.d`

##### Examples

```
# NOT RUN {
# Dirac-measure at 0
D1 <- DiscreteDistribution(supp = 0)
D1
# simple discrete distribution
D2 <- DiscreteDistribution(supp = c(1:5), prob = c(0.1, 0.2, 0.3, 0.2, 0.2))
D2
plot(D2)
# }
```

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