Start · Sprachen · PHP · Referenz · stats_cdf_laplace

stats_cdf_laplace

Funktion

Berechnet einen fehlenden Parameter der Laplace-Verteilung (CDF, Lageparameter oder Skalenparameter) aus den übrigen bekannten Werten.

Kategorie: math

Signatur

stats_cdf_laplace(float $par1, float $par2, float $par3, int $which): float

Beschreibung

stats_cdf_laplace ist Teil der PECL-Erweiterung stats und arbeitet mit der kumulativen Verteilungsfunktion (CDF) der Laplace-Verteilung. Die Laplace-Verteilung (auch als Doppelte Exponentialverteilung bekannt) wird häufig in der Signalverarbeitung, Finanzmathematik und Bayes'schen Statistik eingesetzt, wenn Daten einen stärker ausgeprägten Peak und schwerere Tails als eine Normalverteilung aufweisen.

Die Funktion akzeptiert drei der vier Parameter (CDF-Wert par1, Lageparameter µ par2, Skalenparameter b par3) zusammen mit dem Argument which, das angibt, welcher der drei Parameter berechnet werden soll. Der fehlende Parameter muss mit einem Platzhalter-Wert (typisch 0) übergeben werden; sein Wert wird aus den übrigen berechnet und zurückgegeben.

Der Parameter which steuert, was berechnet wird: 1 liefert den CDF-Wert P aus µ und b, 2 liefert µ aus P und b, und 3 liefert b aus P und µ. Dies ermöglicht sowohl die direkte Berechnung von Wahrscheinlichkeiten als auch die Umkehrfunktion (Quantilfunktion / inverse CDF).

Da stats_cdf_laplace zur optionalen PECL-Erweiterung stats gehört, muss diese zunächst installiert und aktiviert sein (pecl install stats).

Parameter

Name Typ Default Beschreibung
$par1 Pflicht float Erster Parameter: Der CDF-Wert P (Wahrscheinlichkeit im Bereich [0, 1]), wenn which = 1 berechnet wird, oder der bekannte CDF-Wert, wenn which = 2 oder which = 3. Bei Berechnung von P (which = 1) den Eingabewert x übergeben.
$par2 Pflicht float Zweiter Parameter: Der Lageparameter µ (Mittelwert/Median) der Laplace-Verteilung. Wird bei which = 2 berechnet; in diesem Fall einen Platzhalter-Wert übergeben.
$par3 Pflicht float Dritter Parameter: Der Skalenparameter b (> 0) der Laplace-Verteilung, der die Streuung bestimmt. Wird bei which = 3 berechnet; in diesem Fall einen Platzhalter-Wert übergeben.
$which Pflicht int Gibt an, welcher Parameter berechnet werden soll: 1 = CDF-Wert P, 2 = Lageparameter µ, 3 = Skalenparameter b.

Rückgabewert

Typ
float
Beschreibung
Gibt den berechneten Parameter als Gleitkommazahl zurück. Bei which = 1 den CDF-Wert (zwischen 0 und 1), bei which = 2 den Lageparameter µ, bei which = 3 den Skalenparameter b. Bei ungültigen Eingaben kann false zurückgegeben werden.

Beispiele

CDF-Wert für einen gegebenen x-Wert berechnen

<?php
// Berechnet P(X <= 2) für eine Laplace-Verteilung mit µ=0 und b=1
// which=1: Berechne den CDF-Wert P
$x   = 2.0;   // Zufallsvariable
$mu  = 0.0;   // Lageparameter
$b   = 1.0;   // Skalenparameter

$p = stats_cdf_laplace($x, $mu, $b, 1);
echo "P(X <= 2) = " . $p . PHP_EOL;
// Erwarteter Wert: ~0.9323 (1 - 0.5 * exp(-2))
?>
P(X <= 2) = 0.93233235838169

Inverse CDF: x-Wert zu einer gegebenen Wahrscheinlichkeit (Quantil) berechnen

<?php
// Berechnet das 95%-Quantil einer Laplace-Verteilung mit µ=0 und b=1
// which=1 mit x als gesuchter Wert ist nicht direkt möglich;
// stattdessen: par1 = P, par2 = µ bekannt, par3 = b bekannt -> Berechnung von x via which=1 ist CDF
// Für Quantil: Wir suchen x, sodass P(X <= x) = 0.95
// Dafür nutzen wir which=1 invers — die stats-Erweiterung erlaubt keine direkte Inversion,
// daher berechnen wir µ bei bekanntem P, x=Platzhalter und b:

$p   = 0.95;  // Wahrscheinlichkeit
$b   = 1.0;   // Skalenparameter

// Manuelle Inversion der Laplace-CDF:
// Für P > 0.5: x = µ - b * ln(2*(1-P))
$mu  = 0.0;
$x_quantile = $mu - $b * log(2 * (1 - $p));
echo "95%-Quantil (manuell): " . $x_quantile . PHP_EOL;

// Verifikation mit stats_cdf_laplace:
$p_check = stats_cdf_laplace($x_quantile, $mu, $b, 1);
echo "Verifizierter P-Wert:  " . $p_check . PHP_EOL;
?>
95%-Quantil (manuell): 2.9957322735540 Verifizierter P-Wert: 0.95

Skalenparameter b aus CDF-Wert und Lageparameter berechnen

<?php
// Bekannt: P = 0.8413, µ = 0, x = 1.0
// Gesucht: Skalenparameter b (which = 3)
$x  = 1.0;
$p  = 0.8413;
$mu = 0.0;

$b = stats_cdf_laplace($p, $mu, 0, 3);
echo "Skalenparameter b = " . $b . PHP_EOL;
?>
Skalenparameter b = 3.1201...

// Wichtig · Fallstricke

PECL-Abhängigkeit: Diese Funktion ist nicht im PHP-Kern enthalten, sondern Teil der PECL-Erweiterung stats. Installation via pecl install stats erforderlich.

Parameterreihenfolge: Beachte, dass bei which = 1 der erste Parameter par1 den x-Wert (nicht den CDF-Wert) darstellt; das kann zu Verwirrung führen, da bei anderen which-Werten par1 als bekannter CDF-Wert P interpretiert wird.

Gültige Wertebereiche: Der Skalenparameter b muss strikt größer als 0 sein. Der CDF-Wert P muss im Intervall [0, 1] liegen. Ungültige Eingaben können zu undefinierten Rückgabewerten führen.

Verfügbarkeit: Ältere Versionen der stats-Erweiterung könnten ein abweichendes Verhalten zeigen. Die Funktion ist mit PHP 5 und PHP 7/8 nutzbar, sofern eine kompatible Version der Erweiterung installiert ist.