Berechnen Sie anhand einer Reihe von Zahlen für die Ereignisse X und Y den Pearson-Korrelationskoeffizienten. Die Wahrscheinlichkeit jedes Ereignisses ist gleich, sodass die erwarteten Werte berechnet werden können, indem einfach jede Reihe summiert und durch die Anzahl der Versuche dividiert wird.
Eingang
1 6.86
2 5.92
3 6.08
4 8.34
5 8.7
6 8.16
7 8.22
8 7.68
9 12.04
10 8.6
11 10.96
Ausgabe
0.769
Der kürzeste Code gewinnt. Die Eingabe kann durch stdin oder arg erfolgen. Die Ausgabe erfolgt per Standardausgabe.
Bearbeiten: Eingebaute Funktionen sollten nicht zugelassen werden (dh berechneter erwarteter Wert, Varianz, Abweichung usw.), um eine größere Vielfalt an Lösungen zu ermöglichen. Sie können jedoch eine Sprache demonstrieren, die für die Aufgabe gut geeignet ist, indem Sie integrierte Funktionen (für Ausstellungen) verwenden.
Basierend auf Davids Idee für die Eingabe für Mathematica (86 Zeichen unter Verwendung des eingebauten Mittelwerts)
m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)]
m = Mean;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5
Umgehen mit unserem eigenen Mittelwert (101 Zeichen)
m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m = Total[#]/Length[#]&;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
quelle
m=Total@#/Length@#&
Antworten:
PHP 144 Bytes
Übernimmt die Eingabe von STDIN in dem im ursprünglichen Beitrag angegebenen Format. Ergebnis:
Verwenden des Vektorpunktprodukts:
wobei die Eingangsvektoren nach unten korrigiert durch und verbunden.
Perl 112 Bytes
Gleiche Alge, andere Sprache. In beiden Fällen wurden aus Gründen der Lesbarkeit neue Zeilen hinzugefügt, die nicht erforderlich sind. Der einzige bemerkenswerte Längenunterschied ist die erste Zeile: das Parsen der Eingabe.
quelle
Mathematica 34 Bytes
Hier sind einige Möglichkeiten, um die Pearson-Produktmomentkorrelation zu erhalten. Sie alle führen zum gleichen Ergebnis. Von Dr. belisarius: 34 Bytes
Eingebaute Korrelationsfunktion I : 15 Zeichen
Dies setzt voraus, dass
x
undy
Listen sind, die jeder Variablen entsprechen.Eingebaute Korrelationsfunktion II : 31 Zeichen
Dies setzt voraus, dass d eine Liste geordneter Paare ist.
Die Verwendung von
;;
fürAll
dank A Simmons.Unter Berufung auf die Standardabweichungsfunktion :
118115 ZeichenDie Korrelation kann bestimmt werden durch:
Handgerollte Korrelation : 119 Zeichen
Vorausgesetzt
x
undy
sind Listen ...quelle
s
fürSum
./(n-1)
dass er fälschlicherweise von der früheren Lösung übernommen wurde. Jetzt korrigiert.Q.
Angenommen, eingebaute Daten sind zulässig und x, y-Daten sind separate Vektoren (7 Zeichen):
Wenn Daten als geordnete Paare gespeichert werden, wie von David Carraher angegeben, erhalten wir (für 12 Zeichen):
quelle
MATLAB / Oktave
Nur zur Demonstration von Einbauten:
quelle
APL 57
Verwenden des Punktproduktansatzes:
quelle
J,
3027 BytesDiesmal als Funktion mit zwei Argumenten. Verwendet die Vektorformel zur Berechnung.
Verwendungszweck
Erläuterung
Nimmt zwei Listen a und b als separate Argumente.
quelle
x
undy
in der letzten Zeile herausrechnen, indem Sie sie zusammennähen,.
, um Ihnen zu geben((m@:*/@|:-*/@m)%%:@*/@(m@:*:-*:@m))x,.y
+/ .*&(%+/&.:*:)&(-+/%#)
die von Oleg in den J- Foren erkannt wird .Python 3, 140 Bytes
Es werden 2 Hilfsfunktionen (
E
undS
für den erwarteten Wert bzw. die Standardabweichung) definiert. Die Eingabe wird als 2 Iterables (Listen, Tupel usw.) erwartet. Probieren Sie es online aus .quelle
Oracle SQL 11.2, 152 Bytes (zur Ausstellung)
Nicht Golf gespielt
Die Eingabezeichenfolge sollte dasselbe Dezimaltrennzeichen wie die Datenbank verwenden.
quelle
Python 3 mit SciPy, 52 Bytes (für Ausstellung)
Eine anonyme Funktion, die die Eingabe der beiden Datensätze als Listen
x
und verwendety
und den Korrelationskoeffizienten zurückgibt.Wie es funktioniert
Hier ist nicht viel los; SciPy verfügt über ein eingebautes Element, das sowohl den Koeffizienten als auch den p-Wert zum Testen
(coefficient, p-value)
der Nichtkorrelation zurückgibt. Die Funktion übergibt daher einfach die Datensätze an dieses und gibt das erste Element des vom eingebauten Tupel zurückgegebenen Tupels zurück.Probieren Sie es auf Ideone
quelle