Comment détecter et quantifier une rupture structurelle dans les séries chronologiques (R)

10

Contexte

Donc, tout d'abord quelques informations pour évaluer le niveau de compréhension que je pourrais avoir. Actuellement en train de terminer une thèse de maîtrise, les statistiques ont été une partie négligeable de cela, même si j'ai une compréhension de base. Ma question actuelle me fait douter de ce que je peux / dois faire dans la pratique, lire de plus en plus en ligne et dans la littérature semble contre-productif.

Qu'est-ce que j'essaie de réaliser?

Donc, pour ma thèse, j'ai rejoint une entreprise et la question générale à laquelle j'essaie de répondre est essentiellement comment un processus prédictif est affecté par la mise en œuvre d'un certain système (qui affecte les données utilisées pour le processus prédictif).

Le résultat souhaité à cet égard est une compréhension de:

  1. Y a-t-il un changement notable? (par exemple, preuve statistique)
  2. Quelle est l'ampleur du changement? (en moyenne et variance)
  3. Quels facteurs sont importants dans ce processus prédictif (également comment l'influence des facteurs change d'avant> après la pause)

Pour répondre aux questions 1 et 2, j'ai obtenu des données historiques sous la forme d'un objet de série chronologique (et plus, mais sans pertinence à ce stade). L'utilisation du logiciel I est R .

Les données

Les données englobent un score pondéré pour chaque jour (2,5 ans), indiquant à quel point le processus prédictif a mal fonctionné (écart par rapport à l'événement réel). Cet objet d'une série chronologique contient le score pondéré pour les prédictions qui se sont produites depuis une heure avant jusqu'à l'occurrence réelle de l'événement (intervalle d'une heure) pour ces 2,5 ans (chaque jour a donc un score pondéré pour cet intervalle). De même, il existe plusieurs séries chronologiques construites pour d'autres intervalles (par exemple 1-2, 2-3 heures, etc.)

