Biorąc pod uwagę serię liczb dla zdarzeń X i Y, oblicz współczynnik korelacji Pearsona. Prawdopodobieństwo każdego zdarzenia jest równe, więc oczekiwane wartości można obliczyć, po prostu sumując każdą serię i dzieląc przez liczbę prób.
Wejście
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
Wynik
0.769
Najkrótszy kod wygrywa. Dane wejściowe mogą być stdin lub arg. Wyjście będzie według standardowego wyjścia.
Edycja: Wbudowane funkcje nie powinny być dozwolone (tj. Obliczona oczekiwana wartość, wariancja, odchylenie itp.), Aby umożliwić większą różnorodność rozwiązań. Zapraszam jednak do zademonstrowania języka, który jest dobrze dopasowany do zadania, za pomocą wbudowanych funkcji (na wystawę).
Na podstawie pomysłu Davida dotyczącego danych wejściowych dla Mathematica (86 znaków przy użyciu wbudowanej średniej)
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
Cokół za pomocą naszego własnego środka (101 znaków)
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
źródło
m=Total@#/Length@#&
Odpowiedzi:
PHP 144 bajty
Pobiera dane wejściowe ze STDIN, w formacie podanym w oryginalnym poście. Wynik:
Za pomocą iloczynu wektorowego:
gdzie wektory wejściowe są korygowane w dół odpowiednio przez i .
Perl 112 bajtów
Ten sam alg, inny język. W obu przypadkach dodano nowe wiersze dla „czytelności” i nie są one wymagane. Jedyną zauważalną różnicą długości jest pierwszy wiersz: parsowanie danych wejściowych.
źródło
Matematyka 34 bajty
Oto kilka sposobów uzyskania korelacji momentu produktu Pearson. Wszystkie dają ten sam wynik. Od dr Belizariusza: 34 bajty
Wbudowana funkcja korelacji I : 15 znaków
Zakłada się, że
x
iy
to listy odpowiadające każdej zmiennej.Wbudowana funkcja korelacji II : 31 znaków
Zakłada się, że d jest listą uporządkowanych par.
Zastosowanie
;;
dlaAll
Dzięki Simmons.Poleganie na funkcji odchylenia standardowego :
118115 znakówKorelacja może być określona przez:
Ręcznie walcowana korelacja : 119 znaków
Zakładając
x
iy
są to listy ...źródło
s
zaSum
./(n-1)
błędnym przeniesieniem z wcześniejszego rozwiązania. Teraz poprawione.Q
Zakładając, że wbudowane są dozwolone, a dane x, y są oddzielnymi wektorami (7 znaków):
Jeśli dane są przechowywane jako uporządkowane pary, jak wskazał David Carraher, otrzymujemy (dla 12 znaków):
źródło
MATLAB / Octave
W celu pokazania tylko wbudowanych elementów:
źródło
APL 57
Przy użyciu metody iloczynu:
źródło
J,
3027 bajtówTym razem jako funkcja przyjmująca dwa argumenty. Do obliczenia używa wzoru wektorowego.
Stosowanie
Wyjaśnienie
Zajmuje dwie listy A i B jako osobne argumenty.
źródło
x
iy
w ostatniej linii, łącząc je razem,,.
aby dać ci((m@:*/@|:-*/@m)%%:@*/@(m@:*:-*:@m))x,.y
+/ .*&(%+/&.:*:)&(-+/%#)
J Oleg rozpoznaje krótszą 24-bajtową wersję .Python 3, 140 bajtów
Funkcje pomocnicze 2 (
E
iS
, na oczekiwanej wartości i odchylenia standardowego, odpowiednio), są zdefiniowane. Dane wejściowe są oczekiwane jako 2 iterowalne (listy, krotki itp.). Wypróbuj online .źródło
Oracle SQL 11.2, 152 bajty (na wystawę)
Nie grał w golfa
Łańcuch wejściowy powinien używać tego samego separatora dziesiętnego co baza danych.
źródło
Python 3 z SciPy, 52 bajty (na wystawę)
Anonimowa funkcja, która pobiera dane wejściowe dwóch zestawów danych jako listy
x
iy
, i zwraca współczynnik korelacji.Jak to działa
Tutaj niewiele się dzieje; SciPy ma wbudowaną funkcję, która zwraca zarówno współczynnik, jak i wartość p dla testowania braku korelacji, więc funkcja po prostu przekazuje do tego zestawy danych i zwraca pierwszy element
(coefficient, p-value)
krotki zwrócony przez wbudowaną funkcję.Wypróbuj na Ideone
źródło