Ek het 'n verskeidenheid van datums en 'n meting op elk van dié datums. ID graag 'n eksponensiële bewegende gemiddelde te bereken vir elk van die datums. Het enige iemand weet hoe om nuwe te doen hierdie Im om luislang. Dit nie die geval blyk dat gemiddeldes is gebou in die standaard Python biblioteek, wat lyk my as 'n bietjie vreemd. Miskien Im nie op soek in die regte plek. So, gegewe die volgende kode, hoe kon ek bereken die bewegende geweegde gemiddelde van IK-punte vir kalender datums (Theres waarskynlik 'n beter manier om die datastruktuur, enige raad sal waardeer word) vra 28 Januarie 09 by 18:01 My luislang is 'n bietjie verroes (enigiemand kan vry om hierdie kode korreksies aan te bring, indien Ive opgemors die sintaksis een of ander manier te wysig voel), maar hier gaan. Hierdie funksie beweeg agtertoe, van die einde van die lys van die begin af, die berekening van die eksponensiële bewegende gemiddelde vir elke waarde deur agteruit te werk totdat die gewig koëffisiënt vir 'n element minder as die gegewe Epsilon is. Aan die einde van die funksie, dit keer die waardes voordat hy terugkeer die lys (sodat hulle is in die korrekte volgorde vir die oproeper). (Kant nota: As ek met behulp van 'n ander as Python taal, Id skep 'n volle grootte leë reeks eerste en dan vul dit agtertoe-orde, sodat ek wouldnt het om dit te keer aan die einde, maar ek dont dink jy kan verklaar. 'n groot leë reeks in python. En in Python lyste, aanbring is baie goedkoper as prepending, wat is die rede waarom ek die lys in omgekeerde volgorde gebou. korrigeer my as Im verkeerd.) die Alpha argument is die verval faktor op elke iterasie. Byvoorbeeld, as jy 'n alfa van 0,5 gebruik, dan vandag se bewegende gemiddelde waarde sal bestaan uit die volgende geweegde waardes: Natuurlik, as jy het 'n groot verskeidenheid van waardes, die waardes van tien of vyftien dae gelede gewoond bydra baie om vandag se geweegde gemiddelde. Die epsilon argument kan jy 'n afgesnyde punt, onder wie jy sal ophou om te bekommer oor ou waardes (sedert hul bydrae tot vandag waarde gering sal wees) stel. Youd roep die funksie iets soos hierdie: geantwoord 28 Januarie 09 by 18:46 Ek dont weet Python, maar vir die gemiddelde deel, bedoel jy 'n eksponensieel verrottende laaglaatfilter van die vorm waar alfa dt / TLU, dt die tyd stap van die filter, TLU die tydkonstante van die filter (die veranderlike-tyd stap vorm van hierdie is soos volg, net clip dt / TLU om nie meer as 1.0) as jy iets soos 'n datum filter, maak seker dat jy om te skakel na 'n swaai-punt hoeveelheid soos sekondes sedert 1 Januarie 1970.Smoothing data verwyder ewekansige variasie en programme tendense en sikliese komponente Inherent in die versameling van data geneem met verloop van tyd is 'n vorm van ewekansige variasie. Daar bestaan metodes vir die vermindering van van die kansellasie van die effek as gevolg van ewekansige variasie. 'N dikwels gebruikte tegniek in bedryf is glad. Hierdie tegniek, wanneer dit behoorlik toegepas word, blyk duidelik die onderliggende tendens, seisoenale en sikliese komponente. Daar is twee afsonderlike groepe glad metodes Berekening van gemiddelde metodes Eksponensiële Smoothing Metodes Neem gemiddeldes is die eenvoudigste manier om data te stryk Ons sal eers ondersoek sommige gemiddelde metodes, soos die eenvoudige gemiddeld van al die afgelope data. 'N Bestuurder van 'n pakhuis wil weet hoeveel 'n tipiese verskaffer lewer in 1000 dollar eenhede. Hy / sy neem 'n monster van 12 verskaffers, na willekeur, die verkryging van die volgende resultate: Die berekende gemiddelde of gemiddeld van die data 10. Die bestuurder besluit om dit te gebruik as die skatting vir uitgawes van 'n tipiese verskaffer. Is dit 'n goeie of slegte skat Gemiddelde kwadraat fout is 'n manier om te oordeel hoe goed 'n model is Ons sal bereken die gemiddelde kwadraat fout. Die fout ware bedrag wat minus die beraamde bedrag. Die fout vierkant is die fout hierbo, vierkantig. Die SSE is die som van die gekwadreerde foute. Die MSE is die gemiddeld van die kwadraat foute. MSE lei byvoorbeeld Die uitslae is: Fout en gekwadreerde foute Die raming 10 Die vraag ontstaan: kan ons gebruik maak van die gemiddelde inkomste voorspel as ons vermoed dat 'n tendens 'n blik op die grafiek hieronder toon duidelik dat ons nie dit sou doen. Gemiddeld weeg al verlede Waarnemings ewe In opsomming, ons verklaar dat die eenvoudige gemiddelde of gemiddeld van al verlede waarnemings is net 'n nuttige skatting vir vooruitskatting wanneer daar geen tendense. As daar tendense, gebruik verskillende skattings dat die tendens in ag neem. Die gemiddelde weeg al verlede Waarnemings ewe. Byvoorbeeld, die gemiddelde van die waardes 3, 4, 5 is 4. Ons weet natuurlik dat 'n gemiddelde word bereken deur die toevoeging van al die waardes en die som te deel deur die aantal waardes. Nog 'n manier van berekening van die gemiddelde is deur die byvoeging van elke waarde gedeel deur die aantal waardes, of 3/3 4/3 5/3 1 1,3333 1,6667 4. Die vermenigvuldiger 1/3 is die gewig genoem. In die algemeen: bar frac som links (frac regs) x1 links (frac regs) x2,. ,, Links (frac regs) xn. Die (links (frac regs)) is die gewigte en, natuurlik, hulle vat om 1.Smoothing met eksponensieel Geweegde Moving Gemiddeldes n bewegende gemiddelde neem 'n lawaaierige tydreekse en vervang elke waarde van die gemiddelde waarde van 'n woonbuurt oor die gegewe waarde . Dit buurt kan bestaan uit suiwer historiese data, of dit kan gesentreer oor die gegewe waarde. Verder kan die waardes in die buurt word geweeg met behulp van verskillende stelle gewigte. Hier is 'n voorbeeld van 'n ewe geweegde drie punt bewegende gemiddelde, met behulp van historiese data, hier, verteenwoordig die stryk sein, en verteenwoordig die lawaaierige tydreekse. In teenstelling met eenvoudige bewegende gemiddeldes, 'n eksponensieel geweeg bewegende gemiddelde (EWMA) pas 'n waarde volgens 'n eksponensieel geweeg som van alle vorige waardes. Dit is die basiese idee, dit is lekker, want jy don8217t hoef te bekommer oor 'n drie punt venster, teenoor 'n vyfpunt venster, of bekommerd wees oor die toepaslikheid van jou gewig skema. Met die EWMA, vorige storingen 8220remembered, 8221 en 8220slowly vergeet, 8221 deur die term in die laaste vergelyking, terwyl met 'n venster of buurt met diskrete grense, is 'n storing sodra dit verby die venster uit vergete. Gemiddeld die EWMA tendense akkommodeer Na die lees van sowat EWMAs in 'n data-analise boek, het ek gegaan saam gelukkig met behulp van hierdie instrument op elke enkele glad program wat ek oor gekom het. Dit was eers later dat ek geleer dat die EWMA funksie is eintlik net geskik is vir skryfbehoeftes data, dit wil sê data sonder tendense of seisoenaliteit. In die besonder, die EWMA funksie weerstaan tendense weg van die huidige gemiddelde wat reeds it8217s 8220seen8221. So, as jy 'n lawaaierige hoed funksie wat gaan van 0 tot 1, en dan weer terug na 0, dan is die EWMA funksie sal lae waardes op die up-heuwel kant, en 'n hoë waardes terug op die af-heuwel kant. Een manier om dit te omseil is om die sein te stryk in albei rigtings, marsjeer vorentoe, en dan marsjeer agtertoe, en dan Gemiddeld twee. Hier sal ons die EWMA funksie wat deur die pandas module gebruik. Holt-Winters tweede orde EWMA En hier is 'n paar Python-kode implementering van die Holt-Winters tweede orde metode op 'n ander lawaaierige hoed funksie, soos voorheen. Post navigasie Recent Posts ArchivesMoving gemiddelde en eksponensiële gladstryking modelle As 'n eerste stap in die beweging van buite gemiddelde modelle, ewekansige loop modelle, en lineêre tendens modelle, nonseasonal patrone en tendense kan geëkstrapoleer deur 'n bewegende-gemiddelde of glad model. Die basiese aanname agter gemiddelde en glad modelle is dat die tyd reeks is plaaslik stilstaande met 'n stadig wisselende gemiddelde. Vandaar, neem ons 'n bewegende (plaaslike) gemiddelde om die huidige waarde van die gemiddelde skat en dan gebruik dit as die voorspelling vir die nabye toekoms. Dit kan beskou word as 'n kompromie tussen die gemiddelde model en die ewekansige-stap-sonder-drif-model. Dieselfde strategie gebruik kan word om te skat en ekstrapoleer 'n plaaslike tendens. 'N bewegende gemiddelde is dikwels 'n quotsmoothedquot weergawe van die oorspronklike reeks, want kort termyn gemiddelde het die effek van gladstryking uit die knoppe in die oorspronklike reeks. Deur die aanpassing van die mate van gladstryking (die breedte van die bewegende gemiddelde), kan ons hoop om 'n soort van 'n optimale balans tussen die prestasie van die gemiddelde en die stogastiese wandeling modelle slaan. Die eenvoudigste soort gemiddelde model is die. Eenvoudige (ewe-geweeg) Moving Average: Die voorspelling vir die waarde van Y op tyd T1 wat gemaak word op tydstip t is gelyk aan die eenvoudige gemiddelde van die mees onlangse m waarnemings: (hier en elders sal ek die simbool 8220Y-hat8221 gebruik om op te staan vir 'n voorspelling van die tyd reeks Y gemaak op die vroegste moontlike voor datum deur 'n gegewe model.) Hierdie gemiddelde is gesentreer op tydperk t (M1) / 2, wat impliseer dat die skatting van die plaaslike gemiddelde sal neig om agter die werklike waarde van die plaaslike gemiddelde met sowat (M1) / 2 periodes. So, sê ons die gemiddelde ouderdom van die data in die eenvoudige bewegende gemiddelde is (M1) / 2 met betrekking tot die tydperk waarvoor die voorspelling is bereken: dit is die hoeveelheid tyd waarop voorspellings sal neig om agter draaipunte in die data. Byvoorbeeld, as jy gemiddeld die afgelope 5 waardes, sal die voorspellings wees oor 3 periodes laat in reaksie op draaipunte. Let daarop dat indien M1, die eenvoudige bewegende gemiddelde (SMA) model is soortgelyk aan die ewekansige loop model (sonder groei). As m is baie groot (vergelykbaar met die lengte van die skatting tydperk), die SMA model is gelykstaande aan die gemiddelde model. Soos met enige parameter van 'n voorspelling model, is dit gebruiklik om die waarde van k te pas ten einde die beste quotfitquot om die data, dit wil sê die kleinste voorspelling foute gemiddeld behaal. Hier is 'n voorbeeld van 'n reeks wat blykbaar ewekansige skommelinge toon om 'n stadig-wisselende gemiddelde. In die eerste plek kan probeer om dit aan te pas met 'n ewekansige loop model, wat gelykstaande is aan 'n eenvoudige bewegende gemiddelde van 1 kwartaal: Die ewekansige loop model reageer baie vinnig om veranderinge in die reeks, maar sodoende dit tel baie van die quotnoisequot in die data (die ewekansige skommelinge) asook die quotsignalquot (die plaaslike gemiddelde). As ons eerder probeer 'n eenvoudige bewegende gemiddelde van 5 terme, kry ons 'n gladder lyk stel voorspellings: Die 5 termyn eenvoudige bewegende gemiddelde opbrengste aansienlik kleiner foute as die ewekansige loop model in hierdie geval. Die gemiddelde ouderdom van die data in hierdie voorspelling is 3 ((51) / 2), sodat dit is geneig om agter draaipunte met sowat drie periodes. (Byvoorbeeld, blyk 'n afswaai het plaasgevind by tydperk 21, maar die voorspellings nie omdraai tot verskeie tydperke later.) Let daarop dat die langtermyn-voorspellings van die SMA model is 'n horisontale reguit lyn, net soos in die ewekansige loop model. So, die SMA model veronderstel dat daar geen neiging in die data. Maar, terwyl die voorspellings van die ewekansige loop model is eenvoudig gelyk aan die laaste waargenome waarde, die voorspellings van die SMA model is gelykstaande aan 'n geweegde gemiddelde van die afgelope waardes. Die vertroue perke bereken deur Stat Graphics vir die langtermyn-voorspellings van die eenvoudige bewegende gemiddelde nie groter as die vooruitskatting horison styg kry. Dit is natuurlik nie korrek Ongelukkig is daar geen onderliggende statistiese teorie wat ons vertel hoe die vertrouensintervalle behoort te brei vir hierdie model. Dit is egter nie te moeilik om empiriese ramings van die vertroue perke vir die langer-horison voorspellings te bereken. Byvoorbeeld, kan jy die opstel van 'n sigblad waarop die SMA model sal gebruik word om 2 stappe vooruit, 3 stappe vooruit, ens binne die historiese data monster voorspel. Jy kan dan bereken die monster standaardafwykings van die foute op elke voorspelling horison, en dan bou vertrouensintervalle vir langer termyn voorspellings deur optelling en aftrekking veelvoude van die toepaslike standaard afwyking. As ons probeer om 'n 9-termyn eenvoudige bewegende gemiddelde, kry ons selfs gladder voorspellings en meer van 'n sloerende uitwerking: Die gemiddelde ouderdom is nou 5 periodes ((91) / 2). As ons 'n 19-termyn bewegende gemiddelde te neem, die gemiddelde ouderdom toeneem tot 10: Let daarop dat, inderdaad, is die voorspellings nou agter draaipunte met sowat 10 periodes. Watter bedrag van smoothing is die beste vir hierdie reeks Hier is 'n tabel wat hulle dwaling statistieke vergelyk, ook met 'n 3-gemiddelde: Model C, die 5-termyn bewegende gemiddelde, lewer die laagste waarde van RMSE deur 'n klein marge oor die 3 - term en 9 termyn gemiddeldes, en hul ander statistieke is byna identies. So, onder modelle met 'n baie soortgelyke fout statistieke, kan ons kies of ons 'n bietjie meer responsiewe ingesteldheid of 'n bietjie meer gladheid in die voorspellings sou verkies. (Terug na bo.) Browns Eenvoudige Eksponensiële Smoothing (eksponensieel geweeg bewegende gemiddelde) Die eenvoudige bewegende gemiddelde model hierbo beskryf het die ongewenste eienskap dat dit behandel die laaste k Waarnemings ewe en heeltemal ignoreer al voorafgaande waarnemings. Intuïtief, moet afgelope data verdiskonteer in 'n meer geleidelike mode - byvoorbeeld, die mees onlangse waarneming moet 'n bietjie meer gewig kry as 2 mees onlangse, en die 2de mees onlangse moet 'n bietjie meer gewig as die 3 mees onlangse kry, en so aan. Die eenvoudige eksponensiële gladstryking (SES) model accomplishes hierdie. Laat 945 dui n quotsmoothing constantquot ( 'n getal tussen 0 en 1). Een manier om die model te skryf is om 'n reeks L dat die huidige vlak (dit wil sê die plaaslike gemiddelde waarde) van die reeks verteenwoordig as geraamde van data tot op hede te definieer. Die waarde van L op tydstip t is rekursief bereken uit sy eie vorige waarde soos volg: Dus, die huidige stryk waarde is 'n interpolasie tussen die vorige stryk waarde en die huidige waarneming, waar 945 kontroles die nabyheid van die geïnterpoleerde waarde tot die mees onlangse waarneming. Die voorspelling vir die volgende tydperk is eenvoudig die huidige stryk waarde: anders gestel ons kan die volgende voorspelling direk in terme van vorige voorspellings en vorige waarnemings uit te druk, in enige van die volgende ekwivalent weergawes. In die eerste weergawe, die voorspelling is 'n interpolasie tussen vorige skatting en vorige waarneming: In die tweede weergawe, is die volgende voorspelling verkry deur die aanpassing van die vorige skatting in die rigting van die vorige fout deur 'n breukdeel bedrag 945. is die fout gemaak by tyd t. In die derde weergawe, die voorspelling is 'n eksponensieel geweeg (dit wil sê afslag) bewegende gemiddelde met afslag faktor 1- 945: Die interpolasie weergawe van die voorspelling formule is die eenvoudigste om te gebruik as jy die uitvoering van die model op 'n spreadsheet: dit pas in 'n enkele sel en bevat selverwysings verwys na die vorige skatting, die vorige waarneming, en die sel waar die waarde van 945 gestoor. Let daarop dat indien 945 1, die SES model is gelykstaande aan 'n ewekansige loop model (sonder groei). As 945 0, die SES model is gelykstaande aan die gemiddelde model, met die veronderstelling dat die eerste stryk waarde gelyk aan die gemiddelde is ingestel. (Terug na bo.) Die gemiddelde ouderdom van die data in die eenvoudige eksponensiële-glad voorspelling is 1/945 relatief tot die tydperk waarvoor die voorspelling is bereken. (Dit is nie veronderstel duidelik te wees, maar dit kan maklik aangetoon deur die evaluering van 'n oneindige reeks.) Dus, die eenvoudige bewegende gemiddelde voorspelling is geneig om agter draaipunte met sowat 1/945 periodes. Byvoorbeeld, wanneer 945 0.5 die lag is 2 periodes wanneer 945 0.2 die lag is 5 periodes wanneer 945 0.1 die lag is 10 periodes, en so aan. Vir 'n gegewe gemiddelde ouderdom (bv bedrag van lag), die eenvoudige eksponensiële gladstryking (SES) voorspelling is 'n bietjie beter as die eenvoudige bewegende gemiddelde (SMA) voorspel, want dit plaas relatief meer gewig op die mees onlangse waarneming --i. e. dit is 'n bietjie meer quotresponsivequot om veranderinge voorkom in die onlangse verlede. Byvoorbeeld, 'n SMA model met 9 terme en 'n SES model met 945 0.2 beide het 'n gemiddelde ouderdom van 5 vir die data in hul voorspellings, maar die SES model plaas meer gewig op die laaste 3 waardes as wel die SMA model en by die Terselfdertyd is dit doesn8217t heeltemal 8220forget8221 oor waardes meer as 9 tydperke oud was, soos getoon in hierdie grafiek: nog 'n belangrike voordeel van die SES model die SMA model is dat die SES model maak gebruik van 'smoothing parameter wat voortdurend veranderlike, so dit kan maklik new deur die gebruik van 'n quotsolverquot algoritme om die gemiddelde minimum te beperk kwadraat fout. Die optimale waarde van 945 in die SES model vir hierdie reeks blyk te wees 0,2961, soos hier gewys word: die gemiddelde ouderdom van die data in hierdie voorspelling is 1 / 0,2961 3.4 tydperke, wat soortgelyk is aan dié van 'n 6-termyn eenvoudige bewegende gemiddelde. Die langtermyn-voorspellings van die SES model is 'n horisontale reguit lyn. soos in die SMA model en die ewekansige loop model sonder groei. Let egter daarop dat die vertrouensintervalle bereken deur Stat Graphics nou divergeer in 'n redelike aantreklike mode, en dat hulle aansienlik nouer as die vertrouensintervalle vir die ewekansige loop model. Die SES model veronderstel dat die reeks is 'n bietjie quotmore predictablequot as wel die ewekansige loop model. 'N SES model is eintlik 'n spesiale geval van 'n ARIMA model. sodat die statistiese teorie van ARIMA modelle bied 'n goeie basis vir die berekening van vertrouensintervalle vir die SES model. In die besonder, 'n SES model is 'n ARIMA model met een nonseasonal verskil, 'n MA (1) termyn, en geen konstante term. andersins bekend as 'n quotARIMA (0,1,1) model sonder constantquot. Die MA (1) koëffisiënt in die ARIMA model stem ooreen met die hoeveelheid 1- 945 in die SES model. Byvoorbeeld, as jy 'n ARIMA (0,1,1) model inpas sonder konstante om die reeks te ontleed hier, die beraamde MA (1) koëffisiënt blyk te wees 0,7029, wat byna presies 'n minus 0,2961. Dit is moontlik om die aanname van 'n nie-nul konstante lineêre tendens voeg by 'n SES model. Om dit te doen, net 'n ARIMA model met een nonseasonal verskil en 'n MA (1) termyn met 'n konstante, dit wil sê 'n ARIMA (0,1,1) model met 'n konstante spesifiseer. Die langtermyn-voorspellings sal dan 'n tendens wat gelyk is aan die gemiddelde tendens waargeneem oor die hele skatting tydperk is. Jy kan dit nie doen in samewerking met seisoenale aanpassing, omdat die aanpassing opsies seisoenale is afgeskakel wanneer die model tipe is ingestel op ARIMA. Jy kan egter 'n konstante langtermyn eksponensiële tendens om 'n eenvoudige eksponensiële gladstryking model voeg (met of sonder seisoenale aanpassing) deur gebruik te maak van die opsie inflasie-aanpassing in die vooruitskatting prosedure. Die toepaslike quotinflationquot (persentasie groei) koers per periode kan geskat word as die helling koëffisiënt in 'n lineêre tendens model toegerus om die data in samewerking met 'n natuurlike logaritme transformasie, of dit kan op grond van ander, onafhanklike inligting oor die langtermyn groeivooruitsigte . (Terug na bo.) Browns Lineêre (dws dubbel) Eksponensiële glad die SMA modelle en SES modelle aanvaar dat daar geen tendens van enige aard in die data (wat gewoonlik OK of ten minste nie-te-sleg vir 1- stap-ahead voorspellings wanneer die data is relatief raserig), en hulle kan verander word om 'n konstante lineêre tendens inkorporeer soos hierbo getoon. Wat van kort termyn tendense As 'n reeks vertoon 'n wisselende koers van groei of 'n sikliese patroon wat uitstaan duidelik teen die geraas, en as daar 'n behoefte aan meer as 1 tydperk wat voorlê voorspel, dan skatting van 'n plaaslike tendens kan ook wees n probleem. Die eenvoudige eksponensiële gladstryking model veralgemeen kan word na 'n lineêre eksponensiële gladstryking (LES) model wat plaaslike begrotings van beide vlak en tendens bere te kry. Die eenvoudigste-time wisselende tendens model is Browns lineêr eksponensiële gladstryking model, wat twee verskillende reëlmatige reeks wat op verskillende punte gesentreer in die tyd gebruik. Die vooruitskatting formule is gebaseer op 'n ekstrapolasie van 'n streep deur die twee sentrums. ( 'N meer gesofistikeerde weergawe van hierdie model, Holt8217s, word hieronder bespreek.) Die algebraïese vorm van Brown8217s lineêr eksponensiële gladstryking model, soos dié van die eenvoudige eksponensiële gladstryking model, uitgedruk kan word in 'n aantal verskillende maar ekwivalente vorms. Die quotstandardquot vorm van hierdie model word gewoonlik uitgedruk as volg: Laat S dui die enkel-stryk reeks verkry deur die toepassing van eenvoudige eksponensiële gladstryking om reeks Y. Dit is, is die waarde van S op tydperk t gegee word deur: (Onthou dat, onder eenvoudige eksponensiële gladstryking, dit sou die voorspelling vir Y by tydperk T1 wees) Dan Squot dui die dubbel-stryk reeks verkry deur die toepassing van eenvoudige eksponensiële gladstryking (met behulp van dieselfde 945) tot reeks S:. ten slotte, die voorspelling vir Y tk. vir enige kgt1, word gegee deur: Dit lewer e 1 0 (dit wil sê kul n bietjie, en laat die eerste skatting gelyk wees aan die werklike eerste waarneming), en e 2 Y 2 8211 Y 1. waarna voorspellings gegenereer met behulp van die vergelyking hierbo. Dit gee dieselfde toegerus waardes as die formule gebaseer op S en S indien laasgenoemde is begin met behulp van S 1 S 1 Y 1. Hierdie weergawe van die model gebruik word op die volgende bladsy wat 'n kombinasie van eksponensiële gladstryking met seisoenale aanpassing illustreer. Holt8217s Lineêre Eksponensiële Smoothing Brown8217s LES model bere plaaslike begrotings van vlak en tendens deur glad die onlangse data, maar die feit dat dit nie so met 'n enkele glad parameter plaas 'n beperking op die data patrone wat dit in staat is om aan te pas: die vlak en tendens word nie toegelaat om wissel op onafhanklike tariewe. Holt8217s LES model spreek hierdie kwessie deur die insluiting van twee glad konstantes, een vir die vlak en een vir die tendens. Te eniger tyd t, soos in Brown8217s model, die daar is 'n skatting L t van die plaaslike vlak en 'n skatting T t van die plaaslike tendens. Hier is hulle rekursief bereken vanaf die waarde van Y op tydstip t en die vorige raming van die vlak en tendens waargeneem deur twee vergelykings wat eksponensiële gladstryking afsonderlik van toepassing op hulle. As die geskatte vlak en tendens op tydstip t-1 is L t82091 en T t-1. onderskeidelik, dan is die voorspelling vir Y tshy wat op tydstip t-1 sal gemaak is gelyk aan L t-1 T T-1. Wanneer die werklike waarde is waargeneem, is die opgedateer skatting van die vlak rekursief bereken deur interpol tussen Y tshy en sy voorspelling, L t-1 T T-1, die gebruik van gewigte van 945 en 1- 945. Die verandering in die geskatte vlak, naamlik L t 8209 L t82091. geïnterpreteer kan word as 'n lawaaierige meting van die tendens op tydstip t. Die opgedateer skatting van die tendens is dan rekursief bereken deur interpol tussen L t 8209 L t82091 en die vorige skatting van die tendens, T t-1. die gebruik van gewigte van 946 en 1-946: Die interpretasie van die tendens-glad konstante 946 is soortgelyk aan dié van die vlak glad konstante 945. Models met klein waardes van 946 aanvaar dat die tendens verander net baie stadig met verloop van tyd, terwyl modelle met groter 946 aanvaar dat dit vinniger is om te verander. 'N Model met 'n groot 946 is van mening dat die verre toekoms is baie onseker, omdat foute in die tendens-skatting word baie belangrik wanneer voorspel meer as een tydperk wat voorlê. (Terug na bo.) Die smoothing konstantes 945 en 946 kan in die gewone manier word beraam deur die vermindering van die gemiddelde kwadraat fout van die 1-stap-ahead voorspellings. Wanneer dit in Stat Graphics gedoen, die skattings uitdraai om te wees 945 0.3048 en 946 0,008. Die baie klein waarde van 946 beteken dat die model veronderstel baie min verandering in die tendens van een tydperk na die volgende, so basies hierdie model is besig om 'n langtermyn-tendens skat. Volgens analogie met die idee van die gemiddelde ouderdom van die data wat gebruik word in die skatte van die plaaslike vlak van die reeks, die gemiddelde ouderdom van die data wat gebruik word in die skatte van die plaaslike tendens is eweredig aan 1/946, hoewel nie presies gelyk aan Dit. In hierdie geval is dit blyk 1 / 0,006 125. Dit isn8217t n baie presiese aantal sover die akkuraatheid van die skatting van 946 isn8217t regtig 3 desimale plekke te wees, maar dit is van dieselfde algemene orde van grootte as die steekproefgrootte van 100 , so hierdie model is gemiddeld oor 'n hele klomp van die geskiedenis in die skatte van die tendens. Die voorspelling plot hieronder toon dat die LES model skat 'n effens groter plaaslike tendens aan die einde van die reeks as die konstante tendens geskat in die SEStrend model. Ook waarvan die beraamde waarde van 945 is byna identies aan die een wat deur die pas van die SES model met of sonder tendens, so dit is amper dieselfde model. Nou, doen hierdie lyk redelike voorspellings vir 'n model wat veronderstel is om te beraming 'n plaaslike tendens As jy hierdie plot 8220eyeball8221, dit lyk asof die plaaslike tendens afwaarts gedraai aan die einde van die reeks: Wat het die parameters van hierdie model gebeur is beraam deur die vermindering van die kwadraat fout van 1-stap-ahead voorspellings, nie langer termyn voorspellings, in welke geval die tendens 'n groot verskil doesn8217t maak. As alles wat jy is op soek na is 1-stap-ahead foute, is jy nie sien die groter prentjie van tendense oor (sê) 10 of 20 periodes. Ten einde hierdie model meer in harmonie te kry met ons oogbal ekstrapolasie van die data, kan ons met die hand die tendens-glad konstante pas sodat dit 'n korter basislyn vir tendens skatting. Byvoorbeeld, as ons kies om te stel 946 0.1, dan is die gemiddelde ouderdom van die gebruik in die skatte van die plaaslike tendens data is 10 periodes, wat beteken dat ons die gemiddeld van die tendens oor daardie laaste 20 periodes of so. Here8217s wat die voorspelling plot lyk asof ons '946 0.1 terwyl 945 0.3. Dit lyk intuïtief redelike vir hierdie reeks, maar dit is waarskynlik gevaarlik om hierdie tendens te ekstrapoleer nie meer as 10 periodes in die toekoms. Wat van die fout statistieke Hier is 'n model vergelyking vir die twee modelle hierbo asook drie SES modelle getoon. Die optimale waarde van 945.Vir die SES model is ongeveer 0,3, maar soortgelyke resultate (met 'n bietjie meer of minder 'n responsiewe ingesteldheid, onderskeidelik) verkry met 0,5 en 0,2. (A) Holts lineêre exp. glad met alfa 0,3048 en beta 0,008 (B) Holts lineêre exp. glad met alfa 0,3 en beta 0,1 (C) Eenvoudige eksponensiële gladstryking met alfa 0,5 (D) Eenvoudige eksponensiële gladstryking met alfa 0,3 (E) Eenvoudige eksponensiële gladstryking met alfa 0,2 hul statistieke is byna identies, so ons can8217t regtig die keuse te maak op die basis van 1-stap-ahead voorspelling foute binne die data monster. Ons het om terug te val op ander oorwegings. As ons glo dat dit sinvol om die huidige tendens skatting van wat die afgelope 20 periodes of so gebeur baseer, kan ons 'n saak vir die LES model met 945 0.3 en 946 0.1 maak. As ons wil hê agnostikus te wees oor die vraag of daar 'n plaaslike tendens, dan een van die SES modelle makliker om te verduidelik kan wees en sou ook vir meer middel-of-the-road voorspellings vir die volgende 5 of 10 periodes. (Terug na bo.) Watter tipe tendens-ekstrapolasie die beste: horisontale of lineêre empiriese bewyse dui daarop dat, indien die data is reeds aangepas (indien nodig) vir inflasie, dan is dit dalk onverstandig om kort termyn lineêre ekstrapoleer wees tendense baie ver in die toekoms. Tendense duidelik vandag mag verslap in die toekoms as gevolg van uiteenlopende oorsake soos produk veroudering, toenemende mededinging en sikliese afswaai of opwaartse fases in 'n bedryf. Om hierdie rede, eenvoudige eksponensiële gladstryking voer dikwels beter out-of-monster as wat dit andersins word verwag, ten spyte van sy quotnaivequot horisontale tendens ekstrapolasie. Gedempte tendens veranderinge van die lineêre eksponensiële gladstryking model word ook dikwels gebruik in die praktyk om 'n aantekening van konserwatisme in te voer in die tendens projeksies. Die gedempte-tendens LES model geïmplementeer kan word as 'n spesiale geval van 'n ARIMA model, in die besonder, 'n ARIMA (1,1,2) model. Dit is moontlik om vertrouensintervalle rondom langtermyn voorspellings wat deur eksponensiële gladstryking modelle bereken deur die oorweging van hulle as spesiale gevalle van ARIMA modelle. (Pasop: nie alle sagteware bereken vertrouensintervalle vir hierdie modelle korrek.) Die breedte van die vertrouensintervalle hang af van (i) die RMS fout van die model, (ii) die tipe glad (eenvoudige of lineêr) (iii) die waarde (s) van die smoothing konstante (s) en (iv) die aantal periodes voor jy voorspel. In die algemeen, die tussenposes versprei vinniger as 945 kry groter in die SES model en hulle uitgebrei, sodat baie vinniger as lineêre, eerder as eenvoudige smoothing gebruik. Hierdie onderwerp word verder in die ARIMA modelle deel van die notas bespreek. (Terug na bo.) 'N Inleiding tot glad tydreekse in Python. Deel I: filter teorie Let8217s sê jy het 'n klomp van tydreeksdata met 'n geraas bo-op en wil 'n redelik skoon sein uit dat kry. Intuïsie sê vir ons die maklikste manier om uit hierdie situasie is uit te stryk die geraas in een of ander manier te kry. Wat is die rede waarom die probleem van herstel 'n sein van 'n stel van tydreeksdata glad genoem as ons data van alle tye punte beskikbaar om mee te werk. Dit beteken dat ons xt weet almal tin0, T. As ons weet net XT tot die huidige tyd punt tn, maw tin0, tn, dan is die probleem genoem filter en as ons data het net vir tin0, t die probleem voorspelling genoem. Hierdie drie probleme is nou verwant en die algoritmes I8217ll bespreek is van toepassing op al die probleme met geringe wysigings. I8217ll benader die probleem van die smoothing perspektief want dit is wat ek nodig het vir my eie navorsing. Let8217s begin deur die opwekking van 'n sein se en 'n meting y met 'n arbitrêre geraas N: PLT. plot (x. y. LS Geen. merker.) Die maklikste ding kan 'n mens doen sou wees om die gemiddelde uit die punte binne 'n klein pouse. Dit staan bekend as 'n bewegende gemiddelde. Dit werk OK as jy het 'n baie data en min geraas, maar that8217s nie pret nie. As jy wil 'n bietjie meer slim wees, kan jy die venster uit te brei na 'n groter tydinterval om meer inligting te gebruik, maar weeg die punte wat verder weg van die huidige tyd punt minder is, aangesien dit die geval dat hulle verskillende dalk waardes nie as gevolg van geraas, maar omdat die sein is anders op daardie tydstip. Let8217s noem die sein se en sy skatting hoed. Dan is die eksponensiële bewegende gemiddelde hoed t r yt (1-r) hoed Dit venster gebruik slegs punte uit die verlede, met 'n gewig wat eksponensieel verval: (1-r) k as hulle k stappe weg. 'N Beter ding om te doen sou wees om ook punte gebruik van die toekoms. Dit dui daarop met 'n gewig funksie gesentreer rondom die huidige punt wat verval soos ons verder stap. 'N algemene formule vir hierdie sou wees: som SK y waar die gewig van funksie f is gekonvuleerde met die meting binne 'n venster van grootte N. Hierdie operasie is 'n filter genoem omdat dit filters uit sekere frekwensies in die sein, terwyl dit ander ongeskonde (we8217ll verken die frekwensiespektrum in 'n bietjie). Nota filters ook die probleem wat ek beskryf as filter met 'n paar lag, want ons moet net die punte tot tyd tn om die antwoord vir t weet op te los. Die funksie f funksie in fisika bekend as 'n Groen funksie of in die seinverwerking literatuur as 'n impulsrespons funksie. 'N Algemene keuse wat ook verval eksponensieel is 'n Gaussiese funksie. Let8217s probeer: Ons het 'n fout van 0,0036. Nie sleg nie. Die Gaussiese venster wat ons gebruik het net N39 waardes alhoewel teoreties die Gaussiese strek tot in die oneindigheid. Aangesien dit verval eksponensieel egter kry ons 'n goeie resultate as ons hom uitroei, na 'n paar waardes. Ons kan ook filters te implementeer met 'n oneindige ondersteuning. Histories, is hierdie soort van filters in 'n analoog kring, waar daar terugvoer en dus al die punte in wisselwerking met mekaar (verduidelik die oneindige ondersteuning) geïmplementeer word. Die impulsrespons funksie beskryf die gedrag van die stelsel wanneer dit met 'n enkele impuls (vandaar die naam). Ons kan dan beskryf die gedrag van die stelsel onder enige insette y deur die konvolusie van die insette van die IRF. Deesdae word 'n onderskeid getref tussen eindige en oneindige impulsrespons filters. Die eindige filters is redelik maklik om te gebruik, aangesien al wat jy hoef te doen is 'n diskrete konvolusie met die sein. Die oneindige reaksie filters het gewoonlik 'n beter gehalte, maar is moeiliker om te implementeer op 'n rekenaar. Om dit te implementeer, moet ons gebruik maak van die Laplace-transform van die oordragfunksie Elke filter is uniek bepaal deur die koëffisiënte A en B bepaal. Let daarop dat 'n FIR filter net aj0 vir alle jgt0 so hierdie voorstelling is universeel. Om dit te probeer, ek opgetel die Butterworth filter: Vir ons eenvoudige toets data, die fout is ongeveer dieselfde as in die Gaussiese venster geval. Let daarop dat die filter ontwerp funksie in Scipy neem die cuttoff frekwensie gedeel deur die Nyquist tempo. Let ook op die gebruik van die filtfilt, wat die filter van toepassing keer vorentoe en een keer agtertoe om die lag te skakel as gevolg van die feit dat die konvolusie moet 'n paar aanvanklike punte 8220buffer8221 aan die begin. Op hierdie manier die vorentoe lag vergoed word deur die agteruit lag (sommige outomatiese padding is van toepassing op 'n skatting vir alle t te kry). Ek kon hierdie funksie vir die Gaussiese filter gebruik sowel, verby 1.0 vir die parameter. Om te verstaan hoe hierdie filters verskil is dit nuttig om te kyk na hul frekwensieweergawe. In Fourier ruimte, konvolusie word 'n vermenigvuldiging, en ons kan verstaan wat 'n filter doen deur te kyk na wat frekwensies dit laat deurgaan. 'N ideale filter moet 'n reeks laat frekwensies deurgaan en die ander heeltemal te kanselleer. gewoonlik egter is daar 'n paar regime waar daar 'n verswakking, die wydte van wat afhanklik is van die filter8217s orde. Jy don8217t wil 'n filter met te hoë 'n bevel nie, want onstabiliteit kom naby die afsnyfrekwensie. In ons eenvoudige geval wil ons net om jou te laat 'n frekwensie deurgaan en afgesny al die ander. Ons sien dat die sein frekwensie is 'n skerp piek en dan die krag van al die ander frekwensies sterf vinnig uit. Aan die ander kant die gemeet lawaaierige sein het 'n paar konstante krag vir alle frekwensies (dit is waar die term wit geraas vir 'n Gaussiese vandaan kom, omdat alle frekwensies gelyke krag). Ons filters in wese filter alle frekwensies bo 'n sekere frekwensie. Hulle word genoem laagdeurlaat filters. Ons kan ook ontwerp hoë slaagsyfer of bandlaatfilters, indien die frekwensie in 'n ander streek van die spektrum was. In alle gevalle, moet ons weet vooraf ongeveer die frekwensie van die sein wat ons is op soek na. As ons don8217t weet dat ons meer gesofistikeerd uit te kom. Volle kode hieronder (met 'n paar dinge wat gedek moet word in die volgende post te):
No comments:
Post a Comment