myts1 <- structure(c(412.028462047, 468.938224875, 372.353242472, 662.26844965, 
                 526.872020535, 396.434818388, 515.597528222, 536.940884418, 642.878650146, 
                 458.935314286, 544.096691918, 544.378838523, 486.854043968, 478.952935122, 
                 533.171083451, 507.543369365, 475.992539251, 411.626822157, 574.256785085, 
                 489.424743512, 558.03917366, 488.892234577, 1081.570101272, 488.410996801, 
                 420.058151274, 548.43547725, 759.563191992, 699.857042552, 505.546581256, 
                 2399.735167563, 959.058553387, 565.776425823, 794.327364085, 
                 1060.096712241, 636.011672603, 592.842508666, 643.576323635, 
                 639.649884944, 420.788373053, 506.948276856, 503.484363746, 466.642585817, 
                 554.521681602, 578.44355769, 589.29487224, 636.837396631, 647.548662447, 
                 740.222655163, 391.545826142, 537.551842222, 908.940523615, 590.446686171, 
                 543.002925217, 1406.486794264, 1007.596435757, 617.098818856, 
                 633.848676718, 576.040175894, 881.49475483, 687.276105325, 628.977801859, 
                 1398.136047241, 749.644445942, 639.958039461, 649.265606673, 
                 645.57852203, 577.862446744, 663.218073256, 593.034544803, 672.096591437, 
                 544.776355324, 720.242877214, 824.963939263, 596.581822515, 885.215989867, 
                 693.456405627, 552.170633931, 618.855329732, 1030.291011295, 
                 615.889921256, 799.498196448, 570.398558528, 680.670975027, 563.404802085, 
                 494.790365745, 756.684436338, 523.051238729, 535.502475619, 520.8344231, 
                 623.971011973, 928.274580287, 639.702434094, 583.234364572, 623.144865566, 
                 673.342687695, 567.501447619, 602.473664361, 655.181508321, 593.662768316, 
                 617.830786992, 652.461315007, 496.505155747, 550.24687917, 588.952116381, 
                 456.603281447, 425.963966309, 454.729462342, 487.22846023, 613.269432488, 
                 474.916140657, 505.93051487, 536.401546008, 555.824475073, 509.429036303, 
                 632.232746263, 677.102831732, 506.605957979, 701.99882145, 499.770942819, 
                 555.599224002, 557.634152694, 448.693828549, 661.921921922, 447.00540349, 
                 561.194112634, 590.797954608, 590.739061378, 445.949400588, 725.589882976, 
                 480.650749378, 587.03144903, 483.054524693, 428.813155209, 540.609606719, 
                 495.756149832, 409.713220791, 492.43287131, 618.492643291, 723.203623076, 
                 461.433833742, 420.414959481, 480.501175081, 564.955582744, 453.0704893, 
                 506.711353939, 521.12661934, 487.509966405, 483.442305774, 506.932771141, 
                 442.871555249, 873.285819221, 1201.628963682, 1392.479592817, 
                 693.292446258, 629.477998542, 660.777526646, 414.376675251, 475.517946081, 
                 501.626384564, 470.216781646, 444.195433559, 697.258566625, 546.966755779, 
                 428.945521943, 388.203080434, 579.759476551, 548.433130604, 453.950530959, 
                 460.613845164, 534.329569431, 560.663080722, 660.799405665, 432.3134958, 
                 569.59842379, 518.195281689, 650.007266105, 521.642137647, 442.763872575, 
                 687.470213886, 951.651918891, 589.611971045, 493.203713291, 431.966577408, 
                 616.912296912, 685.80916291, 502.518373775, 595.630289879, 563.104035749, 
                 523.383707347, 532.042896625, 470.949823756, 603.408124923, 615.301428799, 
                 708.26541245, 725.853182875, 705.777543119, 530.351781147, 698.828825921, 
                 462.173187592, 366.411986505, 848.613888761, 502.940599188, 456.044881766, 
                 605.321231272, 629.861109863, 431.130428123, 509.672767868, 457.598828697, 
                 553.932034119, 610.181457495, 581.59017099, 540.788638119, 705.226962669, 
                 610.670142045, 566.392016015, 611.086310256, 603.256299175, 766.372982953, 
                 801.921868916, 761.708239486, 580.712445849, 575.53616943, 540.066255921, 
                 608.133122153, 735.063468208, 637.091441112, 778.874033589, 689.350099602, 
                 1003.219851026, 624.107808848, 635.887051641, 420.915060155, 
                 511.460563095, 817.08209288, 603.089908306, 772.6493477, 797.148459813, 
                 588.255963229, 499.050860875, 502.059987, 565.524637543, 1663.182976069, 
                 2281.49950544, 1442.687607103, 1024.355834401, 899.519857882, 
                 988.585993922, 612.834835776, 641.686600038, 717.951451466, 746.441686309, 
                 1147.770724052, 596.279691286, 932.861076555, 497.228997645, 
                 764.895725484, 659.054003787, 1148.227820587, 1403.462969143, 
                 624.733620842, 803.199038618, 839.637983048, 1278.286165347, 
                 774.363457936, 662.767213211, 627.251799204, 650.180035442, 1296.405174964, 
                 662.928010153, 523.095967567, 620.727894789, 650.876097695, 509.534317267, 
                 479.922326477, 613.743251306, 430.117763379, 1825.108688714, 
                 744.708270099, 455.818978039, 370.908485795, 771.317824437, 688.219350724, 
                 468.16351523, 791.649828808, 666.360829114, 1427.809117119, 2861.163543428, 
                 1090.887950582, 621.942045727, 397.381382335, 397.697308586, 
                 494.441558442, 474.314526966, 888.812606506, 476.031636688, 651.907747324, 
                 389.95997873, 680.776897408, 1499.093314237, 1077.571595752, 
                 765.690897368, 571.545469449, 590.64855754, 492.371592484, 580.811781306, 
                 873.628734717, 602.958435426, 549.877214337, 546.66120979, 394.75285753, 
                 520.238244635, 517.217468365, 903.057976974, 528.477241796, 378.958677302, 
                 491.589659729, 548.665964908, 453.512746452, 481.081050678, 491.499714029, 
                 628.539705456, 672.540312912, 1686.825394554, 1367.577856001, 
                 600.373039737, 417.511405109, 511.75535978, 440.677427555, 493.430816323, 
                 533.025975459, 547.429120615, 432.168874608, 555.098163047, 521.644301834, 
                 667.159371501, 421.591007887, 757.218378664, 615.572602597, 433.961482908, 
                 528.813953729, 633.228715271, 519.648748842, 437.342815473, 551.877832301, 
                 703.377801948, 536.673383258, 658.597165739, 1449.850501569, 
                 615.204142853, 499.197033946, 853.692014263, 490.213941347, 812.68824521, 
                 521.364349414, 818.757704456, 848.59674442, 646.819554339, 471.051626838, 
                 598.326620222, 782.58569568, 754.880939869, 636.572395084, 686.076138643, 
                 530.158582782, 524.696479569, 525.441231521, 593.834663615, 415.830854949, 
                 590.135594493, 591.019407595, 503.321975981, 515.371205208, 494.805384342, 
                 567.397190671, 482.180658052, 724.099533838, 791.107121538, 564.673191002, 
                 572.551388184, 729.46937136, 943.538757014, 519.051645932, 994.190842696, 
                 866.69659257, 610.021553913, 547.791568399, 578.854543644, 684.826681706, 
                 815.179238308, 617.050464226, 623.818649573, 537.163825262, 529.850027242, 
                 926.531531345, 588.578930644, 457.329084489, 380.160216157, 494.287689357, 
                 463.885244047, 451.611520014, 762.508948042, 773.74942889, 1642.691010358, 
                 555.226392541, 659.433830806, 454.348720108, 388.274823265, 650.63824747, 
                 632.327400443, 584.93699748, 484.815917524, 733.153950316, 471.349864174, 
                 418.755413722, 547.060192029, 742.028289483, 521.119798289, 1176.207996336, 
                 524.730544122, 430.009783422, 558.479383664, 574.162550914, 526.08247269, 
                 611.207728202, 551.202548069, 472.046973518, 517.490179087, 556.135143079, 
                 628.084374004, 413.677676623, 439.814082201, 1011.775306843, 
                 684.443831473, 546.421742134, 578.853727684, 517.693483714, 638.112468944, 
                 631.531739664, 501.897019514, 661.11860926, 521.695715961, 474.403897254, 
                 463.294645328, 559.583511974, 531.953658919, 740.412596176, 534.815607516, 
                 462.329096628, 637.941748843, 702.69170843, 471.390065606, 590.458408612, 
                 617.006573387, 565.411288964, 472.986933034, 567.745850996, 596.925622448, 
                 474.068038429, 653.56453828, 612.893376781, 711.545758298, 527.783301631, 
                 478.530081662, 519.751192408, 536.550807025, 443.437342694, 587.403769673, 
                 601.15805729, 556.497167238, 374.228230116, 477.027420471, 494.984999444, 
                 879.314339401, 704.997313272, 626.546803934, 653.296523326, 435.581408863, 
                 633.048339362, 403.889616794, 488.214190958, 575.631003993, 430.984422675, 
                 437.83561603, 522.277281965, 475.602597701, 527.12160277, 944.139469794, 
                 474.50403295, 579.478722386, 459.088134733, 503.246692031, 610.022771263, 
                 446.143895372, 625.022916127, 517.435543013, 891.375454252, 555.864115385, 
                 474.764739145, 921.714956231, 645.896256587, 1536.221634415, 
                 816.575921465, 596.491670621, 503.56011064, 720.743463226, 905.835642175, 
                 1360.481537034, 653.224092421, 633.505228314, 546.064475635, 
                 482.454025258, 962.715357696, 618.202090733, 803.895156435, 668.047995992, 
                 594.566585046, 839.597813143, 457.375793588, 631.863607862, 475.266615122, 
                 664.569635822, 481.886574644, 1614.962054217, 869.212340286, 
                 501.400781534, 478.670649186, 521.824073342, 684.720851031, 597.124676952, 
                 605.903108456, 491.358096619, 430.812042311, 388.350092055, 488.132638097, 
                 413.131448595, 391.891460495, 430.760685279, 731.99097305, 382.200799877, 
                 511.48361093, 560.620999712, 528.369543055, 536.348770159, 721.297750609, 
                 491.321646454, 509.521489714, 561.318889907, 553.24041301, 459.235996646, 
                 354.741174128, 339.775552834, 432.548724483, 438.672630955, 508.177204773, 
                 496.199702536, 643.867549669, 611.460979278, 861.190516859, 662.56052508, 
                 524.398593443, 529.585928069, 607.575374022, 495.001029442, 700.371352785, 
                 794.753142167, 466.792229932, 435.426320832, 450.903747896, 622.562955777, 
                 1562.215153595, 725.069249874, 612.357398912, 418.579228487, 
                 381.667629501, 528.173266471, 687.876352966, 655.845568131, 423.589678964, 
                 612.545707971, 951.362478322, 1800.162370822, 600.672989388, 
                 531.048286916, 527.565406977, 402.380659606, 607.699770367, 1486.296473731, 
                 686.560841226, 4176.136413427, 3086.067140966, 1872.815975088, 
                 771.413460362, 843.791946967, 652.825527602, 642.443948966, 726.208291336, 
                 641.092848676, 488.237988698, 606.154989706, 1426.027951807, 
                 959.347533388, 649.856202928, 527.580884911, 400.545393834, 568.268813107, 
                 631.257023117, 515.755741256, 682.375587555, 583.855170876, 506.146152757, 
                 517.095094378, 563.415777949, 801.015579658, 649.56360904, 732.097267107, 
                 456.626323752, 499.170138889, 549.393587002, 556.589070013, 590.180621262, 
                 667.709332802, 421.738377899, 661.178862228, 570.833727593, 631.139001868, 
                 545.835879493, 559.918523671, 1364.379214546, 985.777069008, 
                 644.949427255, 493.066294248, 476.852498787, 379.716401582, 715.333935018, 
                 459.326945313, 621.665546323, 476.317803131, 519.803138696, 409.241665463, 
                 465.206511176, 594.689036224, 443.841857849, 399.830019307, 570.65982956, 
                 516.562325113, 381.909941529, 532.130831616, 650.329631588, 661.055942562, 
                 1136.942413908, 508.543555485, 976.852889691, 1461.16921717, 
                 646.062436059, 593.093537367, 624.839875084, 453.453385269, 584.633165187, 
                 507.616009915, 516.857276979, 434.651983821, 572.755844368, 454.901132196, 
                 707.698546138, 760.341584614, 449.252091224, 623.217222998, 625.061550699, 
                 2030.045687713, 1582.036383383, 677.325281969, 571.588930686, 
                 493.235172445, 556.291968991, 424.360693057, 436.333980583, 484.105667103, 
                 505.231040152, 378.767240615, 495.943549377, 321.856525703, 363.651848067, 
                 557.201599565, 603.658298878, 558.958198405, 789.717963533, 480.370977054, 
                 509.366153138, 467.526623793, 576.508422894, 661.322171003, 520.804998847, 
                 342.109381368, 473.512224982, 984.139466992, 487.586712759, 605.914245454, 
                 459.190981983, 678.728907858, 342.511103348, 436.746013478, 520.896987467, 
                 818.078350515, 527.494249096, 713.52499017, 610.365469264, 462.965548015, 
                 362.931986459, 810.610193032, 393.455578799, 536.720944152, 551.490260933, 
                 464.369987186, 275.832746918, 513.723009815, 491.945195301, 438.865839297, 
                 257.252871794, 615.513481211, 420.507536576, 392.035094971, 392.963333027, 
                 435.276624468, 253.431425091, 592.873595776, 500.615067792, 503.491101855, 
                 475.352827724, 1135.11762886, 723.666909467, 712.259187274, 559.738346197, 
                 490.958692763, 435.998397207, 729.341315271, 406.369683231, 632.626098862, 
                 565.318329487, 394.031553179, 356.627786519, 374.075606064, 336.505546227, 
                 393.168901965, 480.183256037, 573.840777708, 187.680483645, 170.978544639, 
                 209.134883957, 193.039610198, 224.362544607, 210.946012575, 166.006351727, 
                 201.500604051, 160.008039339, 229.847327915, 193.655724693, 255.575881835, 
                 207.0547762, 186.835573846, 247.776981217, 574.489201771, 602.683083111, 
                 202.592131296, 205.827635803, 279.139480224, 367.898232724, 245.75114848, 
                 304.004111775, 231.706217872, 159.750034155, 207.584399879, 239.854118732, 
                 212.711257914, 181.755353255, 225.98761652, 206.570825973, 193.940523176, 
                 203.851963746, 170.700301226, 226.41517367, 183.87542452, 206.640800387, 
                 218.953856594, 176.127748987, 168.205878516, 201.718224491, 171.421791143, 
                 193.065350731, 235.118975292, 217.002358158, 197.563916607, 219.266588546, 
                 168.044251777, 182.1752633, 172.514392523, 192.250197416, 171.023249603, 
                 151.848998035, 151.678097242, 173.28609604, 194.852548067, 178.742929426, 
                 180.591580951, 189.241987711, 206.960325123, 207.639468123, 307.389246296, 
                 197.203559504, 201.143394951, 313.861245405, 215.87226561, 218.500147257, 
                 201.993836847, 204.461813487, 180.04803872, 305.301279156, 214.880173012, 
                 250.930811019, 284.90370816, 212.518096229, 195.034955147, 190.236951118, 
                 257.088555132, 189.502428671, 239.652450054, 243.53269907, 289.820554649, 
                 249.011846483, 279.393483142, 194.006529415, 214.59905786, 247.746491522, 
                 224.723467084, 191.086994265, 271.654470268, 183.455652269, 327.307813653, 
                 149.721791725, 170.538132352, 192.954323882, 172.459631548, 199.829129152, 
                 163.257916856, 179.33550074, 207.618752518, 191.969484656, 191.506188821, 
                 176.446694609, 194.818608621, 167.891653012, 167.000377869, 201.869893803, 
                 183.895614224, 148.510174938, 157.27033831, 166.573696008, 309.557485177, 
                 595.559287832, 232.318746483, 188.295593138, 157.721093739, 177.753625321, 
                 214.844940799, 226.812056373, 213.910815993, 188.973729833, 243.306529363, 
                 202.733401293, 197.296870477, 182.523989567, 170.428625204, 172.593507241, 
                 151.926342178, 283.415923815, 163.456408737, 172.273699114, 159.382452668, 
                 182.158974043, 156.532047405, 182.768725504, 239.318216814, 151.579013694, 
                 148.216885776, 241.346766195, 257.110058666, 147.931152011, 186.2508302, 
                 197.379372605, 155.69798218, 147.370235658, 180.961415272, 168.372900875, 
                 297.9454882, 177.640856836, 170.535749604, 166.211309731, 178.463064513, 
                 175.035906056, 179.971897406, 162.858094293, 164.056675362, 250.151933362, 
                 195.49943188, 175.281720263, 182.392087534, 144.341091392, 241.466298465, 
                 184.806150673, 167.932448156, 150.621075732, 178.510315062, 209.913152992, 
                 222.798716921, 153.536476868, 190.326281004, 173.708412622, 148.075945402, 
                 149.147879365, 181.5851776, 141.012604897, 157.982751461, 159.364653673, 
                 151.777006477, 191.065323099, 139.076429662, 172.452344359, 182.482693518, 
                 287.424045314, 169.327943406, 298.970852166, 145.238645275, 175.211717467, 
                 165.116950464, 187.006564993, 160.959119092, 198.552333833, 170.406040157, 
                 162.10770001, 146.356131036, 170.336552623, 163.095730104, 155.192077125, 
                 217.182324478, 231.270198833, 256.905250226, 184.59676245, 175.557146633, 
                 164.246298131, 221.695058452, 197.911691457, 188.427830442, 259.361745153, 
                 164.243672823, 190.67188784, 182.331604811, 190.352555581, 248.738493256, 
                 196.854564795, 164.974185334, 332.650385373, 169.081552611, 193.578840033, 
                 192.166911863, 214.174943222, 271.287900593, 224.675083031, 171.950208574, 
                 173.867031268, 139.260432794, 177.012491325, 171.268066406, 132.714578168, 
                 197.224558817, 152.561299656, 143.415562042), .Tsp = c(2016.3306010929, 
                                                                        2018.99909424358, 365), class = "ts")

