Angenommen, ich habe folgende nicht periodische Zeitreihen. Offensichtlich nimmt der Trend ab und ich möchte ihn durch einen Test (mit p-Wert ) beweisen . Ich kann die klassische lineare Regression aufgrund der starken zeitlichen (seriellen) Autokorrelation zwischen Werten nicht verwenden.
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)
Was sind meine Optionen?
r
time-series
Ladislav Naďo
quelle
quelle
frequency=1
), hier wenig relevant ist. Ein relevanteres Problem könnte sein, ob Sie bereit sind, ein Funktionsformular für Ihr Modell anzugeben.Antworten:
Wie Sie sagten, ist der Trend in Ihren Beispieldaten offensichtlich. Wenn Sie diese Tatsache nur durch einen Hypothesentest rechtfertigen möchten, können Sie neben der linearen Regression (der offensichtlichen parametrischen Wahl) auch den nichtparametrischen Mann-Kendall-Test für den monotonen Trend verwenden. Der Test ist es gewohnt
darüber hinaus, wie von Gilbert (1987) festgestellt, der Test
Die Teststatistik ist die Differenz zwischen negativen und positiven Unterschieden zwischen allen n ( n - 1 ) / 2 möglichen Paaren, dhxj- xich n ( n - 1 ) / 2
Dabei ist eine Vorzeichenfunktion . S kann verwendet werden , zu berechnen τ Statistiken , die auf Korrelation ähnlich ist , wie es aus Bereichen - 1 bis + 1 , in dem das Vorzeichen negativ vermuten läßt, oder positive Entwicklung und den Wert von τ zu Steigung des Trends proportional ist.sgn(⋅) S τ −1 +1 τ
Schließlich können Sie Werte berechnen . Für Stichproben der Größe n ≤ 10 können Sie Tabellen mit vorberechneten p- Werten für unterschiedliche Werte von S und unterschiedliche Stichprobengrößen verwenden (siehe Gilbert, 1987). Bei größeren Stichproben müssen Sie zuerst die Varianz von S berechnenp n≤10 p S S
und dann berechnen , PrüfgrößeZMK
In this thread you can find R code implementing this test.
Since theS statistic is compared to all possible pairs of observations then, instead of using normal approximation for p -value you can use permutation test that is obvious for this case. First, you compute S statistic from your data and then you randomly shuffle your data multiple times and compute it for each of the samples. p is simply the proportion of cases when Sdata≥Spermutation for upward trend or Sdata≤Spermutation for downward trend.
Gilbert, R.O. (1987). Statistical Methods for Environmental Pollution Monitoring. Wiley, NY.
Önöz, B., & Bayazit, M. (2003). The power of statistical tests for trend detection. Turkish Journal of Engineering and Environmental Sciences, 27(4), 247-251.
quelle
Das Problem, das Sie haben "Ich kann die klassische lineare Regression aufgrund einer starken zeitlichen (seriellen) Autokorrelation zwischen Werten nicht verwenden." ist in Wirklichkeit eine Chance. Ich habe Ihre 27 Werte genommen und mit AUTOBOX eine Software (die ich mitentwickelt habe) verwendet, die (optional) automatisch ein mögliches Modell ermitteln kann. Hier ist das Diagramm für Ist / Anpassung und Prognose . Der ACF der Residuen ist hier mit Residuendiagramm hier . Das Modell ist hier und hier und hier. Zwei Koeffizienten beschreiben die Daten treffend mit einem geschätzten "Trend", auch bekannt als "Drift", dh einer Differenz von Periode zu Periode von -.596. Beachten Sie, dass dies eine Art von Trend ist, bei dem Ihr Modell die Zählzahlen 1,2, ... 27 als Prädiktorvariable verwendet hat. Wenn Ihre Daten auf diesen Trend hindeuten, hätte die Software festgestellt, dass er besser anwendbar ist. Ich werde versuchen, einen früheren Beitrag von mir zu finden, der diese beiden Arten von Trends vollständig detailliert / kontrastiert. Hier Identifizieren eines stochastischen Trendmodells und Erkennen des anfänglichen Trends oder der Ausreißer
quelle
Sie können den Rangkorrelationskoeffizienten von Spearman verwenden, um zu bestimmen, inwieweit Ihre Daten monoton sind. Es werden positive Werte für monoton ansteigende Daten und negative Werte für monoton abnehmende Daten (zwischen -1 und +1) zurückgegeben. Im Anschluss an den obigen Link, gibt es auch einen Abschnitt über Signifikanztests, obwohl ich bin sicher , die meisten Software - Pakete wird ein p-Wert für Sie getan haben , wenn Korrelationskoeffizienten der Berechnung (zB in Matlab:
[RHO,PVAL] = corr(...)
; in R:cor.test(x,...)
)quelle
Sie können OLS verwenden, da keine serielle Autokorrelation vorliegt (zumindest in dem von Ihnen angegebenen Beispiel). Beachten Sie die Durbin-Watson-Teststatistik von 1,966 (≈2).
Die signifikant negative Koeffizientenschätzung für x1 ist also alles, was Sie brauchen, um so etwas zu sagen
oder
Dies setzt voraus, dass die Methode zur Zählung der Arten eine gute Abdeckung aufweist und über die Jahre in Ihrer Stichprobe konsistent ist.
Dies wurde mit diesem Python-Code erstellt (sorry, ich habe kein R zur Hand):
quelle
Die Datenquelle zu kennen wäre sehr hilfreich, und auch die Information, ob die Werte von
my.ts
negativ werden könnten oder nicht.Wenn ich jedoch einen kurzen Blick auf die Handlung werfen möchte, anstatt einen konstanten linearen Trend zu sehen , schlage ich eher vor, dass die Zeitreihen nicht stationär und daher integriert sind . Beispielsweise werden auch Aktienkurse integriert, aber die Aktienrenditen nicht mehr (sie schwanken nahe 0).
Diese Hypothese kann auch mit dem Augmented Dickey Fuller Test getestet werden:
Da der p-Wert nicht niedriger als 0,05 ist, gibt es keinen Hinweis darauf, dass der Prozess stationär ist.
Um die Daten stationär zu machen, müssen Sie sie unterscheiden:
Jetzt zeigen die Daten keinen Trend mehr und das einzige, was Sie finden, ist ein autoregressiver Term der Ordnung 2 (unter Verwendung
acf(diff.ts)
).quelle