Załóżmy, że mam następujące nieokresowe szeregi czasowe. Oczywiście trend maleje i chciałbym to udowodnić jakimś testem (z wartością p ). Nie jestem w stanie zastosować klasycznej regresji liniowej ze względu na silną czasową (szeregową) autokorelację między wartościami.
library(forecast)
my.ts <- ts(c(10,11,11.5,10,10.1,9,11,10,8,9,9,
6,5,5,4,3,3,2,1,2,4,4,2,1,1,0.5,1),
start = 1, end = 27,frequency = 1)
plot(my.ts, col = "black", type = "p",
pch = 20, cex = 1.2, ylim = c(0,13))
# line of moving averages
lines(ma(my.ts,3),col="red", lty = 2, lwd = 2)
Jakie są moje opcje?
r
time-series
Ladislav Naďo
źródło
źródło
frequency=1
), jest tutaj mało istotny. Bardziej istotnym problemem może być to, czy chcesz określić funkcjonalną formę dla swojego modelu.Odpowiedzi:
Jak powiedziałeś, trend w przykładowych danych jest oczywisty. Jeśli chcesz tylko uzasadnić ten fakt testem hipotez, niż oprócz regresji liniowej (oczywisty wybór parametryczny), możesz zastosować nieparametryczny test Manna-Kendalla dla trendu monotonicznego. Test służy do
ponadto, jak zauważył Gilbert (1987), test
Statystyka testowa jest różnicą między różnicami ujemnymi i dodatnimi pomiędzy wszystkimi możliwymi parami n ( n - 1 ) / 2 , tj.xjot- xja n ( n - 1 ) / 2
W tym wątku można znaleźć kod R implementujący ten test.
Gilbert, RO (1987). Metody statystyczne monitorowania zanieczyszczenia środowiska. Wiley, NY.
Önöz, B., i Bayazit, M. (2003). Moc testów statystycznych do wykrywania trendów. Turkish Journal of Engineering and Environmental Sciences, 27 (4), 247-251.
źródło
Problem, który masz: „Nie mogę użyć klasycznej regresji liniowej z powodu silnej czasowej (szeregowej) autokorelacji między wartościami”. jest w rzeczywistości okazją. Wziąłem twoje 27 wartości i użyłem AUTOBOX oprogramowania (które pomogłem opracować), które może (opcjonalnie) automatycznie określić możliwy model. Oto rzeczywisty / dopasowany i prognozowany wykres . ACF resztek jest tutaj z resztkową działką tutaj . Model jest tu i tu i tutaj. Dwa współczynniki trafnie opisują dane z szacowanym „trendem”, czyli „dryfowaniem”, tj. Różnicą między okresami wynoszącą -596. Zauważ, że jest to jeden z trendów, w którym twój model używał liczb zliczających 1,2, ... 27 jako zmiennej predykcyjnej. Jeśli twoje dane sugerują ten rodzaj trendu, oprogramowanie uznałoby go za bardziej odpowiedni. Spróbuję znaleźć mój wcześniejszy post, który w pełni opisał / przeciwstawił te dwa rodzaje trendów. Tutaj Identyfikacja stochastycznego modelu trendu i Wykrywanie początkowego trendu lub wartości odstających
źródło
Możesz użyć współczynnika korelacji rang Spearmana, aby określić stopień, w jakim dane są monotoniczne. Zwraca dodatnie wartości dla monotonicznych danych rosnących i ujemne wartości dla monotonicznych danych malejących (od -1 do +1). W związku z linku powyżej, istnieje również testowanie istotności części dotyczącej, chociaż jestem pewien, że większość pakietów oprogramowania będzie miał wartość p dla ciebie zrobić przy obliczaniu współczynników korelacji (np Matlab:
[RHO,PVAL] = corr(...)
; w R:cor.test(x,...)
)źródło
Możesz użyć OLS, ponieważ nie ma seryjnej autokorelacji (przynajmniej w podanej próbce); zwróć uwagę na statystykę testową Durbina-Watsona wynoszącą 1,966 (≈2).
Zatem znacząco ujemny szacunek współczynnika dla x1 jest wszystkim, co musisz powiedzieć
lub
Zakłada się, że metodyka liczenia gatunków ma dobry zasięg i jest spójna przez lata w twojej próbie.
Zostało to utworzone przy użyciu tego kodu w języku Python (przepraszam; nie mam pod ręką R.):
źródło
Bardzo pomocne byłoby poznanie źródła danych, a także informacji, czy wartości
my.ts
mogą być ujemne, czy nie.Jednak, patrząc na fabułę, zamiast dostrzec stały trend liniowy , sugeruję raczej, że szeregi czasowe nie są nieruchome, a więc zintegrowane . Na przykład ceny akcji są również zintegrowane, ale zapasy już nie zwracają (wahają się w pobliżu 0).
Tę hipotezę można również przetestować przy użyciu testu Augmented Dickey Fuller:
Biorąc pod uwagę, że wartość p nie jest niższa niż 0,05, nie ma dowodów na to, że proces jest stacjonarny.
Aby dane były nieruchome, musisz je rozróżnić:
Teraz dane nie wykazują już żadnego trendu , a jedyne, co znajdziesz, to autoregresyjny warunek rzędu 2 (użycie
acf(diff.ts)
).źródło