Processus jusqu'à maintenant

Maintenant, j'avais compris que pour la question 1, je peux appliquer un test de rupture structurelle pour déterminer si et quand la rupture s'est produite (avec une date de rupture connue). Pour cela, j'utilise le package strucchange dans R et j'utilise la fonction points d'arrêt .

Cependant, le test CUSUM (pour la date de rupture inconnue ) a également été recommandé par mon superviseur. Vous ne savez pas ce qui est le mieux ici?

ÉDITER:

Je vois que le test supF d'Andrew effectue le test de Chow pour toutes les ruptures possibles. Rejette ensuite si le maximum des statistiques F (ou Chow) devient trop grand. (Trouvé - effectuer un test de chow sur des séries chronologiques )

Code pour obtenir une date de pause à l'aide de struccchange

library(strucchange)
test2 <- Fstats(myts1~1) #Gets a sequence of fstatistics for all possible 
# break points within the middle 70% of myts1
myts1.fs <- test2$Fstats #These are the fstats
bp.myts1 <- breakpoints(myts1~1) #Gets the breakpoint based on the F-stats
plot(myts1) #plots the series myts1
lines(bp.myts1) #plots the break date implied by the sup F test
bd.myts1 <- breakdates(bp.myts1) #Obtains the implied break data (2018.35, 
# referring to day 128 (0.35*365 = day number))
sctest(test2) #Obtains a p-value for the implied breakpoint
ci.myts1 <- confint(bp.myts1) #95% CI for the location break date
plot(myts1)
lines(ci.myts1) #This shows the interval around the estimated break date

