HLearn-distributions-1.0.0.1: Distributions for use with the HLearn library

Safe HaskellNone

HLearn.Models.Distributions.Common

Contents

Description

This module contains the type classes for manipulating distributions.

We use the same classes for both discrete and continuous distributions. Unfortunately, we cannot use the type classes from the statistics package because we require more flexibility than they offer.

Synopsis

Type classes

class Probabilistic model Source

Associated Types

type Probability model Source

Instances

Num prob => Probabilistic (Exponential prob) 
Probabilistic (LogNormal prob) 
Num prob => Probabilistic (Normal prob) 
Num prob => Probabilistic (Unital prob) 
Probabilistic (Categorical label prob) 
(HList2List (HList dpL) prob, Unbox prob, Num prob, SingI Nat (FromNat1 (Length1 * dpL))) => Probabilistic (MultiNormal dpL prob) 
Num sample => Probabilistic (Binomial sample prob) 
Num sample => Probabilistic (Geometric sample prob) 
Num sample => Probabilistic (Poisson sample prob) 
Probabilistic (MissingData response basedist prob) 
Probabilistic (Ignore' label basedist prob) 
Probabilistic (CatContainer label basedist prob) 
Probabilistic (Multivariate dp xs prob) 
Probabilistic (MultiContainer k dist sample basedist prob) 
Probabilistic (Container k dist sample basedist prob) 

class Probabilistic dist => CDF dist whereSource

Technically, every distribution has a Cumulative Distribution Function (CDF), and so this type class should be merged with the Distribution type class. However, I haven't had a chance to implement the CDF for most distributions yet, so this type class has been separated out.

Methods

cdf :: dist -> Datapoint dist -> Probability distSource

cdfInverse :: dist -> Probability dist -> Datapoint distSource

Instances

(Ord label, Ord prob, Fractional prob) => CDF (Categorical label prob) 

class Probabilistic dist => PDF dist whereSource

Not every distribution has a Probability Density Function (PDF), however most distributions in the HLearn library do. For many applications, the PDF is much more intuitive and easier to work with than the CDF. For discrete distributions, this is often called a Probability Mass Function (PMF); however, for simplicity we use the same type class for both continuous and discrete data.

Methods

pdf :: dist -> Datapoint dist -> Probability distSource

Instances

Floating prob => PDF (Exponential prob) 
Floating prob => PDF (LogNormal prob) 
Floating prob => PDF (Normal prob) 
Num prob => PDF (Unital prob) 
(Ord label, Ord prob, Fractional prob) => PDF (Categorical label prob) 
(HList2List (HList dpL) prob, Unbox prob, Floating prob, Field prob, Enum prob, SingI Nat (FromNat1 (Length1 * dpL)), Storable prob) => PDF (MultiNormal dpL prob) 
Floating prob => PDF (Binomial Int Double) 
(Integral sample, Floating prob) => PDF (Geometric sample prob) 
(Integral sample, Floating prob) => PDF (Poisson sample Double) 
(~ * (Probability (basedist prob)) prob, PDF (basedist prob), Num prob) => PDF (MissingData Ignore basedist prob) 
(~ * (Probability basedist) prob, HomTrainer (Ignore' label basedist prob), ~ * (Datapoint (Ignore' label basedist prob)) (HList dpL), ~ * (Datapoint basedist) (HList basedpL), PDF basedist) => PDF (Ignore' label basedist prob) 
(Ord prob, Fractional prob, Show prob, ~ * (Probability basedist) prob, Ord label, PDF basedist, ~ * (Datapoint basedist) (HList ys), Show (Datapoint basedist), Show label) => PDF (CatContainer label basedist prob) 
(PDF (MultivariateTF (Concat (* -> * -> *) xs) prob), ~ * (Probability (MultivariateTF (Concat (* -> * -> *) xs) prob)) prob, ~ * (Datapoint (MultivariateTF (Concat (* -> * -> *) xs) prob)) (GetHList dp), Trainable dp, HomTrainer (Multivariate dp xs prob)) => PDF (Multivariate dp xs prob) 
(PDF (dist prob), PDF basedist, ~ * prob (Probability (dist prob)), ~ * prob (Probability basedist), Num prob, ~ * (Datapoint (dist prob)) (HList dpL), ~ * (Datapoint basedist) (HList basedpL), HTake1 (Nat1Box (Length1 * dpL)) (HList (++ * dpL basedpL)) (HList dpL), HDrop1 (Nat1Box (Length1 * dpL)) (HList (++ * dpL basedpL)) (HList basedpL)) => PDF (MultiContainer k dist sample basedist prob) 
(PDF (dist prob), PDF basedist, ~ * (Probability (dist prob)) prob, ~ * (Probability basedist) prob, Probabilistic (Container k dist sample basedist prob), ~ * (Datapoint basedist) (HList ys), ~ * (Datapoint (dist prob)) y, ~ * (Datapoint (Container k dist sample basedist prob)) (HList (: * y ys)), Num prob) => PDF (Container k dist sample basedist prob) 

class HomTrainer dist => Mean dist whereSource

Methods

mean :: dist -> Datapoint distSource

Instances

Fractional prob => Mean (Exponential prob) 
Floating prob => Mean (LogNormal prob) 
Fractional prob => Mean (Normal prob) 
(Num prob, Ord prob, Ord label) => Mean (Categorical label prob) 
(Integral sample, RealFrac prob) => Mean (Geometric sample prob) 

class Probabilistic dist => Variance dist whereSource

Methods

variance :: dist -> Probability distSource

Instances

Fractional prob => Variance (Exponential prob) 
(Show prob, Floating prob) => Variance (LogNormal prob) 
Fractional prob => Variance (Normal prob) 
(Integral sample, Fractional prob) => Variance (Geometric sample prob) 

Utility functions

nonoverlap :: (Enum (Probability dist), Fractional (Probability dist), Ord (Probability dist), PDF dist, CDF dist) => [dist] -> Probability distSource

If you were to plot a list of distributions, nonoverlap returns the amount of area that only a single distribution covers. That is, it will be equal to number of distributions - the overlap.

This function is used by the HomTree classifier.