R erkennt einen zunehmenden / abnehmenden Trend von Zeitreihen

9

Ich habe viele Zeitreihen mit Zeiträumen: Tag, Woche oder Monat. Mit stl()Funktion oder mit loess(x ~ y)kann ich sehen, wie Trends bestimmter Zeitreihen aussehen. Ich muss feststellen, ob der Trend der Zeitreihen zunimmt oder abnimmt. Wie kann ich das schaffen?

Ich habe versucht, lineare Regressionskoeffizienten lm(x ~ y)mit dem Steigungskoeffizienten zu berechnen und damit zu spielen. ( If |slope|>2 and slope>0 thenzunehmender Trend, else if |slope|>2 and slope<0- abnehmender). Vielleicht gibt es eine andere und effektivere Methode zur Trenderkennung? Vielen Dank!

Zum Beispiel: Ich habe timeserie1, timeserie2. Ich brauche einen einfachen Algorithmus, der mir sagt, dass timeserie2es sich um einen zunehmenden Algorithmus handelt, und timeserie1der Trend nimmt nicht zu oder ab. Welche Kriterien soll ich verwenden?

timeserie1::

1774 1706 1288 1276 2350 1821 1712 1654 1680 1451 1275 2140 1747 1749 1770 1797 1485 1299 2330 1822
1627 1847 1797 1452 1328 2363 1998 1864 2088 2084  594  884 1968 1858 1640 1823 1938 1490 1312 2312
1937 1617 1643 1468 1381 1276 2228 1756 1465 1716 1601 1340 1192 2231 1768 1623 1444 1575 1375 1267
2475 1630 1505 1810 1601 1123 1324 2245 1844 1613 1710 1546 1290 1366 2427 1783 1588 1505 1398 1226
1321 2299 1047 1735 1633 1508 1323 1317 2323 1826 1615 1750 1572 1273 1365 2373 2074 1809 1889 1521
1314 1512 2462 1836 1750 1808 1585 1387 1428 2176 1732 1752 1665 1425 1028 1194 2159 1840 1684 1711
1653 1360 1422 2328 1798 1723 1827 1499 1289 1476 2219 1824 1606 1627 1459 1324 1354 2150 1728 1743
1697 1511 1285 1426 2076 1792 1519 1478 1191 1122 1241 2105 1818 1599 1663 1319 1219 1452 2091 1771
1710 2000 1518 1479 1586 1848 2113 1648 1542 1220 1299 1452 2290 1944 1701 1709 1462 1312 1365 2326
1971 1709 1700 1687 1493 1523 2382 1938 1658 1713 1525 1413 1363 2349 1923 1726 1862 1686 1534 1280
2233 1733 1520 1537 1569 1367 1129 2024 1645 1510 1469 1533 1281 1212 2099 1769 1684 1842 1654 1369
1353 2415 1948 1841 1928 1790 1547 1465 2260 1895 1700 1838 1614 1528 1268 2192 1705 1494 1697 1588
1324 1193 2049 1672 1801 1487 1319 1289 1302 2316 1945 1771 2027 2053 1639 1372 2198 1692 1546 1809
1787 1360 1182 2157 1690 1494 1731 1633 1299 1291 2164 1667 1535 1822 1813 1510 1396 2308 2110 2128
2316 2249 1789 1886 2463 2257 2212 2608 2284 2034 1996 2686 2459 2340 2383 2507 2304 2740 1869  654
1068 1720 1904 1666 1877 2100  504 1482 1686 1707 1306 1417 2135 1787 1675 1934 1931 1456 1363 2027
1740 1544 1727 1620 1232 1199

timeserie2::

 122  155  124   97  155  134  115  122  162  115  102  163  135  120  139  160  126  122  169  154
 121  134  143  100  121  182  139  145  135  147   60   58  153  145  130  126  143  129   98  171
 145  107  133  115  113   96  175  128  106  117  124  107  114  172  143  111  104  132  110   80
 159  131  113  123  123  104  101  179  127  105  133  127  101   97  164  134  124   90  110  102
  90  186   79  145  130  115   79  104  191  137  114  131  109   95  119  173  158  137  128  119
 109  120  182  140  133  113  121  110  122  159  129  124  119  109  108   95  167  138  125  105
 139  118  115  166  140  112  116  139  121  109  164  135  118  121  112  111  102  169  136  151
 132  135  130  112  156  134  121  116  114   91   86  141  160  116  118  112   84  114  165  141
 109  123  122  110  100  162  145  121  118  115  107  103  162  142  130  139  134  121  118  164
 147  125  120  134  107  130  158  141  144  148  124  135  118  212  178  154  167  155  176  143
 201  170  144  138  152  136  123  223  189  160  153  190  136  144  276  213  199  211  196  170
 179  460  480  499  550  518  493  557  768  685  637  593  507  611  569  741  635  563  577  498
 456  446  677  552  515  441  438  462  530  699  629  555  641  625  544  585  705  584  553  622
 506  500  533  777  598  541  532  513  434  510  714  631 1087 1249 1102  913  888 1147 1056 1073
