Start · Sprachen · PHP · Referenz · stats_rand_gen_noncentral_t

stats_rand_gen_noncentral_t

Funktion

Erzeugt eine pseudozufällige Zahl aus der nichtzentralen t-Verteilung mit den angegebenen Freiheitsgraden und dem Nichtzentralitätsparameter.

Kategorie: math

Signatur

stats_rand_gen_noncentral_t(float $df, float $xnonc): float

Beschreibung

stats_rand_gen_noncentral_t() ist Teil der stats-PECL-Extension und liefert eine zufällige Stichprobe aus der nichtzentralen t-Verteilung (engl. noncentral t-distribution). Diese Verteilung verallgemeinert die klassische Student-t-Verteilung um einen Nichtzentralitätsparameter xnonc, der eine systematische Abweichung vom Ursprung beschreibt.

Die nichtzentrale t-Verteilung findet vor allem in der mathematischen Statistik Anwendung, z. B. bei der Berechnung der Teststärke (Power) statistischer Tests, bei Konfidenzintervallen für den Nichtzentralitätsparameter sowie in der Varianzanalyse. Der Parameter df gibt die Freiheitsgrade an und muss positiv sein; xnonc ist der Nichtzentralitätsparameter und kann positiv, negativ oder null sein.

Wenn xnonc den Wert 0.0 hat, entspricht die Ausgabe einer zentralen t-Verteilung mit df Freiheitsgraden. Die Funktion setzt intern auf den Algorithmus aus der RANLIB-Bibliothek (Brown, Lovato, Russell).

Parameter

Name Typ Default Beschreibung
$df Pflicht float Anzahl der Freiheitsgrade der Verteilung. Muss ein positiver Wert sein (z. B. df > 0).
$xnonc Pflicht float Nichtzentralitätsparameter der Verteilung. Kann beliebige reelle Werte annehmen; bei 0.0 ergibt sich eine zentrale t-Verteilung.

Rückgabewert

Typ
float
Beschreibung
Gibt eine pseudozufällige Gleitkommazahl zurück, die einer nichtzentralen t-Verteilung mit den angegebenen Parametern folgt.

Beispiele

Einzelne Zufallszahl aus der nichtzentralen t-Verteilung

<?php
// Setzt die stats-PECL-Extension voraus
// Freiheitsgrade: 10, Nichtzentralitätsparameter: 2.5
$df    = 10.0;
$xnonc = 2.5;

$randVal = stats_rand_gen_noncentral_t($df, $xnonc);
echo "Zufallswert (nichtzentrale t): " . $randVal . PHP_EOL;
Zufallswert (nichtzentrale t): 3.1472648291732

Simulation von 1000 Stichproben und Berechnung des Mittelwerts

<?php
// Setzt die stats-PECL-Extension voraus
$df    = 15.0;
$xnonc = 1.0;
$n     = 1000;
$sum   = 0.0;

for ($i = 0; $i < $n; $i++) {
    $sum += stats_rand_gen_noncentral_t($df, $xnonc);
}

$mean = $sum / $n;
// Der theoretische Erwartungswert beträgt xnonc * sqrt(df/2) * Gamma((df-1)/2) / Gamma(df/2)
// für df > 1, hier näherungsweise xnonc * sqrt(df/(df-2))
echo "Empirischer Mittelwert nach {$n} Stichproben: " . round($mean, 4) . PHP_EOL;
echo "Theoretischer Näherungswert: " . round($xnonc * sqrt($df / ($df - 2)), 4) . PHP_EOL;
Empirischer Mittelwert nach 1000 Stichproben: 1.0342 Theoretischer Näherungswert: 1.0911

// Wichtig · Fallstricke

Voraussetzung: Die Funktion ist nicht Bestandteil des PHP-Kerns, sondern erfordert die Installation der stats-PECL-Extension (pecl install stats).

Parametervalidierung: Der Parameter df muss strikt positiv sein (df > 0). Ungültige Werte können zu undefiniertem Verhalten oder falschen Ergebnissen führen, da die Funktion intern keine ausführliche Fehlerprüfung vornimmt.

Reproduzierbarkeit: Für reproduzierbare Ergebnisse kann der Zufallszahlengenerator mit stats_rand_setall() mit einem festen Seed initialisiert werden.