Zum Hauptinhalt springen
kstats-distributions bietet eine einheitliche API für stetige und diskrete Wahrscheinlichkeitsmodelle. Jede Verteilung unterstützt denselben Arbeitsablauf: Konstruktion mit Parametern, Abfrage statistischer Eigenschaften, Auswertung von Wahrscheinlichkeiten, Berechnung von Quantilen und Ziehung von Zufallsstichproben.

Arbeiten mit einer Verteilung

val normal = NormalDistribution(mu = 0.0, sigma = 1.0)

// Statistical properties
normal.mean                  // 0.0
normal.variance              // 1.0
normal.standardDeviation     // 1.0
normal.skewness              // 0.0
normal.kurtosis              // 0.0
normal.entropy               // 1.4189

// Evaluate
normal.pdf(0.0)              // 0.3989 — density at x = 0
normal.cdf(1.96)             // 0.9750 — P(X ≤ 1.96)
normal.sf(1.96)              // 0.0250 — P(X > 1.96) = 1 - cdf

// Invert
normal.quantile(0.975)       // 1.9600 — value at the 97.5th percentile

// Sample
normal.sample(Random(42))           // single random draw
normal.sample(5, Random(42))        // 5 random draws

Gemeinsame API

Jede Verteilung implementiert gemeinsame statistische Eigenschaften: mean, variance, standardDeviation, skewness, kurtosis und entropy. Die Auswertungsmethoden unterscheiden sich zwischen stetigen und diskreten Verteilungen:
OperationStetigDiskret
Punktwertpdf(x) — Dichtepmf(k) — exakte Wahrscheinlichkeit
Log-PunktwertlogPdf(x)logPmf(k)
Kumulativcdf(x)P(Xx)P(X \le x)cdf(k)P(Xk)P(X \le k)
Oberer Randsf(x)P(X>x)P(X > x)sf(k)P(X>k)P(X > k)
Quantilquantile(p)DoublequantileInt(p)Int
Stichprobesample(random)Doublesample(random)Int
Batch-Stichprobesample(n, random)DoubleArraysample(n, random)IntArray
Konstruktoren validieren Parameter sofort. Ungültige Werte (negative Standardabweichung, Wahrscheinlichkeit außerhalb von [0, 1], nicht-positive Freiheitsgrade) lösen bereits bei der Konstruktion eine InvalidParameterException aus, nicht erst bei der Auswertung.

Stetige Verteilungen

Die Gaußverteilung. Modelliert Daten, die symmetrisch um einen Mittelwert gruppiert sind, mit einer charakteristischen Glockenkurve.Parameter: mu — Mittelwert, sigma — Standardabweichung (muss positiv sein)
val d = NormalDistribution(mu = 100.0, sigma = 15.0)
d.mean       // 100.0
d.cdf(115.0) // 0.8413
d.quantile(0.975) // 129.3994
Verwenden, wenn Daten annähernd symmetrisch und unbeschränkt sind.
Schwerere Ränder als die Normalverteilung. Nähert sich der Normalverteilung bei steigenden Freiheitsgraden an.Parameter: df — Freiheitsgrade (muss positiv sein)
val d = StudentTDistribution(degreesOfFreedom = 10.0)
d.mean       // 0.0
d.cdf(2.228) // ≈ 0.975
d.quantile(0.975) // 2.2281
Verwenden für Konfidenzintervalle und t-Tests bei kleinem Stichprobenumfang.
Ähnliche Form wie die Normalverteilung, jedoch mit schwereren Rändern. Die CDF hat eine geschlossene logistische Funktion.Parameter: location — Zentrum, scale — Skalenparameter (muss positiv sein)
val d = LogisticDistribution(mu = 0.0, scale = 1.0)
d.mean       // 0.0
d.cdf(0.0)   // 0.5
d.pdf(0.0)   // 0.25
Verwenden, wenn eine geschlossene CDF benötigt wird oder die Daten etwas schwerere Ränder als die Normalverteilung aufweisen.
Extrem schwere Ränder. Mittelwert und Varianz sind undefiniert.Parameter: location — Zentrum (Median), scale — Halbwertsbreite bei halber Maximalhöhe (muss positiv sein)
val d = CauchyDistribution(location = 0.0, scale = 1.0)
d.pdf(0.0)        // 0.3183
d.cdf(0.0)        // 0.5
d.quantile(0.75)  // 1.0
Verwenden bei Daten mit extremen Ausreißern, bei denen der Mittelwert keine aussagekräftige Zusammenfassung ist.
Doppel-Exponentialverteilung. Schärfere Spitze und schwerere Ränder als die Normalverteilung.Parameter: location — Zentrum (Mittelwert und Median), scale — Skalenparameter (muss positiv sein)
val d = LaplaceDistribution(mu = 0.0, scale = 1.0)
d.mean       // 0.0
d.variance   // 2.0
d.pdf(0.0)   // 0.5
Verwenden bei Daten mit einer scharfen Spitze im Zentrum und exponentiellen Rändern.