En utilisant cela, je peux obtenir une date de pause et un IC à 95% , ce qui m'indique qu'une pause s'est produite. Cependant, cette rupture est dans la moyenne puisque la formule est myts1 ~ 1, reflétant une régression sur une constante. Si je comprends bien, les résidus sont les valeurs dégradées de myts1 et donc je regarde un changement dans la moyenne. L'intrigue visualise les données avec le breakdate et un intervalle de confiance.

terrain

Des questions

Q0: Avant de commencer cette analyse, je me demandais si je devrais être préoccupé par la façon dont ces erreurs de prédiction sont réparties et corrigées pour certaines caractéristiques? Cela semble un processus plutôt stable, mis à part la rupture qui se produit et certaines valeurs aberrantes.

Q1: Comment puis-je calculer un changement de variance ? Je peux imaginer qu'un changement de variance pourrait également se produire à un moment différent de la moyenne? Est-il exact de dire qu'une cassure de la variance est aussi une cassure de la moyenne, mais alors une cassure de la moyenne des séries dégradées au carré? Pas grand chose à trouver à ce sujet.

Q2: Étant donné que j'ai maintenant obtenu des preuves suffisantes d'une rupture de la moyenne et de la variance, comment puis-je quantifier ce changement? Par exemple, la variance est passée de X à Y après la date de rupture? Est-ce aussi simple que de diviser la série chronologique le long de la date de pause et de résumer les statistiques sur les deux parties?

