std.prob — Statistik und Verteilungen
Beschreibende Statistik in f64, die statistischen Spezialfunktionen (erf, lgamma, unvollständige Gamma und Beta), neun Verteilungen und die Tests nach Student und Pearson.
→ Mathematik-Units · std.sum · std.stats · std.mathx
import std.prob;
Schicht 2, hängt an std.mathx. 75 Funktionen — die größte Schnittstelle der Sammlung. Alle Beispiele mit lyxc 1.0.21A übersetzt und ausgeführt.
Verhältnis zu ''std.stats''
std.statsrechnet ganzzahlig.ArrayVariancedort gibtint64zurück — für eine Varianz ist das nur in Ausnahmefällen brauchbar, denn sie ist fast nie eine ganze Zahl.std.probist die Fassung inf64und damit die richtige Wahl, sobald gerechnet und nicht nur gezählt wird.
Der Bestand bleibt unangetastet; die beiden stehen nebeneinander.
Beschreibende Statistik
unit main;
import std.io;
import std.string;
import std.alloc;
import std.prob;
fn ZF(t: pchar, v: f64): void { Print(t); PrintF64(v); }
fn main(): int64 {
var n: int64 := 5;
var a: int64 := alloc(n * 8);
var i: int64 := 0;
while (i < n) { pokef64(a + i * 8, 2.0 + (i as f64)); i := i + 1; }
ZF("Mean : ", ProbMean(a, n));
ZF("VarianceS : ", ProbVarianceS(a, n));
ZF("StdDevS : ", ProbStdDevS(a, n));
ZF("Median : ", ProbMedian(a, n));
ZF("Erf(1) : ", ProbErf(1.0));
ZF("LogGamma(5) : ", ProbLogGamma(5.0));
ZF("NormalCdf(0) : ", ProbNormalCdf(0.0, 0.0, 1.0));
ZF("NormalCdf(1.96) : ", ProbNormalCdf(1.96, 0.0, 1.0));
return 0;
}
Mean : 4.000000
VarianceS : 2.500000
StdDevS : 1.581138
Median : 4.000000
Erf(1) : 0.842700
LogGamma(5) : 3.178053
NormalCdf(0) : 0.500000
NormalCdf(1.96) : 0.975002
Sämtliche Werte stimmen mit der Referenzrechnung überein. NormalCdf(1,96) = 0,975 ist die Zahl hinter dem 95-%-Konfidenzintervall.
<WRAP alert>
VarianceP und VarianceS sind nicht dasselbe. Der Unterschied ist der Nenner — n gegen n−1:
ProbVariancePgilt, wenn die Daten die ganze Grundgesamtheit sind.ProbVarianceSgilt, wenn sie eine Stichprobe daraus sind.
Für die Werte 2…6 sind das 2,0 gegen 2,5. Wer eine Stichprobe hat und VarianceP nimmt, unterschätzt die Streuung systematisch — bei kleinem n erheblich. Dasselbe gilt für StdDevP und StdDevS.
</WRAP>
| Gruppe | Funktionen |
|---|---|
| Lage | ProbMean · ProbMedian · ProbQuantile · ProbMin · ProbMax · ProbRange |
| Streuung | ProbVarianceP/S · ProbStdDevP/S · ProbIQR |
| Form | ProbSkewness · ProbKurtosisExcess |
| Zusammenhang | ProbCovariance · ProbCorrelation · ProbLinRegress |
| Hilfsmittel | ProbSum · ProbSortF64 |
ProbSortF64sortiert an Ort und Stelle.ProbMedian,ProbQuantileundProbIQRbrauchen sortierte Daten — wer die ursprüngliche Reihenfolge noch braucht, kopiert vorher.
Spezialfunktionen
| Funktion | Bedeutung |
|---|---|
ProbErf / ProbErfc | Fehlerfunktion und ihr Komplement |
ProbLogGamma / ProbGamma | Gammafunktion, logarithmisch und direkt |
ProbBeta | Betafunktion |
ProbGammaP / ProbGammaQ | unvollständige Gammafunktion |
ProbBetaI | unvollständige Betafunktion |
ProbLogBinom | Logarithmus des Binomialkoeffizienten |
ProbLogGammastattProbGamma, undProbLogBinomstatt des Koeffizienten selbst.Gamma(200)ist größer als jedef64-Zahl,LogGamma(200)dagegen unproblematisch. Wer Wahrscheinlichkeiten über viele Faktoren multipliziert, rechnet ohnehin logarithmisch — sonst unterläuft das Produkt lange vor dem Ende.
Verteilungen
Neun Verteilungen, jede mit Dichte (Pdf), Verteilungsfunktion (Cdf) und Quantilfunktion (Quantile): Normal, Log-Normal, Gleich, Exponential, Binomial, Poisson, Student-t, Chi², F.
Dazu die Tests: t-Test und Chi²-Test.
Die Quantilfunktionen sind Umkehrungen und iterieren. Sie sind entsprechend teurer alsCdfund tragen dessen Genauigkeit. In einer Schleife über viele Werte lohnt es, das Ergebnis zu behalten, statt es neu zu rechnen.
Genauigkeit
<WRAP alert>
Die Verteilungen rechnen intern über ExpF64 und LogF64 aus std.math und erben deren relativen Fehler von rund 1e−7 — die halbe f64-Genauigkeit. Die genaueren Fassungen MxExp/MxLog aus std.mathx sind noch nicht eingesetzt; eine Umstellung ist vorgeschlagen, aber nicht entschieden.
Für Signifikanzniveaus und Konfidenzintervalle ist das folgenlos. Wer Wahrscheinlichkeiten in den äußersten Ausläufern braucht — jenseits von 1e−10 —, sollte das Ergebnis gegenprüfen. </WRAP>
Die Summationen laufen bereits über std.sum und sind damit gegen Auslöschung abgesichert.
Letzte Aktualisierung: 2026-08-16 · alle Beispiele mit lyxc 1.0.21A übersetzt und ausgeführt; Lage- und Streuungsmaße, erf, lgamma und die Normalverteilung gegen eine unabhängige Referenzrechnung geprüft.
