R 시계열의 증가 / 감소 추세 감지


9

일, 주 또는 월과 같은 기간이 많은 시계열이 있습니다. stl()기능을 사용하거나 사용하면 loess(x ~ y)특정 시계열의 추세가 어떻게 보이는지 볼 수 있습니다. 시계열 추세가 증가 또는 감소하는지 감지해야합니다. 어떻게 관리 할 수 ​​있습니까?

나는 선형 회귀 계수를 계산 lm(x ~ y)하고 경사 계수로 재생 하려고했습니다 . ( If |slope|>2 and slope>0 then트렌드 증가 else if |slope|>2 and slope<0– 감소) 추세 감지를위한 또 다른 효과적인 방법이 있습니까? 감사합니다!

예를 들어 : timeserie1, timeserie2있습니다. timeserie2증가하는 알고리즘 임을 알려주는 간단한 알고리즘이 필요합니다 timeserie1.에서 추세가 증가하거나 감소하지 않습니다. 어떤 기준을 사용해야합니까?

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

1
두 번째 예에는 추세가 없으므로이를 감지해서는 안됩니다. 기간 (230)에서, 데이터는 트렌드와 다른 레벨 시프트 (즉, 0,0,0,0,0,1,1,1,1,1,1 등)를 갖는다. 또한, Tsay 테스트를 사용하여 식별 할 수있는 약 200의 분산 변화가 있습니다. 자세한 내용은 여기를 www.unc.edu/~jbhill/tsay.pdf보기
톰 라일리

2
@Tom 네, 당신이 말하는 것은 데이터의 플롯에서 분명합니다. 실제로, 줄거리는 하나가 아니라 세 개의 개별 급격한 레벨 이동을 보여줍니다. 그러나 이것을 "추세"와 다른 것으로 특징 짓는 것은 당신의 분석에 대한 정의를하지 않습니다. 나는이 시계열의 행동에서 미묘한 세부 사항을 밝힐 것입니다. "추세"에 대한 가능한 정의에 대한 논의보다는 데이터 행동의 명확한 특성화를 통해 OP가 더 잘 제공 될 것을 제안하고 싶습니다. 그녀는 최소 제곱 기울기를 테스트하기위한 대안을 요청합니다 . 이는 "추세" 의미하는 바를 실제로 나타냅니다 .
whuber

답변:


7

영 위상 시프터 필터를 적용하고 일부 임계 값보다 높은 모든 주파수를 차단할 수 있습니다. 이것은 당신에게 일종의 "트렌드"를 줄 것입니다.

예를 들어, " R의 데이터 포인트에서 고역 통과 또는 저역 통과 필터를 어떻게 실행합니까? "라는 질문을 확인하십시오. 이들은 버터 워스 저역 통과 필터를 사용하는 방법을 보여줍니다. 이 필터의 문제점은 필터가 제로 위상 변이가 아니라는 것입니다. 즉, 저주파수 성분의 위상이 원래 신호를 기준으로 이동한다는 것을 알 수 있습니다. 위상을 이동시키지 않는 필터를 찾을 수 있습니다. 이것이 경제적 인 데이터라면 Lawrence J. Christiano와 Terry J. Fitzgerald (1999)의 "Band Pass Filter"에 따라 Christiano의 필터를 제안합니다. 실제 데이터의 경우 사용 가능한 톤 위상 시프트 필터가 많이 있어야합니다.

최신 정보:

다음은 두 번째 시계열의 LOG에 저 대역 통과 필터를 적용하는 예입니다. 분산을 균일하게하려면 LOG가 필요합니다.

UPDATE2 :

주파수 대역에서 불규칙한 [2-19], 주기적 [20-99] 및 경향 [100-] (기간 길이). 주파수 대역은 기본 현상에 대한 이해를 바탕으로 신중하게 선택해야합니다.


1
나는이 답변을 잠시 동안 당황하게했고 마침내 많은 통계 학자들이 "부드럽게"사용하는 것과 같은 방식으로 "trend"라는 단어를 사용해야한다는 것을 깨달았습니다. 그렇다면 모든 것이 합리적입니다. OP가 곧 "트렌드"로 그녀의 의미를 명확하게 밝히기를 바랍니다 .
whuber

네, 시계열 분해 의미로 "경향"을 사용하고 있습니다 : Y = 추세 + 순환 + 계절 +의 불규칙, 예를 들어 en.wikipedia.org/wiki/Decomposition_of_time_series을 경향이 컨텍스트에서 "매우 낮은"주파수 구성 요소가 될 것입니다 . 문제에 따라 얼마나 낮은가
Aksakal

1
그렇게 보이지 않는 것 같습니다. 고주파수 구성 요소를 필터링하면 일부 "불규칙"(읽기 : 노이즈) 및 순환 부분의 작은 부분이 제거되지만 추세, 중간 및 장기 순환 구성 요소 및 계절 구성 요소가 제거됩니다. 모두 남아있을 것입니다.
whuber

