Safe Haskell | None |
---|---|
Language | Haskell2010 |
Various instances of statistical manifolds, with a focus on exponential families. In the documentation we use \(X\) to indicate a random variable with the distribution being documented.
Synopsis
- type Normal = LocationShape NormalMean NormalVariance
- data NormalMean
- data NormalVariance
- data MVNMean (n :: Nat)
- data MVNCovariance (n :: Nat)
- type MultivariateNormal (n :: Nat) = LocationShape (MVNMean n) (MVNCovariance n)
- multivariateNormalCorrelations :: KnownNat k => (Source # MultivariateNormal k) -> Matrix k k Double
- bivariateNormalConfidenceEllipse :: Int -> Double -> (Source # MultivariateNormal 2) -> [(Double, Double)]
- splitMultivariateNormal :: KnownNat n => (Source # MultivariateNormal n) -> (Vector n Double, Matrix n n Double)
- splitMeanMultivariateNormal :: KnownNat n => (Mean # MultivariateNormal n) -> (Vector n Double, Matrix n n Double)
- splitNaturalMultivariateNormal :: KnownNat n => (Natural # MultivariateNormal n) -> (Vector n Double, Matrix n n Double)
- joinMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Source # MultivariateNormal n
- joinMeanMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Mean # MultivariateNormal n
- joinNaturalMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Natural # MultivariateNormal n
- type SimpleLinearModel = Affine Tensor NormalMean Normal NormalMean
- type LinearModel n k = Affine Tensor (MVNMean n) (MultivariateNormal n) (MVNMean k)
Univariate
data NormalMean Source #
The Mean of a normal distribution. When used as a distribution itself, it is a Normal distribution with unit variance.
Instances
data NormalVariance Source #
The variance of a normal distribution.
Instances
Multivariate
data MVNMean (n :: Nat) Source #
The Mean of a normal distribution. When used as a distribution itself, it is a Normal distribution with unit variance.
Instances
data MVNCovariance (n :: Nat) Source #
The variance of a normal distribution.
Instances
type MultivariateNormal (n :: Nat) = LocationShape (MVNMean n) (MVNCovariance n) Source #
The Manifold
of MultivariateNormal
distributions. The Source
coordinates are the (vector) mean and the covariance matrix. For the
coordinates of a multivariate normal distribution, the elements of the mean
come first, and then the elements of the covariance matrix in row major
order.
Note that we only store the lower triangular elements of the covariance
matrix, to better reflect the true dimension of a MultivariateNormal
Manifold. In short, be careful when using join
and split
to access the
values of the Covariance matrix, and consider using the specific instances
for MVNs.
multivariateNormalCorrelations :: KnownNat k => (Source # MultivariateNormal k) -> Matrix k k Double Source #
Computes the correlation matrix of a MultivariateNormal
distribution.
bivariateNormalConfidenceEllipse :: Int -> Double -> (Source # MultivariateNormal 2) -> [(Double, Double)] Source #
Confidence elipses for bivariate normal distributions.
splitMultivariateNormal :: KnownNat n => (Source # MultivariateNormal n) -> (Vector n Double, Matrix n n Double) Source #
Split a MultivariateNormal into its Means and Covariance matrix.
splitMeanMultivariateNormal :: KnownNat n => (Mean # MultivariateNormal n) -> (Vector n Double, Matrix n n Double) Source #
Split a MultivariateNormal into its Means and Covariance matrix.
splitNaturalMultivariateNormal :: KnownNat n => (Natural # MultivariateNormal n) -> (Vector n Double, Matrix n n Double) Source #
Split a MultivariateNormal into the precision weighted means and (-0.5*) Precision matrix. Note that this performs an easy to miss computation for converting the natural parameters in our reduced representation of MVNs into the full precision matrix.
joinMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Source # MultivariateNormal n Source #
Join a covariance matrix into a MultivariateNormal.
joinMeanMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Mean # MultivariateNormal n Source #
Join a covariance matrix into a MultivariateNormal.
joinNaturalMultivariateNormal :: KnownNat n => Vector n Double -> Matrix n n Double -> Natural # MultivariateNormal n Source #
Joins a MultivariateNormal out of the precision weighted means and (-0.5) Precision matrix. Note that this performs an easy to miss computation for converting the full precision Matrix into the reduced, EF representation we use here.
Linear Models
type SimpleLinearModel = Affine Tensor NormalMean Normal NormalMean Source #
Linear models are linear functions with additive Guassian noise.
type LinearModel n k = Affine Tensor (MVNMean n) (MultivariateNormal n) (MVNMean k) Source #
Linear models are linear functions with additive Guassian noise.