probability-polynomial-1.0.0.0: Probability distributions via piecewise polynomials
CopyrightPredictable Network Solutions Ltd. 2020-2024
LicenseBSD-3-Clause
Safe HaskellSafe-Inferred
LanguageHaskell2010

Numeric.Measure.Finite.Mixed

Description

 
Synopsis

Type

data Measure a Source #

A finite signed measure on the number line.

Instances

Instances details
Show a => Show (Measure a) Source # 
Instance details

Defined in Numeric.Measure.Finite.Mixed

Methods

showsPrec :: Int -> Measure a -> ShowS #

show :: Measure a -> String #

showList :: [Measure a] -> ShowS #

NFData a => NFData (Measure a) Source # 
Instance details

Defined in Numeric.Measure.Finite.Mixed

Methods

rnf :: Measure a -> () #

(Ord a, Num a) => Eq (Measure a) Source #

Two measures are equal if they yield the same measures on every set.

mx == my
  implies
  forall t. eval (distribution mx) t = eval (distribution my) t
Instance details

Defined in Numeric.Measure.Finite.Mixed

Methods

(==) :: Measure a -> Measure a -> Bool #

(/=) :: Measure a -> Measure a -> Bool #

zero :: Num a => Measure a Source #

The measure that assigns 0 to every set.

dirac :: (Ord a, Num a) => a -> Measure a Source #

A Dirac measure at the given point x.

total (dirac x) = 1

uniform :: (Ord a, Num a, Fractional a) => a -> a -> Measure a Source #

The probability measure of a uniform probability distribution in the interval \( [x,y) \).

total (uniform x y) = 1

distribution :: (Ord a, Num a) => Measure a -> Piecewise (Poly a) Source #

eval (distribution m) x is the measure of the interval \( (-∞, x] \).

This is known as the distribution function.

fromDistribution :: (Ord a, Num a) => Piecewise (Poly a) -> Maybe (Measure a) Source #

Construct a signed measure from its distribution function.

Return Nothing if the measure is not finite, that is if the last piece of the piecewise function is not constant.

Observations

total :: (Ord a, Num a) => Measure a -> a Source #

The total of the measure applied to the set of real numbers.

support :: (Ord a, Num a) => Measure a -> Maybe (a, a) Source #

The support is the smallest closed, contiguous interval \( [x,y] \) outside of which the measure is zero.

Returns Nothing if the interval is empty.

isPositive :: (Ord a, Num a, Fractional a) => Measure a -> Bool Source #

Check whether a signed measure is positive.

A signed measure is positive if the measure of any set is nonnegative. In other words a positive signed measure is just a measure in the ordinary sense.

This test is nontrivial, as we have to check that the distribution function is monotonically increasing.

integrate :: (Ord a, Num a, Fractional a) => Poly a -> Measure a -> a Source #

Integrate a polynomial f with respect to the given measure m, \( \int f(x) dm(x) \).

Operations, numerical

add :: (Ord a, Num a) => Measure a -> Measure a -> Measure a Source #

Add two measures.

total (add mx my) = total mx + total my

scale :: (Ord a, Num a) => a -> Measure a -> Measure a Source #

Scale a measure by a constant.

total (scale a mx) = a * total mx

translate :: (Ord a, Num a, Fractional a) => a -> Measure a -> Measure a Source #

Translate a measure along the number line.

eval (distribution (translate y m)) x
   = eval (distribution m) (x - y)

convolve :: (Ord a, Num a, Fractional a) => Measure a -> Measure a -> Measure a Source #

Additive convolution of two measures.

Properties:

convolve (dirac x) (dirac y) = dirac (x + y)

convolve mx my               =  convolve my mx
convolve (add mx my) mz      =  add (convolve mx mz) (convolve my mz)
translate z (convolve mx my) =  convolve (translate z mx) my
total (convolve mx my)       =  total mx * total my