Q3: Si je relance l'analyse des ruptures pour d'autres intervalles de temps, comment puis-je comparer la façon dont le changement de moyenne et de variance évolue pour les différents horizons de prédiction. S'agit-il encore une fois d'un simple résumé des statistiques ou existe-t-il un test qui évalue la différence des erreurs?

ajout Q3: ##

Lors de la création de ces séries chronologiques, les erreurs de prédiction jusqu'à 10 heures avant que l'événement prévu se produise sont prises en compte.

Prenons un jour comme exemple: les prédictions sont séparées en bacs d'une heure (crée 10 bacs), puis dans chaque bac, toutes les prédictions sont résumées en une valeur moyenne pondérée (pondérée en fonction d'une variable différente). Cela signifie que pour chaque jour, il y a un score pondéré par bac (10 au total).

La traduction de cet objet en série chronologique que j'ai fournie dans cet article (myts1, couvrant la dernière heure) donne les résultats suivants: Une série chronologique dans laquelle chaque point correspond à la valeur moyenne pondérée pour ce jour dans l'intervalle de temps donné. Essentiellement, chaque bac contient 975 jours distincts avec une valeur pondérée moyenne pour chacun (purement historique).

Mes réflexions sur cette partie: j'ai ajouté une image contenant 9 bacs sur 10, ce qui montre clairement que la rupture devient moins perceptible dans le temps. Compte tenu de ces 10 séries chronologiques, j'ai relancé le test «Score-CUSUM» (moyenne / variance) pour chacun. A partir de là, on peut déterminer à quelle heure l'effet de ce système devient "perceptible" (comme dans le changement absolu de moyenne / variance) et utilisable d'un point de vue opérationnel.

entrez la description de l'image ici

Q3.1 Est-il judicieux d'analyser les séries chronologiques de cette manière? Je suppose que cela n'a pas d'importance que je réexécute le test SCORE-CUSUM 10 fois?
Q3.1 Comment gérer un IC à 95% qui s'étale sur 6 mois lors de la segmentation de la pause? (trouvé dans les bacs à 4
heures ) Q3.2 Dois-je m'inquiéter de comparer les différents modèles (erreurs) sur ces 10 intervalles de temps?

J'espère que mon explication suffisante, pourra fournir plus d'informations si nécessaire.

EDIT: J'ai ajouté un fichier csv (séparé par;) au format en colonnes, cela inclut également le nombre d'événements qui se sont produits chaque jour, cependant, il ne semble pas y avoir de corrélation lors du tracé. Lien: https://www.dropbox.com/s/5pilmn43bps9ss4/Data.csv?dl=0

