Rozważmy jednowymiarowy wektor o wartościach rzeczywistych x, który reprezentuje obserwacje niektórych procesów mierzonych w równych odstępach czasu. Nazywamy x w szeregu czasowym .
Niech n oznacza długość x, a x̄ oznacza średnią arytmetyczną x . Próbki autokowariancji funkcja jest zdefiniowany jako
dla wszystkich - n < h < n . Mierzy to zależność liniową między dwoma punktami tej samej serii obserwowanymi w różnych momentach.
Przykład autokorelacji Funkcja lub ACF, jest zdefiniowany jako
Mierzy to przewidywalność liniową szeregu x w czasie t , którą oznaczamy x t , przy użyciu tylko wartości x t + h .
Należy zauważyć, że te szacunkowe próbki nie pasują do naiwnych obliczeń opartych na właściwościach teoretycznych. Oznacza to, że funkcja autokorelacji próbki nie równa się do współczynnika korelacji Pearsona z X z h -step przesunięciem x .
Zadanie
Biorąc pod uwagę tablicę x i nieujemną liczbę całkowitą h , wydrukuj lub zwróć pierwszą autokorelację opóźnienia +1 h dla x , zaczynając od opóźnienia 0. Autokorelacje opóźnienia są te odpowiadające ujemnym wejściom w powyższych wzorach.
Możesz założyć, że 0 < h < n , gdzie n jest długością x , i że 2 < n <256.
Dane wyjściowe powinny być prawidłowe z dokładnością do 1E-4. Nie ma żadnych ograniczeń dotyczących korzystania z wbudowanych funkcji ani czasu działania.
Przykłady
h, x -> output
--------------
5, [2.4, 2.4, 2.4, 2.2, 2.1, 1.5, 2.3, 2.3, 2.5, 2] -> [1.00000000, 0.07659298, -0.06007802, -0.51144343, -0.02912874, -0.10468140]
1, [2134, 1863, 1877, 1877, 1492, 1249] -> [1.0000000, 0.3343041]
2, [13067.3, 13130.5, 13198.4] -> [1.0000000000, -0.0002854906, -0.4997145094]
źródło
Python 3,
147130126120 bajtówTo rozwiązanie prawdopodobnie będzie dalej grało w golfa, to dopiero początek.
Możesz to nazwać za pomocą:
źródło
MATL , 20 bajtów
EDYCJA (20 maja 2016 r.): Od wersji 18.0.0 języka używaj
Y+
zamiastX+
. Link zawiera tę zmianę.Wypróbuj online!
Korelacja jest ściśle związana ze splotem. Normalizujemy przez odjęcie średniej, a następnie zwijamy, normalizujemy ponownie, dzieląc przez wartość maksymalną, a następnie wybieramy pożądane opóźnienia.
źródło
Mathematica, 27 bajtów
Dzięki LegionMammal978 za zapisanie 1 bajtu.
Moglibyśmy pokonać Jelly, gdyby nazwy funkcji nie były tak długie.
Przypadek testowy
źródło
#2~CorrelationFunction~{#}&
.Oktawa,
4737 bajtówźródło
disp
, ponieważ wracasz do wyjścia funkcji)disp
.