Skip to content

Distribution

Defined in: distributions/base.js:46

Base class for probability distributions.

Subclasses set this._dist (a @tangent.to/proba distribution) in their constructor and implement _params() returning the proba parameter object (fields may be numbers or arrays of numbers).

Extended by

Constructors

Constructor

new Distribution(name?): Distribution

Defined in: distributions/base.js:51

Create a base distribution; subclasses set this._dist and parameters.

Parameters

name?

string = 'Distribution'

Name of the distribution

Returns

Distribution

Properties

name

name: string

Defined in: distributions/base.js:52


observed

observed: any

Defined in: distributions/base.js:53

Methods

_len()

_len(value): number

Defined in: distributions/base.js:69

Broadcast length across value and parameters (0 = all scalar).

Parameters

value

number | any[]

Value(s) whose length participates in broadcasting

Returns

number

The broadcast length (0 when every input is scalar)


_params()

_params(): any

Defined in: distributions/base.js:60

The proba parameter object for this distribution; subclasses must implement.

Returns

any

proba parameter object (fields may be numbers or arrays)


_paramsAt()

_paramsAt(i): any

Defined in: distributions/base.js:82

The proba parameter object with each array parameter indexed at i.

Parameters

i

number

Broadcast index

Returns

any

Per-element parameter object (scalars passed through)


cdf()

cdf(value): number

Defined in: distributions/base.js:211

Cumulative distribution function (scalar parameters).

Parameters

value

number

Returns

number


dlogProbDx()

dlogProbDx(value): number | number[]

Defined in: distributions/base.js:181

Derivative of logProb with respect to the value, elementwise. Used by Model.logProbAndGradient for analytic prior gradients. Discrete distributions return 0 (no dx in their gradient contract).

Parameters

value

number | any[]

Value(s) at which to differentiate

Returns

number | number[]


getParams()

getParams(): any

Defined in: distributions/base.js:273

Get the distribution’s parameters as a plain object. Subclasses override to expose their specific parameters.

Returns

any

Parameters


logDensity()

logDensity(value): any

Defined in: distributions/base.js:137

The log-density as a differentiable expression, SUMMED over elements.

Where Distribution#logProb takes plain numbers and returns the elementwise density, this takes parameters that may be grad Vars, built from the model’s free variables, and returns one scalar Var: the total log-density of value under this distribution, differentiable in every parameter that is a Var. It is what Model#observe evaluates, so that a likelihood is derived from the distribution rather than written by hand.

The formula is proba’s: every proba distribution carries logDensity, the same density as logpdf written in grad ops, elementwise, and this sums it. A subclass wrapping a distribution that lacks it is still a valid prior and a valid logProb; it is simply not differentiable, and observe will say so.

Parameters

value

number | any[]

observed value(s), plain numbers

Returns

any

scalar


logpdf()

logpdf(value): number | number[]

Defined in: distributions/base.js:169

Alias for Distribution#logProb, matching the @tangent.to/proba distribution contract (which names the method logpdf). Lets code written against proba’s distributions work unchanged on mc’s.

Parameters

value

any

Value(s) to evaluate

Returns

number | number[]


logProb()

logProb(value): number | number[]

Defined in: distributions/base.js:97

Log probability density/mass function. Broadcasts over array values and/or array parameters.

Parameters

value

any

Value(s) to evaluate

Returns

number | number[]

Log probability, elementwise for arrays


mean()

mean(): number | number[]

Defined in: distributions/base.js:252

Get the mean of the distribution

Returns

number | number[]

The mean


observe()

observe(data): Distribution

Defined in: distributions/base.js:243

Set observed data for this distribution

Parameters

data

number | any[]

Observed data

Returns

Distribution

this, for chaining


pdf()

pdf(value): number | number[]

Defined in: distributions/base.js:201

Probability density/mass function, exp(logProb(value)).

Parameters

value

number | any[]

Value(s) to evaluate

Returns

number | number[]


quantile()

quantile(p): number

Defined in: distributions/base.js:220

Quantile (inverse cdf) function (scalar parameters).

Parameters

p

number

Probability in [0, 1]

Returns

number


sample()

sample(shape?): number | number[]

Defined in: distributions/base.js:232

Sample from the distribution using the package RNG (see setRandomSeed). sample() / sample([]) return a number; sample(n) / sample([n]) return an Array of n draws.

Parameters

shape?

number | number[]

Number of samples

Returns

number | number[]


variance()

variance(): number | number[]

Defined in: distributions/base.js:262

Get the variance of the distribution

Returns

number | number[]

The variance