Skip to content

StudentT

Defined in: distributions/studentt.js:15

Student-t distribution, with location and scale

$$ p(x | \nu, \mu, \sigma) = \frac{\Gamma((\nu+1)/2)}{\Gamma(\nu/2)\sqrt{\nu\pi},\sigma} \left(1 + \frac{1}{\nu}\left(\frac{x-\mu}{\sigma}\right)^2\right)^{-(\nu+1)/2} $$

A robust alternative to the Normal as an observation model: its heavy tails let an outlying observation pull the mean less. nu may be a free variable.

See

t-distribution

Extends

Constructors

Constructor

new StudentT(nu?, mu?, sigma?, name?): StudentT

Defined in: distributions/studentt.js:31

Accepts either positional arguments or a single options object, matching the dual-constructor convention of @tangent.to/ds.

Parameters

nu?

any = 1

Degrees of freedom, nu > 0, or an options object { nu | df, mu | mean, sigma | sd | std, name }

mu?

number | any[]

Location

sigma?

number | any[]

Scale, sigma > 0

name?

string = 'StudentT'

Name of the distribution

Returns

StudentT

Examples

new StudentT(4, 0, 1)
new StudentT({ df: 4, mean: 0, sd: 1 })

Overrides

Distribution.constructor

Properties

_dist

_dist: any

Defined in: distributions/studentt.js:43


mu

mu: number | any[]

Defined in: distributions/studentt.js:41


name

name: any

Defined in: distributions/studentt.js:35

Inherited from

Distribution.name


nu

nu: any

Defined in: distributions/studentt.js:40


observed

observed: any

Defined in: distributions/base.js:53

Inherited from

Distribution.observed


sigma

sigma: number | any[]

Defined in: distributions/studentt.js:42

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)

Inherited from

Distribution._len


_params()

_params(): object

Defined in: distributions/studentt.js:49

The proba parameter object for this distribution.

Returns

object

mu

mu: number | any[]

nu

nu: any

sigma

sigma: number | any[]

Overrides

Distribution._params


_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)

Inherited from

Distribution._paramsAt


cdf()

cdf(value): number

Defined in: distributions/base.js:211

Cumulative distribution function (scalar parameters).

Parameters

value

number

Returns

number

Inherited from

Distribution.cdf


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[]

Inherited from

Distribution.dlogProbDx


getParams()

getParams(): object

Defined in: distributions/studentt.js:56

Get the distribution’s parameters.

Returns

object

mu

mu: number | any[]

nu

nu: any

sigma

sigma: number | any[]

Overrides

Distribution.getParams


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

Inherited from

Distribution.logDensity


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[]

Inherited from

Distribution.logpdf


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

Inherited from

Distribution.logProb


mean()

mean(): number | number[]

Defined in: distributions/base.js:252

Get the mean of the distribution

Returns

number | number[]

The mean

Inherited from

Distribution.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

Inherited from

Distribution.observe


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[]

Inherited from

Distribution.pdf


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

Inherited from

Distribution.quantile


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[]

Inherited from

Distribution.sample


variance()

variance(): number | number[]

Defined in: distributions/base.js:262

Get the variance of the distribution

Returns

number | number[]

The variance

Inherited from

Distribution.variance