Monday, October 17, 2016

Bewegende Gemiddelde Pandas

Dit is belangrik om daarop te let dat daar verskeie maniere van die definisie van die RSI. Dit word algemeen gedefinieer in ten minste twee maniere: die gebruik van 'n eenvoudige bewegende gemiddelde (SMA) soos hierbo, of met behulp van 'n eksponensiële bewegende gemiddelde (EMA). Hier is 'n kode uit dat beide definisies van RSI bereken en plotte hulle vir 'n vergelyking. Im die eerste ry wegdoen nadat die verskil, want dit is altyd NaN per definisie. Let daarop dat wanneer die gebruik van EMO mens versigtig moet wees: aangesien dit 'n geheue terug te gaan na die begin van die data sluit, is die resultaat hang af van waar jy begin Om hierdie rede, tipies mense sal 'n paar data voeg aan die begin, sê 100 keer stappe , en dan sny die eerste 100 RSI waardes. die SMA een is geneig om meer sensitief te wees: In die onderstaande plot, kan 'n mens die verskil tussen die RSI bereken deur SMA en EMO sien. Let daarop dat die RSI gebaseer op EMO het sy eerste eindige waarde aan die eerste keer stap (wat is die tweede keer stap van die oorspronklike tydperk, as gevolg van die eerste ry wegdoen), terwyl die RSI gebaseer op SMA het sy eerste eindige waarde aan die 14 keer stap. Dit is omdat by verstek rollingmean () slegs 'n eindige waarde sodra daar genoeg waardes om die venster te vul terugkeer. BiagioChirico, danksy - ek don39t tyd om te kyk in detail nie, maar een moontlikheid is dat die verskil is as gevolg van wat ek in die post genoem, naamlik dat daar 'n paar willekeur wat veroorsaak word deur die hoeveelheid data wat jy sluit voor die venster jy kyk na, indien enige (Ek het 100 dae as 'n voorbeeld). â € Moot 11 April by 4: 05Backtesting n bewegende gemiddelde Crossover in Python met pandas Deur Michael Saal-Moore op 21 Januarie 2014 In die vorige artikel oor Navorsing back testing omgewings Python Met Pandas ons geskep 'n objek-georiënteerde navorsing-gebaseerde back testing omgewing en dit getoets op 'n ewekansige vooruitskatting strategie. In hierdie artikel sal ons gebruik van die masjinerie wat ons lei om navorsing te doen oor 'n werklike strategie, naamlik die bewegende gemiddelde Crossover op AAPL maak. Bewegende gemiddelde Crossover Strategie Die bewegende gemiddelde Crossover tegniek is 'n uiters bekende simplistiese momentum strategie. Daar word dikwels beskou as die Hello World voorbeeld vir kwantitatiewe handel. Die strategie as hier uiteengesit is slegs lang. Twee afsonderlike eenvoudige bewegende gemiddelde filters word geskep, met wisselende Terugblik tydperke, van 'n bepaalde tyd reeks. Seine na die aankoop van die bate vind plaas wanneer die korter Terugblik bewegende gemiddelde hoe langer bewegende gemiddelde oorskry Terugblik. As die langer gemiddelde daarna die korter gemiddelde oorskry, word die bate verkoop terug. Die strategie werk goed wanneer 'n tydreeks betree 'n tydperk van 'n sterk tendens en dan omkeer stadig die tendens. Vir hierdie voorbeeld het ek gekies Apple, Inc (AAPL) as die tyd reeks, met 'n kort Terugblik van 100 dae en 'n lang Terugblik van 400 dae. Dit is die inligting wat deur die Zipline algoritmiese handel biblioteek voorbeeld. So as ons wil ons eie backtester implementeer moet ons verseker dat dit die resultate wedstryde in Zipline, as 'n basiese wyse van bevestiging. Implementering Maak seker dat die vorige tutoriaal hier volg. wat beskryf hoe die aanvanklike doel hiërargie vir die backtester is gebou, anders sal die kode hieronder sal nie werk nie. Vir hierdie spesifieke implementering het ek die volgende biblioteke gebruik: Die implementering van macross. py vereis backtest. py van die vorige tutoriaal. Die eerste stap is om die nodige modules en voorwerpe in te voer: Soos in die vorige tutoriaal gaan ons die strategie abstrakte basis klas MovingAverageCrossStrategy produseer oorerf. wat al die besonderhede oor hoe om die seine te genereer bevat wanneer die bewegende gemiddeldes van AAPL kruis oor mekaar. Die voorwerp vereis 'n shortwindow en 'n longwindow waarop te werk. Die waardes is ingestel om die standaard van 100 dae en 400 dae onderskeidelik, wat dieselfde parameters wat in die belangrikste voorbeeld van Zipline is. Die bewegende gemiddeldes is geskep deur die gebruik van die pandas rollingmean funksie op die barsClose sluitingsprys van die AAPL voorraad. Sodra die individu bewegende gemiddeldes is gebou, is die sein reeks wat deur die oprigting van die kolom gelyk aan 1,0 wanneer die kort bewegende gemiddelde is groter as die lang bewegende gemiddelde, of 0.0 anders. Hieruit kan die posisies bestellings gegenereer kan word om handel seine verteenwoordig. Die MarketOnClosePortfolio is subclassed van Portefeulje. wat is gevind in backtest. py. Dit is byna identies aan die wat in die vorige tutoriaal beskryf implementering, met die uitsondering dat die ambagte nou uit op 'n close-to-Close basis gedra, eerder as om 'n Ope-tot-Ope basis. Vir meer inligting oor hoe die Portefeuljekomitee voorwerp gedefinieer, sien die vorige tutoriaal. Ive het die kode in vir volledigheid en om hierdie handleiding te hou self-contained: Noudat die MovingAverageCrossStrategy en MarketOnClosePortfolio klasse is gedefinieer, sal 'n hooffunksie word geroep om al die funksies saam te bind. Daarbenewens die prestasie van die strategie deur middel van 'n plot van die aandele kurwe sal ondersoek word. Die pandas DataReader voorwerp downloads OHLCV pryse van AAPL voorraad vir die tydperk 1 Januarie 1990 tot 1 Januarie 2002, op watter punt die seine DataFrame is geskep om die lang-net seine op te wek. Vervolgens die portefeulje is gegenereer met 'n 100,000 dollar aanvanklike kapitaalbasis en die opbrengs word bereken op die aandele kurwe. Die finale stap is om matplotlib gebruik om 'n twee-syfer plot van beide AAPL pryse, oorgetrek met die bewegende gemiddeldes plot en koop / verkoop seine, asook die aandele kurwe met dieselfde koop / verkoop seine. Die plot kode is geneem (en aangepas) van die Zipline implementering voorbeeld. Die grafiese uitset van die kode is soos volg. Ek het gebruik gemaak van die IPython Plak opdrag om hierdie direk in die IPython konsole sit terwyl hy in Ubuntu, sodat die grafiese uitset in die lig bly. Die pienk upticks verteenwoordig die aankoop van die voorraad, terwyl die swart downticks dit terug verteenwoordig verkoop: Soos gesien kan word van die strategie verloor geld oor die tydperk, met vyf heen-en terugreis ambagte. Dit is nie verbasend gegewe die gedrag van AAPL oor die tydperk, wat op 'n effense afwaartse neiging, gevolg deur 'n beduidende toename begin in 1998. Die Terugblik tydperk van die bewegende gemiddelde seine is redelik groot en die effek daarvan die wins van die finale handel , wat anders die strategie winsgewend moontlik gemaak. In die daaropvolgende artikels sal ons 'n meer gesofistikeerde middel van die ontleding van die prestasie, sowel as die beskrywing van hoe om die Terugblik tydperke van die individuele bewegende gemiddelde seine te optimaliseer skep. Michael Saal-Moore Mike is die stigter van QuantStart en is betrokke by die kwantitatiewe finansiële sektor vir die afgelope vyf jaar, in die eerste plek as 'n quant ontwikkelaar en later as 'n quant handelaar konsultasie vir verskansing funds. Moving 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.) Computational gereedskap analoog, DataFrame het 'n metode cov om paarsgewyse kovariansies bereken onder die reeks in die DataFrame, ook uitgesluit NA / nul waardes. Die aanvaarding van die vermiste data ontbreek na willekeur dit lei tot 'n skatting vir die kovariansiematriks wat onbevooroordeelde. Maar vir baie toepassings hierdie beraming kan nie aanvaar word nie, want die geskatte kovariansiematriks nie gewaarborg positiewe semi-definitiewe te wees. Dit kan lei tot beraamde korrelasies met absolute waardes wat groter is as een is, en / of 'n nie-omkeerbare kovariansiematriks. Sien Beraming van kovariansiematrikse vir meer besonderhede. DataFrame. cov ondersteun ook 'n opsionele minperiods navraag dat die vereiste minimum aantal waarnemings vir elke paar kolom spesifiseer ten einde 'n geldige gevolg hê. Die gewigte wat in die venster gespesifiseer deur die wintype navraag. Die lys van erkende vorme is: wagon triang Blackman Hamming Bartlett parzen bohman blackmanharris Nuttall barthann Kaiser (moet beta) Gaussiese (moet st) generalgaussian (moet krag, breedte) slepian (behoeftes breedte). Let daarop dat die wagon venster is gelykstaande aan dat (). Vir een of ander windows funksies, moet addisionele parameters gespesifiseer: Vir. sum () met 'n wintype. Daar is geen normalisering gedoen om die gewigte vir die venster. Verbygaande persoonlike gewigte van 1, 1, 1 sal 'n ander resultaat oplewer as verbygaande gewigte van 2, 2, 2. byvoorbeeld. Gee 'n wintype in plaas van uitdruklik spesifiseer die gewigte, die gewigte is reeds genormaliseer sodat die grootste gewig 1. In teenstelling hiermee het die aard van die berekening. mean () is sodanig dat die gewigte is genormaliseer met betrekking tot mekaar. Gewigte van 1, 1, 1 en 2, 2, 2 oplewer dieselfde resultaat. Tyd-bewus Rolling Nuut in weergawe 0.19.0. Nuut in weergawe 0.19.0 is die vermoë om 'n sprong (of omskepbaar) om 'n metode. rolling () en het dit produseer veranderlike grootte vensters gebaseer op die geslaag tyd venster slaag. Vir elke keer punt, dit sluit alle voorafgaande waardes wat binne die aangeduide tyd delta. Dit kan veral nuttig vir 'n nie-gereelde tyd frekwensie indeks wees. Dit is 'n gereelde frekwensie-indeks. Met behulp van 'n parameter heelgetal venster werk te rol langs die venster frekwensie. Vermelding van 'n geneutraliseer kan 'n meer intuïtiewe spesifikasie van die rollende frekwensie. Die gebruik van 'n nie-gereelde, maar nog steeds monotoniese indeks, die rol met 'n heelgetal venster nie dra enige spesiale berekening. Die gebruik van die tyd-spesifikasie genereer veranderlike vensters vir hierdie yl data. Verder het ons nou toelaat dat 'n opsionele op parameter om 'n kolom (eerder as die standaard van die indeks) in 'n DataFrame spesifiseer. Tyd-bewus Rolling teen hersteekproefnemingsmetodes Gebruik. rolling () met 'n tyd-gebaseerde indeks is baie soortgelyk aan hermonstering. Hulle het albei werk en uit te voer reduktiewe bedrywighede op tyd geïndekseer pandas voorwerpe. By die gebruik van. rolling () met 'n verreken. Die verreken is 'n tyd-delta. Neem 'n agter-in-time soek venster, en gemiddelde gee van die waardes in die venster (insluitend die eindpunt, maar nie die begin-punt). Dit is die nuwe waarde op daardie stadium in die resultaat. Dit is veranderlike grootte vensters in die tyd-ruimte vir elke punt van die insette. Jy sal 'n dieselfde grootte gevolg as die insette te kry. By die gebruik van. resample () met 'n verreken. Stel 'n nuwe indeks wat die frekwensie van die verreken. Vir elke frekwensie bin, totaal punte van die insette binne 'n agtertoe-in-time soek venster wat in daardie bin val. Die gevolg van hierdie samevoeging is die uitset vir daardie frekwensie punt. Die vensters is vasgestel grootte grootte in die frekwensie ruimte. Die resultaat sal die vorm van 'n gereelde frekwensie tussen die min en die maksimum van die oorspronklike insette voorwerp het. Op te som. rollende () is 'n tyd-gebaseerde venster operasie, terwyl. resample () is 'n frekwensie-gebaseerde venster operasie. Sentreer Windows by verstek die etikette is ingestel op die regter rand van die venster, maar 'n sentrum navraag beskikbaar sodat die etikette kan ingestel word by die sentrum. Binêre Venster Funksies cov () en CORR () kan bereken beweeg statistieke venster oor twee reekse of 'n kombinasie van DataFrame / Series of DataFrame / DataFrame. Hier is die gedrag in elke geval: twee reekse. bereken die statistiek vir die paring. DataFrame / Series. bereken die statistieke vir elke kolom van die DataFrame met die geslaag Series, dus 'n DataFrame terugkeer. DataFrame / DataFrame. by verstek bereken die statistiek vir wat ooreenstem met die kolom name, terugkeer 'n DataFrame. As die navraag argument pairwiseTrue oorgedra bere dan die stukkie statistiek vir elke paar kolomme, terugkeer 'n paneel wie se items is die betrokke datums (sien die volgende afdeling). Berekening van rollende paarsgewyse kovariansies en korrelasies In finansiële data-analise en ander velde it8217s gemeen bereken kovariansie en korrelasie matrikse vir 'n versameling van tydreekse. Dikwels een is ook geïnteresseerd in bewegende-venster kovariansie en korrelasie matrikse. Dit kan gedoen word deur die verbygaan van die paarsgewyse navraag argument, wat in die geval van DataFrame insette 'n paneel wie se items is die betrokke datums sal oplewer. In die geval van 'n enkele DataFrame argument kan die paarsgewyse argument selfs weggelaat word: ontbrekende waardes geïgnoreer en elke inskrywing word bereken met behulp van die paarsgewyse volledige waarnemings. Sien asseblief die kovariansie afdeling vir voorbehoude wat verband hou met hierdie metode van berekening van kovariansie en korrelasie matrikse. Afgesien van nie met 'n parameter venster, hierdie funksies het dieselfde koppelvlakke as hul. rolling eweknieë. Soos hierbo, die parameters almal aanvaar is: minperiods. drumpel van nie-nul datapunte te vereis. Standaard minimum wat nodig is om statistiek te bereken. Geen Nans sal uitset keer wees minperiods nie-nul datapunte is gesien. sentrum. boolean, of om die etikette in die middel (verstek is Vals) Die opbrengs van die. rolling stel en. expanding metodes 'n NaN nie terugkeer indien daar ten minste minperiods nie-nul waardes in die huidige venster. Dit verskil van cumsum. cumprod. cummax. en koljander. wat terugkeer NaN in die uitset waar 'n NaN teëgekom in die insette. 'N groeiende venster statistiek sal meer stabiel (en minder responsief) as sy rollende venster eweknie wees as die toenemende venster grootte van die relatiewe impak van 'n individu gegee punt af. As 'n voorbeeld, hier is die gemiddelde () uitset van die vorige tydreekse dataset: eksponensieel Geweegde Windows A verwante stel funksies eksponensieel geweeg weergawes van 'n paar van die bogenoemde statistiek. 'N Soortgelyke koppelvlak om. rolling en. expanding is toeganklik deur middel van die. ewm metode om 'n EWM voorwerp ontvang. 'N Aantal van die uitbreiding van EW (eksponensieel geweeg) metodes word: gladstryking met eksponensieel Geweegde Moving Gemiddeldes n bewegende gemiddelde neem 'n lawaaierige tydreekse en vervang elke waarde met 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 Argiewe


No comments:

Post a Comment