1075 1136  927  922 1066 1074  996 1189 1062  999  974 1174 1097 1055 1053 1097 1065 1171  843  441
 552  779  883  773  759  890  404  729  703  810  743  743  946  883  813  876  841  742  715  960
 862  743  806  732  669  621
Jurgita
quelle
1
Ihr zweites Beispiel hat keinen Trend, daher sollten Sie keinen erkennen. In der Periode 230 weisen die Daten eine Pegelverschiebung (dh 0,0,0,0,0,1,1,1,1,1,1 usw.) auf, die sich von einem Trend unterscheidet. Es gibt auch eine Änderung der Varianz bei ungefähr 200, die unter Verwendung des Tsay-Tests identifiziert werden kann. Mehr Infos hier www.unc.edu/~jbhill/tsay.pdf
Tom Reilly
2
@ Tom Ja, was Sie sagen, ist in einem Diagramm der Daten ersichtlich. (In der Tat zeigt ein Diagramm drei separate plötzliche Pegelverschiebungen, nicht nur eine). Die Charakterisierung als Abweichung von einem "Trend" wird Ihrer Analyse jedoch nicht gerecht. Ich weiß, dass dies subtile Details im Verhalten dieser Zeitreihe enthüllen wird. Ich möchte vorschlagen, dass das OP eher durch klare Charakterisierungen des Datenverhaltens als durch Diskussionen über mögliche Definitionen von "Trend" bedient wird. Sie fragt nach einer Alternative zum Testen einer Steigung der kleinsten Quadrate - und das ist de facto ein Hinweis darauf, was sie unter "Trend" versteht.
whuber

Antworten:

7

Sie können ein Nullphasenschieberfilter anwenden und alle Frequenzen ausschalten, die über einem bestimmten Schwellenwert liegen. Dies würde Ihnen eine Art "Trend" geben.

Schauen Sie sich beispielsweise diese Frage an: " Wie führe ich einen Hochpass- oder Tiefpassfilter für Datenpunkte in R aus? " Sie zeigen, wie der Butterworth-Tiefpassfilter verwendet wird. Das Problem mit diesem Filter ist, dass es keine Nullphasenverschiebung ist, dh wie Sie sehen, ist die Phase der Niederfrequenzkomponente relativ zum ursprünglichen Signal verschoben. Möglicherweise möchten Sie den Filter finden, der die Phase nicht verschiebt. Wenn dies Wirtschaftsdaten wären, würde ich Christianos Filter gemäß "The Band Pass Filter" von Lawrence J. Christiano und Terry J. Fitzgerald (1999) vorschlagen. Für physikalische Daten muss eine Tonne Nullphasenverschiebungsfilter verfügbar sein.

AKTUALISIEREN:

Hier ist ein Beispiel für die Anwendung des Tiefbandpassfilters auf das LOG der zweiten Zeitreihe. Das LOG wird benötigt, um die Varianz auszugleichen.

UPDATE2:

Hier ist eine Beispielzerlegung im Frequenzbereich mit Frequenzbändern: unregelmäßig [2-19], zyklisch [20-99] und Trend [100- ] (in Periodenlängen). Die Frequenzbänder müssen sorgfältig ausgewählt werden, basierend auf dem Verständnis des zugrunde liegenden Phänomens.

Aksakal
quelle
1
Ich habe eine Weile über diese Antwort nachgedacht und schließlich festgestellt, dass Sie das Wort "Trend" auf die gleiche Weise verwenden müssen, wie viele Statistiker "glatt" verwenden würden. Dann macht alles Sinn. Wir sollten hoffen, dass das OP bald klarstellt, was sie unter "Trend" versteht.
whuber
Ja, ich verwende "Trend" wie im Sinne der Zeitreihenzerlegung: y = Trend + zyklisch + saisonal + unregelmäßig, z. B. en.wikipedia.org/wiki/Decomposition_of_time_series. Der Trend wäre in diesem Zusammenhang eine "sehr niedrige" Frequenzkomponente . Wie niedrig hängt vom Problem ab
Aksakal
1
Es scheint nicht ganz so. Wenn Sie Hochfrequenzkomponenten herausfiltern, entfernen Sie einige der "unregelmäßigen" (sprich: Rauschen) und möglicherweise einen winzigen Teil des zyklischen Teils, aber den Trend, die mittel- und langfristigen zyklischen Komponenten und die saisonalen Komponenten wird alles bleiben.
whuber
1
Für einen Trend würden Sie einen Tiefbandpassfilter verwenden. Angenommen, Sie haben mehrere Jahre monatliche Datenreihen. In diesem Fall kann das niedrige Band einen Zyklus von 10 Jahren haben, sodass Sie alle Frequenzen höher als 1/10 (wenn die Zeit in Jahren ist) ausschalten. Der Schwellenwert hängt wirklich vom Phänomen ab. In Wirtschaftsdaten können die Konjunkturzyklen 10 bis 15 Jahre lang sein.
Daher
1
Wie Ihre neue Abbildung zeigt, verlieren Sie auch offensichtliche Trends, wenn Sie zu aggressiv filtern: Ihre Glättung ist so stark, dass fast das gesamte letzte Drittel der Daten fehlt. Unabhängig davon ist dies definitiv keine Zerlegung in die qualitativen fiktiven Komponenten, die in dem Wikipedia-Artikel beschrieben werden, auf den Sie verweisen. Ein weiteres Problem mit dem Filterungsansatz (wie auch immer er durchgeführt wird) ist der statistische: Wie testen Sie , ob es einen "Trend" gibt und ob er nach oben oder unten geht?
whuber
3