EDIT2: Devrait ajouter que la mise en œuvre réelle s'est produite autour du timepoint 2018 jour 136 dans la série temporelle.

EDIT3: Ajout du deuxième intervalle de prédiction de l'heure 1 à 2 en tant qu'objet TS dans R sur pastebin: https://pastebin.com/50sb4RtP (limitations en caractères du message principal)

Bas
la source
Peut-être examiner les modèles de garch qui sont utilisés (ou c'est ce qu'on me dit) en finance pour modéliser (et prédire) la variance dynamique? Recherchez sur ce site, cela vaut la peine d'essayer!
kjetil b halvorsen
Une rupture structurelle dans les séries chronologiques peut se produire de plusieurs façons. moments dans lesquels la variance d'erreur change de façon déterministe 5. il peut y avoir un jour de la semaine, un jour du mois, une semaine du mois, un mois de l'année, des effets autour des jours fériés etc qui peuvent avoir besoin d'être contrôlés. Les tests simples de chow pour un décalage moyen sont assez naïfs. si vous publiez vos données en colonnes sous forme de fichier csv, je pourrais peut-être aider à furt
IrishStat
@kjetilbhalvorsen J'ai vu ces modèles être suggérés dans les milieux financiers, cependant, je n'ai pas été convaincu après une lecture et une discussion avec mon superviseur académique à ce sujet. Merci pour la suggestion!
Bas
@IrishStat Je me demandais s'il y avait aussi des effets saisonniers (j'examinerai cela aujourd'hui et ajouterai plus d'informations lorsque je le trouverai). Ajout d'un lien vers un fichier csv en utilisant dropbox dans le post principal.
Bas

Réponses:

11

Des questions

Q0: La série chronologique semble plutôt asymétrique et le changement de niveau s'accompagne d'un changement d'échelle. Par conséquent, j'analyserais les séries chronologiques en journaux plutôt qu'en niveaux, c'est-à-dire avec des erreurs multiplicatives plutôt qu'additives. Dans les journaux, il semble qu'un modèle AR (1) fonctionne assez bien dans chaque segment. Voir par exemple acf()et pacf()avant et après la pause.

pacf(log(window(myts1, end = c(2018, 136))))
pacf(log(window(myts1, start = c(2018, 137))))

Q1: Pour une série chronologique sans interruption de la moyenne, vous pouvez simplement utiliser les résidus au carré (ou absolus) et exécuter à nouveau un test pour les changements de niveau. Alternativement, vous pouvez exécuter des tests et une estimation du point d'arrêt sur la base d'un modèle de probabilité maximale où la variance d'erreur est un autre paramètre du modèle en plus des coefficients de régression. Il s'agit de Zeileis et al. (2010, doi: 10.1016 / j.csda.2009.12.005 ). Les tests CUSUM basés sur les scores correspondants sont également disponibles dans strucchange, mais l'estimation du point d'arrêt est disponible fxregime. Enfin, en l'absence de régresseurs lorsque l'on recherche uniquement les changements de moyenne et de variance, le changepointpackage R propose également des fonctions dédiées.

Cela dit, il semble qu'une approche des moindres carrés (traitant la variance comme un paramètre de nuisance) soit suffisante pour la série chronologique que vous avez publiée. Voir ci-dessous.

Q2: Oui. Je voudrais simplement adapter des modèles distincts à chaque segment et analyser ces «comme d'habitude» Bai & Perron (2003, Journal of Applied Econometrics ) soutiennent également que cela se justifie asymptotiquement en raison de la convergence plus rapide des estimations de point de rupture (avec le tauxn plutôt que n).

Q3: Je ne sais pas exactement ce que vous recherchez ici. Si vous souhaitez exécuter les tests de manière séquentielle pour surveiller les données entrantes, vous devez adopter une approche de surveillance formelle. Ceci est également discuté dans Zeileis et al. (2010).

Extraits de code d'analyse:

Combinez la série de journaux avec ses décalages pour une régression ultérieure.

d <- ts.intersect(y = log(myts1), y1 = lag(log(myts1), -1))

Tests avec supF et tests CUSUM basés sur les scores:

fs <- Fstats(y ~ y1, data = d)
plot(fs)
lines(breakpoints(fs))

Fstats

sc <- efp(y ~ y1, data = d, type = "Score-CUSUM")
plot(sc, functional = NULL)

gefp

Cela met en évidence que les coefficients d'interception et d'autocorrélation changent de manière significative au point temporel visible dans la série chronologique d'origine. Il existe également une certaine fluctuation de la variance, mais celle-ci n'est pas significative au niveau de 5%.

Une datation basée sur BIC trouve également clairement ce seul point d'arrêt:

bp <- breakpoints(y ~ y1, data = d)
coef(bp)
##                       (Intercept)        y1
## 2016(123) - 2018(136)    3.926381 0.3858473
## 2018(137) - 2019(1)      3.778685 0.2845176

En clair, la moyenne baisse mais aussi légèrement l'autocorrélation. Le modèle ajusté dans les journaux est alors:

plot(log(myts1), col = "lightgray", lwd = 2)
lines(fitted(bp))
lines(confint(bp))

points d'arrêt

Le réajustement du modèle à chaque segment peut alors être effectué via:

summary(lm(y ~ y1, data = window(d, end = c(2018, 136))))
## Call:
## lm(formula = y ~ y1, data = window(d, end = c(2018, 136)))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.73569 -0.18457 -0.04354  0.12042  1.89052 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.92638    0.21656   18.13   <2e-16 ***
## y1           0.38585    0.03383   11.40   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2999 on 742 degrees of freedom
## Multiple R-squared:  0.1491, Adjusted R-squared:  0.148 
## F-statistic: 130.1 on 1 and 742 DF,  p-value: < 2.2e-16

 

summary(lm(y ~ y1, data = window(d, start = c(2018, 137))))
## Call:
## lm(formula = y ~ y1, data = window(d, start = c(2018, 137)))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.43663 -0.13953 -0.03408  0.09028  0.99777 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.61558    0.33468   10.80  < 2e-16 ***
## y1           0.31567    0.06327    4.99  1.2e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2195 on 227 degrees of freedom
## Multiple R-squared:  0.09883,    Adjusted R-squared:  0.09486 
## F-statistic:  24.9 on 1 and 227 DF,  p-value: 1.204e-06
Achim Zeileis
la source
Merci pour votre réponse détaillée. Q1: Je comprends qu'en utilisant les résidus au carré, l'exécution du test détecte à nouveau une cassure de la variance, mais uniquement sans cassure de la moyenne. On m'a conseillé vers un article qui se penche sur ce problème en cas de rupture de la moyenne. Le document propose un test spécial, mais mes connaissances dans l'évaluation du contenu ne sont pas suffisantes: tandfonline.com/doi/abs/10.1198/073500103288619269 (section 3.1). CUSUM basé sur les scores comme vous l'aviez indiqué. Q3: ajout d'éclaircissements dans le post principal
Bas
1
Mon impression concernant le premier trimestre est que la plupart des tests trouveront des preuves claires d'une rupture. Et compte tenu de la rupture, vous pouvez ensuite caractériser les segments résultants concernant leur moyenne, variance, autocorrélation, etc. Re: Q3. Cela ressemble en effet à une procédure de «surveillance» ou de «test séquentiel» pour laquelle divers outils ont été proposés sous différentes étiquettes dans différentes communautés. Le contrôle statistique des processus ou le contrôle de la qualité pourrait être un autre label pertinent.
Achim Zeileis
RE Q3: Cela a du sens et est également souligné dans Zeileis et al. (2010). Je vais jeter un oeil et voir comment je peux appliquer cela, merci.
Bas
re Q3: J'ai peut-être créé une certaine confusion avec ma modification concernant les données elles-mêmes. J'avais mentionné que ces erreurs agrégées sont pour un intervalle de temps donné, à juste titre, vous avez suggéré un test séquentiel pour surveiller les données entrantes lorsqu'elles deviennent disponibles (lecture de Strucchange vignette et Zeileis et al. (2010)). J'ai mis à jour Q3 dans le post principal, qui maintenant (à ma connaissance) ne fonctionne pas avec un test séquentiel.
Bas
3

Ne voulant pas ajouter trop d'informations dans le message d'origine, la réponse ici est en réponse à @Achim Zeleis suivant cette partie:

"Les tests CUSUM basés sur les scores correspondants sont également disponibles strucchangemais l'estimation du point d'arrêt est en fxregime"