Diskrete Verteilungen

Modelliert die Anzahl von Ereignissen in einem festen Intervall, wenn Ereignisse unabhängig mit konstanter Rate auftreten.Parameter: lambda — erwartete Anzahl der Ereignisse (muss positiv sein)
val d = PoissonDistribution(rate = 3.0)
d.mean          // 3.0
d.pmf(5)        // 0.1008
d.cdf(5)        // 0.9161
d.quantileInt(0.95) // 6
Verwenden für Zähldaten: Defekte pro Charge, Ankünfte pro Stunde, Ereignisse pro Tag.
Modelliert die Anzahl der Erfolge in einer festen Anzahl unabhängiger Bernoulli-Versuche.Parameter: trials — Anzahl der Versuche (muss nicht-negativ sein), probability — Erfolgswahrscheinlichkeit pro Versuch (muss in [0, 1] liegen)
val d = BinomialDistribution(trials = 10, probability = 0.3)
d.mean          // 3.0
d.pmf(3)        // 0.2668
d.cdf(3)        // 0.6496
d.quantileInt(0.5) // 3
Verwenden für Ja/Nein-Experimente, die eine bekannte Anzahl von Malen wiederholt werden.
Modelliert die Anzahl der Misserfolge vor Erreichen einer bestimmten Anzahl von Erfolgen.Parameter: r — Anzahl der Erfolge (muss positiv sein), p — Erfolgswahrscheinlichkeit (muss in (0, 1] liegen)
val d = NegativeBinomialDistribution(successes = 5, probability = 0.5)
d.mean          // 5.0
d.variance      // 10.0
d.pmf(3)        // probability of exactly 3 failures before 5 successes
Verwenden für überdisperse Zähldaten oder zur Modellierung der Versuchsanzahl bis zum Erreichen eines Ziels.
Modelliert die Anzahl der Versuche bis zum ersten Erfolg. Ein Spezialfall der negativen Binomialverteilung.Parameter: probability — Erfolgswahrscheinlichkeit pro Versuch (muss in (0, 1] liegen)
val d = GeometricDistribution(probability = 0.3)
d.mean          // 3.3333
d.pmf(1)        // 0.3
d.cdf(3)        // 0.657
Verwenden für Fragen der Art „wie viele Versuche bis zum Erfolg”.

Auswahl einer Verteilung

Im Zweifelsfall beginnen Sie mit NormalDistribution für stetige Daten und PoissonDistribution für Zähldaten. Diese sind die gängigsten Standardverteilungen und dienen als vernünftige Ausgangspunkte.
DatenformEmpfohlener Ausgangspunkt
Symmetrische reellwertige DatenNormalDistribution, StudentTDistribution, LogisticDistribution
Positive reellwertige DatenExponentialDistribution, GammaDistribution, WeibullDistribution, LogNormalDistribution
Daten beschränkt auf [0, 1]BetaDistribution
Beschränkt auf ein bekanntes IntervallUniformDistribution, TriangularDistribution
Zähldaten und EreignissummenPoissonDistribution, BinomialDistribution, NegativeBinomialDistribution
Zähldaten ohne ZurücklegenHypergeometricDistribution
Daten mit schweren RändernCauchyDistribution, ParetoDistribution, LevyDistribution
Rang-Häufigkeits-DatenZipfDistribution, LogarithmicDistribution

API-Referenz

Vollständige API-Referenz

Durchsuchen Sie alle Verteilungskonstruktoren, Methoden und Eigenschaften in der Dokka-generierten Referenz.
Last modified on March 22, 2026