Start · Sprachen · PHP · Referenz · stats_rand_gen_f

stats_rand_gen_f

Funktion

Erzeugt eine pseudo-zufällige Gleitkommazahl, die der F-Verteilung (Fisher-Verteilung) mit den Freiheitsgraden <code>dfn</code> (Zähler) und <code>dfd</code> (Nenner) folgt.

Kategorie: math

Signatur

stats_rand_gen_f(float $dfn, float $dfd): float

Beschreibung

Die Funktion stats_rand_gen_f() gehört zur PECL-Erweiterung stats und liefert eine zufällige Stichprobe aus der F-Verteilung (auch Fisher-Snedecor-Verteilung genannt). Die F-Verteilung wird typischerweise in der Varianzanalyse (ANOVA) und bei statistischen Hypothesentests zur Überprüfung von Varianzverhältnissen verwendet.

Die zwei Parameter dfn und dfd repräsentieren die Freiheitsgrade des Zählers (numerator degrees of freedom) und des Nenners (denominator degrees of freedom). Beide Werte müssen positiv sein. Intern wird die F-verteilte Zufallsgröße üblicherweise als Quotient zweier chi-quadrat-verteilter Größen, jeweils geteilt durch ihre Freiheitsgrade, realisiert.

Die Funktion ist nützlich, wenn man Monte-Carlo-Simulationen oder statistische Tests (z. B. F-Tests) implementiert und dafür F-verteilte Zufallsstichproben benötigt. Da sie Teil der PECL-Erweiterung stats ist, muss diese explizit installiert und aktiviert sein.

Parameter

Name Typ Default Beschreibung
$dfn Pflicht float Freiheitsgrade des Zählers (numerator degrees of freedom). Muss ein positiver Wert sein.
$dfd Pflicht float Freiheitsgrade des Nenners (denominator degrees of freedom). Muss ein positiver Wert sein.

Rückgabewert

Typ
float
Beschreibung
Gibt eine pseudo-zufällige Gleitkommazahl zurück, die der F-Verteilung mit den angegebenen Freiheitsgraden entspricht. Der Rückgabewert ist stets nicht-negativ.

Beispiele

Einfache F-verteilte Zufallszahl erzeugen

<?php
// Voraussetzung: PECL-Erweiterung 'stats' ist installiert
// F-Verteilung mit 5 Freiheitsgraden im Zähler und 10 im Nenner
$dfn = 5.0;
$dfd = 10.0;

$zufallswert = stats_rand_gen_f($dfn, $dfd);
echo "F-verteilte Zufallszahl: " . $zufallswert . PHP_EOL;
?>
F-verteilte Zufallszahl: 0.73214...

Monte-Carlo-Simulation mit F-Verteilung

<?php
// Erzeuge 1000 F-verteilte Stichproben und berechne den Mittelwert
// Theoretischer Erwartungswert = dfd / (dfd - 2) fuer dfd > 2
$dfn = 3.0;
$dfd = 8.0;
$anzahl = 1000;
$summe = 0.0;

for ($i = 0; $i < $anzahl; $i++) {
    $summe += stats_rand_gen_f($dfn, $dfd);
}

$stichprobenmittel = $summe / $anzahl;
$theoretischerErwartungswert = $dfd / ($dfd - 2);

echo sprintf(
    "Stichprobenmittel: %.4f\nTheoretischer Erwartungswert: %.4f\n",
    $stichprobenmittel,
    $theoretischerErwartungswert
);
?>
Stichprobenmittel: 1.3421 Theoretischer Erwartungswert: 1.3333

// Wichtig · Fallstricke

Wichtig: Die Funktion stats_rand_gen_f() ist Bestandteil der PECL-Erweiterung stats, die nicht im PHP-Kern enthalten ist. Sie muss separat über PECL installiert werden (pecl install stats) und in der php.ini aktiviert sein (extension=stats.so).

  • Beide Freiheitsgrade (dfn und dfd) müssen strikt positiv sein (größer als 0). Negative Werte oder null führen zu undefiniertem Verhalten.
  • Der Erwartungswert der F-Verteilung existiert nur für dfd > 2 und beträgt dann dfd / (dfd - 2).
  • Für reproduzierbare Ergebnisse kann der Zufallsgenerator mit stats_rand_setall() initialisiert werden.
  • Die Funktion ist nicht kryptografisch sicher und sollte nicht für sicherheitskritische Anwendungen verwendet werden.