Die Trenderkennung in einer Zeitreihe kann einfach falsch oder aggressiver erfolgen. Eine Serie kann Werte haben, die einen Trend aufweisen, z. B. 1,2,3,4,5und dann eine Trendänderung zu einem oder mehreren Zeitpunkten, z. B. 7,9,11,13,15,...Ein anderes Beispiel ist, 1,1,1,1,1,2,3,4,5,6wenn für die ersten 5 Ablesungen kein Trend vorhanden ist und dann ein Trend auftritt. Eine Serie wie 1,1,1,1,1,2,2,2,2,2soll eine Pegelverschiebung haben (Änderung des Abschnitts). AUTOBOXist eine Software, die meines Wissens in einzigartiger Weise Analysen zum Erkennen, Testen und Einbeziehen von Zeittrends enthält. Ich war einer der Entwickler und habe die Analyse in diesem speziellen Bereich erweitert. Das Verfahren, das Sie verwenden möchten (meiner Meinung nach falsch), ist modellvermutend, dh keine Impulse, keine Pegelverschiebungen, keine saisonalen Impulse, keine ARIMA-Struktur, konstante Fehlervarianz usw. Ein weiteres mögliches schlechtes Beispiel für ein angenommenes Modell ist benutze , da man wiederum eine bestimmte Struktur annimmt.[1B]y(t)=θ0+[MA/AR]a(t)

Die Idee hier ist, dass das ARIMA-Modell möglicherweise falsch ist oder dass sich zu verschiedenen Zeitpunkten ändert (also unterschiedliche Trends).θ0

Die ganze Idee ist, die Daten "sprechen" und die Analyse "abhören" zu lassen und das "richtige Modell" oder zumindest ein "nützliches Modell" zu erkennen.

Orson Bean - oder vielleicht jemand anderes - sagte einmal: „Ein Trend ist ein Trend… bis er sich biegt, und wenn sich der Trend biegt, ist der Trend zu Ende.“ Lokale Zeittrends in Zeitreihen erfordern die Identifizierung der Haltepunkte und dann Schätzung des lokalen Trends. Einige nützliche Materialien / Referenzen finden Sie unter http://www.autobox.com/OLDWEB/udontsay.html

Wenn Sie einige Daten veröffentlichen möchten, tun Sie dies bitte, und ich werde einige Ergebnisse an Sie zurücksenden.

IrishStat
quelle
3
Ein Trend ist ein Trend ist ein Trend \ Aber die Frage ist, wird er sich verbiegen? \ Wird er seinen Kurs ändern \ Durch eine unvorhergesehene Kraft \ Und zu einem vorzeitigen Ende kommen? Alexander Cairncross
Nick Cox
Danke für die Antwort. Ich werde Ihre Informationen studieren. Ich habe auch einige Daten gepostet.
Jurgita
1
In diesem Fall, Marta, klingt es so, als würden Sie auf einen globalen "Trend" (im Sinne von Unterschieden bei typischen Werten zwischen den beiden Enden der Zeitreihen) und nicht auf lokale Trends testen, wie in dieser Antwort beschrieben. Ist das korrekt?
whuber
1
@ Nick Danke! Da es einige Anstrengungen gekostet hat, die Quelle aufzuspüren, ist es hier: Wirtschaftsprognose , Ansprache des Präsidenten an die Royal Economic Society, 3. Juli 1969 . Cairncross eröffnete seine Rede mit einem Lincoln-Zitat, gefolgt von diesem ursprünglichen Limerick (scherzhaft "Stein Age Forecaster" zugeschrieben). Die nachfolgenden Bemerkungen machen deutlich, dass er sich auf Prognosen bezog - Extrapolation von Trends.
whuber
1
@whuber, du hast recht, ich suche nach globalem Trend. Entschuldigung, wenn meine Frage irreführend war.
Jurgita