1
트렌드에는 저 대역 통과 필터를 사용합니다. 월간 데이터 시리즈가 몇 년 있다고 가정 해 보겠습니다. 이 경우 저 대역은 10 년주기 일 수 있으므로 1/10보다 높은 모든 주파수를 차단합니다 (시간이 년 단위 인 경우). 임계 값은 실제로 현상에 따라 달라집니다. 경제 데이터에서 비즈니스주기는 10-15 년 정도
소요될

1
새로운 그림에서 알 수 있듯이 필터링에 너무 공격적이면 분명한 추세도 사라집니다. 매끄러움 이 너무 강하여 데이터의 마지막 3 분의 1을 거의 모두 놓치지 않습니다. 그럼에도 불구하고, 이것은 당신이 참조하는 Wikipedia 기사에서 설명하는 질적 명목 성분으로의 분해가 아닙니다. 필터링 접근법에 대한 또 다른 관심사는 (그러나 수행되는) 통계적 방법 입니다. "트렌드"가 있는지 여부와 상승 또는 하강 여부를 어떻게 테스트 합니까?
whuber

3

시계열의 추세 감지는 단순히 잘못되거나 더 적극적으로 수행 될 수 있습니다. 시리즈는 예를 들어 트렌드를 나타내는 값을 가질 수 있으며, 예를 들어 1,2,3,4,5하나 이상의 시점에서 트렌드의 변화를 가질 수 있습니다 . 예를 들어 7,9,11,13,15,...다른 예는 1,1,1,1,1,2,3,4,5,6처음 5 개의 판독 값에 대한 트렌드가없는 경우 트렌드가 발생하는 경우입니다. 같은 시리즈 1,1,1,1,1,2,2,2,2,2는 레벨 시프트 (intercept)가 있다고합니다. 오토 박스는 (내 지식으로는) 시간 추세를 감지, 테스트 및 통합하기 위해 분석 기능을 고유하게 통합 한 소프트웨어입니다. 저는 개발자 중 한 명으로이 특정 영역에서 분석을 확장했습니다. 당신이 사용하려고하는 절차 (부정확하게 내 의견으로는)는 모델 추정입니다. 즉, 펄스 없음, 레벨 시프트 없음, 계절 펄스 없음, ARIMA 구조 없음, 지속적인 오류 분산 등입니다. 가정 된 모델의 또 다른 나쁜 예는 다음과 같습니다. 사용하다 [1]와이()=θ0+[미디엄/아르 자형]()다시 말하지만, 특정 구조를 가정하고 있습니다.

여기서 아이디어는 ARIMA 모델이 잘못되었거나 θ0 다른 시점에서 변화하고 있습니다.

전체 아이디어는 데이터를 "말하고"분석을 "들어보고" "올바른 모델"또는 "유용한 모델"을 감지하는 것입니다.

올슨 빈 (Orson Bean) – 또는 아마도 다른 누군가 – 한 번 말했다.“트렌드는 트렌드입니다. 구부러 질 때까지 그리고 트렌드가 구부러 질 때 트렌드는 끝납니다.”시계열의 현지 시간 트렌드는 중단 점을 식별해야합니다. 로컬 트렌드의 추정. 유용한 자료 / 참조는 http://www.autobox.com/OLDWEB/udontsay.html .

데이터를 게시하려면 게시하십시오. 결과를 다시 게시하겠습니다.


3
트렌드는 트렌드입니다 트렌드 \하지만 문제는, 구부러 집니까? \ 코스를 바꾸게 될까요 \ 예기치 않은 힘을 통해 \ 그리고 조기에 끝나는가? Alexander Cairncross
Nick Cox

응답 해주셔서 감사합니다. 나는 당신의 정보를 공부할 것입니다. 또한 일부 데이터를 게시했습니다.
Jurgita

1
이 경우 Marta 는이 답변에 설명 된대로 로컬 트렌드가 아니라 글로벌 "트렌드"(시계열의 두 끝 사이의 일반적인 값 차이의 의미)를 테스트하는 것처럼 들립니다 . 그 맞습니까?
whuber

1
@ 닉 감사합니다! 이 소스를 사냥하기 위해 어떤 노력을했다 있기 때문에, 여기있다 : 경제 예측 , 왕립 경제 학회 7 월 3 일, 1969 대통령 주소 . Cairncross는 Lincoln 인용문과 함께 연설을 시작했으며이 최초의 석회석 ( "Stein Age Forecaster"에 기인 함). 그 이후의 말은 그가 예측-추세의 외삽을 언급하고 있음을 분명히합니다.
whuber

1
@ whuber, 당신 말이 맞아요. 전 세계적인 트렌드를 찾고 있습니다. 내 질문이 오도되어 있다면 죄송합니다.
Jurgita
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.