Et la question 3, qui était mal formulée (maintenant mise à jour dans le message d'origine):

"Re: Q3. Cela ressemble en effet à une procédure de" surveillance "ou de" test séquentiel "pour laquelle divers outils ont été proposés sous différentes étiquettes dans différentes communautés. Le contrôle statistique des processus ou le contrôle de la qualité pourraient être une autre étiquette pertinente."

Après avoir lu la vignette de fxregimeet strucchangeune estimation de breakdate est obtenue.
https://cran.r-project.org/web/packages/fxregime/vignettes/CNY.pdf
https://cran.r-project.org/web/packages/fxregime/fxregime.pdf

Les questions associées à cette partie sont les suivantes:
1. Comment traduire l'estimation d'une date de rupture trouvée par fxregime à la fois aux changements d'interception et d'autocorrélation?
2. La logique / méthode que j'ai utilisée pour obtenir cette estimation de rupture est-elle fxregimecorrecte?
3. Dois-je même m'attendre à deux dates de pause, ou les deux changements d'interception et de corrélation automatique se produisent-ils à la même date? (par exemple, si la variance change à une date de pause différente, est-ce que j'obtiens alors deux ou trois dates de pause différentes?
4. La question 3 du message d'origine s'applique (mise à jour)
5. Dois-je m'inquiéter des effets saisonniers comme suggéré par @Irish Stat (réponse supprimée)? Je suppose que lorsque je veux modéliser cela par la suite, et non pendant les tests de rupture?

Extraits de code d'analyse pour myts1:

Combinez la série de journaux avec ses décalages pour une régression ultérieure.
d <- ts.intersect(y = log(myts1), y1 = lag(log(myts1), -1))

Faire le même test "Score-CUSUM":

sc <- efp(y ~ y1, data = d, type = "Score-CUSUM")
plot(sc, functional = NULL)

Test CUSUM basé sur les scores pour sc

Estimation de la date de rupture à l'aide de fxregime:
1. LWZ et le diagramme de log-vraisemblance négatif montre le nombre optimal de ruptures de 1
2. La date de rupture avec un intervalle de confiance indique une rupture à l'observation 744

bd <- fxregimes(y~y1, data = d)
plot(bd) #LWZ and Negative Log-Likelihood plot indicating optimal number of breakpoints is 1 (following vignette information)
ci <- confint(bd, level = 0.95)
ci #show confidence interval for break date(s)

##         Confidence intervals for breakpoints
##         of optimal 2-segment partition: 
##
## Call:
## confint.fxregimes(object = bd, level = 0.95)
##
## Breakpoints at observation number:
##  2.5 % breakpoints 97.5 %
## 1   742         744    746
##
## Corresponding to breakdates:
##     2.5 % breakpoints   97.5 %
## 1 2018.363    2018.369 2018.374

LWZ et log-vraisemblance négative bd

Ensuite, coefje peux obtenir les coefficients de chaque segment.

coef(bd)
## 
##                                       (Intercept) y1     (Variance)
## 2016.33334081892--2018.36895725728    3.926381 0.3858473 0.08969063
## 2018.37169698331--2018.99909424358    3.778685 0.2845176 0.04813337

À partir de là, je dirais que la variance a également baissé un peu, mais vous ne savez pas comment l'interpréter correctement compte tenu d'une estimation de la date de rupture unique et de la non-signification dans le test Score-CUSUM?

Partie 2, liée à la question 3 du PO

Maintenant, comme mentionné au troisième trimestre de la publication d'origine (mise à jour), il existe plusieurs séries chronologiques, celle ci-dessous est pour la prédiction de l'intervalle de 1 à 2 heures pour 975 jours consécutifs, chaque jour ayant un score moyen pondéré.

Extraits de code d'analyse pour myts2:
Concernant Q0: réévaluation de la série chronologique. Se référant à la seconde image dans le message original, le désaxée vers la droite est encore un peu apparent et regardant le acf()et pacf()avant et après la pause indique encore qu'une AR (1) modèle fonctionnerait très bien (je pense, des graphiques similaires).

pacf(log(window(myts2, end = c(2018, 136))))
pacf(log(window(myts2, start = c(2018, 137))))

Combinez à nouveau la série logarithmique avec ses décalages pour une régression ultérieure.
e <- ts.intersect(y = log(myts2), y1 = lag(log(myts2), -1))

Test "Score-CUSUM":

sc2 <- efp(y ~ y1, data = e, type = "Score-CUSUM")
plot(sc2, functional = NULL)

Test CUSUM basé sur les scores pour sc2 Comme pour la première série chronologique, le coefficient d'interception et de corrélation automatique change considérablement au point temporel visible dans la série chronologique d'origine. Cependant, cette fois, il y a aussi une fluctuation visible dans la variance qui est significative au niveau de 5%, ne correspondant pas directement au point temporel d'interception et d'auto-corrélation.

Estimation de la date de rupture à l'aide de fxregime:
1. Le graphique LWZ et le diagramme de vraisemblance négative montre le nombre optimal de ruptures de 1 en raison de la forte baisse de LWZ et du pli dans NLL après le point de rupture 1.
2. La date de pause avec un intervalle de confiance indique une pause à l'observation 736

d <- fxregimes(y~y1, data = d)
plot(bd) #LWZ and Negative Log-Likelihood plot indicating optimal number of breakpoints is 1 (following vignette information)
ci <- confint(bd, level = 0.95)
ci #show confidence interval for break date(s)
# Confidence intervals for breakpoints  

# of optimal 2-segment partition: 
#   
#   Call:
#   confint.fxregimes(object = bd1, level = 0.95)
# 
# Breakpoints at observation number:
#   2.5 % breakpoints 97.5 %
#   1   730         736    750
# 
# Corresponding to breakdates:
#   2.5 % breakpoints   97.5 %
#   1 2018.331    2018.347 2018.385
# > breakdates(ci)
# 2.5 % breakpoints   97.5 %
#   1 2018.331    2018.347 2018.385

LWZ et log-vraisemblance négative bd1
Ensuite, coefje peux obtenir les coefficients de chaque segment.

coef(bd1)
#                                       (Intercept) y1     (Variance)
# 2016.33334081892--2018.34703944906    3.853897 0.3985997 0.07925990
# 2018.34977917509--2018.99909424358    3.106076 0.4773263 0.04625951

Pour évaluer cette partie pour myts2 (intervalle de prédiction de 1 à 2 heures), la variance a beaucoup diminué, mais le changement est moindre par rapport à myts1. De plus, il y a un changement perceptible dans les coefficients de l'ordonnée à l'origine et de l'autocorrélation.

Ici aussi, la question est de savoir comment cela doit être interprété? Comment cette estimation de date de rupture unique reflète-t-elle les ruptures visibles visuellement dans le test Score-CUSUM?

* a également vu que la refitfonction s'adaptera aux régressions segmentées de la fonction fxregimes, qui peuvent être utilisées pour comparer comme mentionné précédemment par @Achim Zeileis.
Est-il alors possible de comparer les modèles (Q3) à travers les séries temporelles (myts1-10)? Je suppose que lorsqu'ils partagent la même échelle car on ne peut pas comparer un modèle qui a un log vs un qui n'en a pas.

Bas
la source