Start · Sprachen · PHP · Referenz · stats_stat_correlation

stats_stat_correlation

Funktion

Berechnet den Pearson-Korrelationskoeffizienten zweier numerischer Datensätze und gibt einen Wert zwischen -1 und 1 zurück.

Kategorie: math

Signatur

stats_stat_correlation(array $arr1, array $arr2): float

Beschreibung

Die Funktion stats_stat_correlation() gehört zur PECL-Erweiterung stats und berechnet den Pearson-Korrelationskoeffizienten (auch Pearson's r genannt) für zwei Datensätze. Dieser Koeffizient misst die Stärke und Richtung eines linearen Zusammenhangs zwischen zwei Variablen.

Der Rückgabewert liegt immer im Bereich von -1 bis 1: Ein Wert nahe 1 deutet auf eine starke positive lineare Korrelation hin, ein Wert nahe -1 auf eine starke negative Korrelation, und ein Wert nahe 0 zeigt an, dass kein linearer Zusammenhang besteht.

Typische Anwendungsfälle sind statistische Auswertungen in den Bereichen Wissenschaft, Finanzen, Marktforschung oder Data-Science, etwa um zu prüfen, ob zwei Messreihen (z. B. Werbeausgaben und Umsatz) miteinander korrelieren.

Beide Arrays müssen dieselbe Anzahl an Elementen enthalten und sollten ausschließlich numerische Werte beinhalten. Die Funktion setzt die Installation der PECL-Erweiterung stats voraus, da sie nicht zum PHP-Kern gehört.

Parameter

Name Typ Default Beschreibung
$arr1 Pflicht array Erster numerischer Datensatz als indiziertes Array. Muss gleich viele Elemente wie arr2 enthalten.
$arr2 Pflicht array Zweiter numerischer Datensatz als indiziertes Array. Muss gleich viele Elemente wie arr1 enthalten.

Rückgabewert

Typ
float
Beschreibung
Gibt den Pearson-Korrelationskoeffizienten als Fließkommazahl im Bereich von -1.0 bis 1.0 zurück. Bei ungültigen Eingaben (z. B. unterschiedliche Array-Längen oder Standardabweichung von 0) kann das Verhalten undefiniert sein oder false zurückgegeben werden.

Beispiele

Einfache positive Korrelation zweier Datensätze

<?php
// Voraussetzung: PECL-Erweiterung 'stats' muss installiert sein
// pecl install stats

$temperatur = [15, 18, 21, 25, 30];
$eisverkauf  = [100, 130, 160, 210, 280];

$r = stats_stat_correlation($temperatur, $eisverkauf);

echo "Pearson-Korrelationskoeffizient: " . round($r, 4);
// Ausgabe: Pearson-Korrelationskoeffizient: 0.9957
Pearson-Korrelationskoeffizient: 0.9957

Negative Korrelation – Preis und Nachfrage

<?php
// Steigender Preis führt zu sinkender Nachfrage
$preis    = [10, 20, 30, 40, 50];
$nachfrage = [500, 400, 300, 200, 100];

$r = stats_stat_correlation($preis, $nachfrage);

if ($r === false) {
    echo "Fehler bei der Berechnung.";
} else {
    printf("Korrelationskoeffizient: %.4f\n", $r);
    if ($r < -0.9) {
        echo "Starke negative Korrelation festgestellt.";
    }
}
Korrelationskoeffizient: -1.0000 Starke negative Korrelation festgestellt.

// Wichtig · Fallstricke

Achtung: Die Funktion gehört zur PECL-Erweiterung stats, die separat installiert werden muss (pecl install stats). Sie ist nicht standardmäßig in PHP enthalten.

Beide Arrays müssen exakt gleich viele Elemente besitzen. Bei unterschiedlichen Längen kann das Ergebnis fehlerhaft oder undefiniert sein. Es empfiehlt sich daher, die Array-Längen mit count() vorab zu prüfen.

Wenn eine der Datenreihen eine Standardabweichung von 0 hat (alle Werte identisch), ist der Korrelationskoeffizient mathematisch undefiniert (Division durch null). Das Verhalten der Funktion in diesem Grenzfall sollte explizit geprüft werden.

Der Pearson-Korrelationskoeffizient misst nur lineare Zusammenhänge. Für nichtlineare Beziehungen sollten andere Maße wie Spearman's Rangkorrelation in Betracht gezogen werden.