Chcę utworzyć kod do rysowania ACF i PACF na podstawie danych szeregów czasowych. Podobnie jak ten wygenerowany wykres z minitabu (poniżej).
Próbowałem przeszukać formułę, ale nadal nie rozumiem jej dobrze. Czy mógłbyś mi powiedzieć formułę i jak jej użyć, proszę? Jaka jest pozioma czerwona linia na wykresie ACF i PACF powyżej? Jaka jest formuła?
Dziękuję Ci,
correlation
data-visualization
autocorrelation
partial-correlation
Surya Dewangga
źródło
źródło
Odpowiedzi:
Autokorelacje
Korelacja między dwiema zmiennymiy1, y2) jest zdefiniowana jako:
gdzie E jest operatorem oczekiwanym,μ1 i μ2) są średnimi odpowiednio dla y1 i y2) oraz σ1, σ2) są ich odchyleniami standardowymi.
W kontekście pojedynczej zmiennej, czyli auto -correlation,y1 jest oryginalna seria i y2) jest opóźniony wersja niego. Zgodnie z powyższą definicją przykładowe autokorelacje rzędu k = 0 , 1 , 2 , . . . można otrzymać przez obliczanie następującego wyrażenia z obserwowanej seriiyt ,t = 1 , 2 , . . . , n :
gdziey¯ jest średnią próbkową danych.
Częściowe autokorelacje
Częściowe autokorelacje mierzą zależność liniową jednej zmiennej po usunięciu efektu innych zmiennych wpływających na obie zmienne. Na przykład częściowa autokorelacja rzędu mierzy wpływ (zależność liniowa)yt - 2 na yt po usunięciu efektu yt - 1 zarówno na yt i yt - 2 .
Każdą częściową autokorelację można uzyskać jako serię regresji postaci:
gdziey~t jest serią oryginalną minus średnia próbki, yt- y¯ . Oszacowanie ϕ22 da wartość częściowej autokorelacji rzędu 2. Po rozszerzeniu regresji o k dodatkowych opóźnień, oszacowanie ostatniego terminu da częściową autokorelację rzędu k .
Alternatywnym sposobem obliczenia przykładowej częściowej autokorelacji jest rozwiązanie następującego układu dla każdego rzęduk :
Przedziały ufności
źródło
Chociaż OP jest nieco niejasny, może być bardziej ukierunkowany na formułę kodującą w stylu „receptury” niż na formułę modelu algebry liniowej.
ACF jest dość prosta: mamy szereg czasowy, a w zasadzie zrobić wiele „kopie” (jak w „kopiuj i wklej”) o tym, rozumiejąc, że każda kopia ma być przesunięty o jeden wpis z wcześniejszej kopii, ponieważ początkowe dane zawierająt punkty danych, podczas gdy poprzednia długość szeregu czasowego (która wyklucza ostatni punkt danych) jest tylko t - 1 . Możemy wykonać praktycznie tyle kopii, ile jest rzędów. Każda kopia jest skorelowana z oryginałem, pamiętając, że potrzebujemy identycznych długości, i w tym celu będziemy musieli przycinać tylny koniec początkowej serii danych, aby były porównywalne. Na przykład, aby skorelować dane początkowet st - 3 musimy pozbyć się ostatniego 3) punkty danych pierwotnego szeregu czasowego (pierwszy 3) chronologicznie).
Przykład:
Opracujemy szereg czasowy z cyklicznym wzorem sinusoidalnym nałożonym na linię trendu i hałas oraz wykreślymy ACF wygenerowany przez R. Ten przykład wziąłem z postu online autorstwa Christopha Scherbera i właśnie dodałem do niego szum:
Zwykle musielibyśmy przetestować dane pod kątem stacjonarności (lub po prostu spojrzeć na wykres powyżej), ale wiemy, że jest w tym trend, więc pomińmy tę część i przejdźmy bezpośrednio do etapu usuwania trendów:
Teraz jesteśmy gotowi przejąć te szeregi czasowe, najpierw generując ACF z
acf()
funkcją w R, a następnie porównując wyniki z prowizoryczną pętlą, którą zestawiłem:DOBRZE. To się udało. Do PACF . O wiele trudniejsze do zhakowania ... Chodzi tutaj o to, aby ponownie sklonować początkowe ts kilka razy, a następnie wybrać wiele punktów czasowych. Jednak zamiast po prostu korelować z początkowymi szeregami czasowymi, zebraliśmy wszystkie opóźnienia pomiędzy nimi i przeprowadziliśmy analizę regresji, aby wariancję wyjaśnioną przez poprzednie punkty czasowe można było wykluczyć (kontrolować). Na przykład, jeśli skupiamy się na PACF kończącym się na czast st - 4 , trzymamy t st , t st - 1 , t st - 2 i t st - 3 , jak również t st - 4 i cofamy się t st~ T yt - 1+ t st - 2+ t st - 3+ t st - 4 poprzez pochodzenie i zachowując jedynie współczynnik dlat st - 4 :
I na koniec rysowanie ponownie obok siebie, generowane R i obliczenia ręczne:
To, że pomysł jest poprawny, oprócz prawdopodobnych problemów obliczeniowych, można zauważyć w porównaniu
PACF
dopacf(st.y, plot = F)
.kod tutaj .
źródło
Cóż, w praktyce znaleźliśmy błąd (szum), który jest reprezentowany przezmit przedziały ufności pomagają ustalić, czy poziom można uznać za jedynie hałas (ponieważ około 95% razy przypada na przedziały).
źródło
Oto kod python do obliczenia ACF:
źródło