Mixture Distributions, Multimodality, and Fat Tails
Install and import#
npm install fintech-algorithmsimport { mixtureDistributionsMultimodalityAndFatTails } from "fintech-algorithms/foundations/probability-distributions-and-simulation-basics/mixture-distributions-multimodality-and-fat-tails";Signature#
mixtureDistributionsMultimodalityAndFatTails(input)Evaluates a weighted mixture of normal components at input.x, which is how a single series can show more than one mode and fatter tails than any of its parts.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | D00Input | One record carrying x (the point to evaluate) and components, a list where each entry has weight, mean and sd. p and sigma are validated by the family entry point before dispatching.components: non-empty; every weight nonnegative, weights summing to one within 1e-12, every sd strictly positive · sigma: strictly positive · p: between 0 and 1 inclusive |
Returns#
D00Output
An object with mixturePdf (the weighted sum of the component densities at x), componentCount and weightSum.
Errors#
- When p is missing or outside 0 to 1 — this check runs for every topic in the family — throws RangeError
- When sigma is zero or negative — this check runs for every topic from A05 onward — throws RangeError
- When components is empty, a weight is negative, the weights miss one by more than 1e-12, or a component sd is zero or negative — throws RangeError
Complexity: time O(m),
space O(m).
Worked example#
verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.
Input#
{
"values": [0.2, 0.5, 0.7, 1, 1.4],
"x": 1,
"p": 0.3,
"n": 5,
"k": 2,
"lambda": 2,
"seed": 42,
"sampleCount": 8,
"mu": 0,
"sigma": 1,
"df": 5,
"shape": 2,
"scale": 1.5,
"components": [
{
"weight": 0.7,
"mean": 0,
"sd": 1
},
{
"weight": 0.3,
"mean": 3,
"sd": 0.8
}
]
}Call#
mixtureDistributionsMultimodalityAndFatTails(input)Returns#
object with 2 fields: mixturePdf, componentCount
{
"mixturePdf": 0.17595261984848856,
"componentCount": 2
}Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- Probability Distributions — NIST/SEMATECH e-Handbook
- Probability Distributions — SciPy User Guide
- Random Sampling — NumPy Documentation
- Historical-example decision