Saturday, 21 October 2017

Flytting Gjennomsnitt Beregningsalgoritme


Flytende gjennomsnitt. Dette eksempelet lærer deg hvordan du beregner det bevegelige gjennomsnittet av en tidsserie i Excel. Et glidende gjennomsnitt brukes til å utjevne uregelmessigheter topper og daler for å enkelt gjenkjenne trender. 1 Først, la oss ta en titt på våre tidsserier.2 På Data-fanen klikker du Data Analysis. Note kan ikke finne Data Analysis-knappen Klikk her for å laste Analysis ToolPak-tillegget.3 Velg Flytt gjennomsnitt og klikk OK.4 Klikk i feltet Inngangsområde og velg området B2 M2. 5 Klikk i intervallboksen og skriv inn 6.6 Klikk i feltet Utmatingsområde og velg celle B3.8 Plott en graf av disse verdiene. Planlegging fordi vi angir intervallet til 6, er det bevegelige gjennomsnittet gjennomsnittet for de foregående 5 datapunktene og det nåværende datapunktet Som et resultat, blir tømmer og daler utjevnet Grafen viser en økende trend Excel kan ikke beregne det bevegelige gjennomsnittet for de første 5 datapunktene fordi det ikke er nok tidligere datapunkter.9 Gjenta trinn 2 til 8 for intervall 2 og intervall 4. Konklusjon La rger intervallet, jo flere tinder og daler utjevnes. Jo mindre intervallet, desto nærmere er de bevegelige gjennomsnittene til de faktiske datapunktene. Jeg vil implementere en iterativ algoritme som beregner vektet gjennomsnitt. Den spesifikke vektloven spiller ingen rolle, men det bør være nær 1 for de nyeste verdiene og nær 0 til den eldste. Algoritmen skal være iterativ, dvs. den skal ikke huske alle tidligere verdier. Det bør kun vite en nyeste verdi og eventuelle aggregerende opplysninger om fortid, som tidligere verdier av gjennomsnittet, summen, teller etc. For eksempel kan følgende algoritme være. Det vil gi eksponensiell avtagende vekt, noe som ikke kan være bra. Det er mulig å ha trinn avtagende vekt eller noe. Kravene til veiing er følgende.1 Vekten minker til siste 2 Jeg har noen gjennomsnittlig eller karakteristisk varighet, slik at verdier eldre denne varigheten betyr mye mindre enn nyere 3 Jeg burde kunne sette denne varigheten. Jeg trenger følgende Supp ose vi er verdier, hvor v1 er den første. Også antar wi er vekter. Men w0 er LAST. Så etter at førstverdien kom, har jeg første gjennomsnitt. Etter den andre verdien v2 kom, burde jeg ha gjennomsnittet. Med neste verdi burde jeg ha . Merk at den vektprofilen beveger seg med meg mens jeg beveger seg langs verdi-sekvensen. Jeg har hver verdi ikke sin egenvekt hele tiden. Målet mitt er å ha denne vekten lavere mens du går til fortiden. Men min oppgave er å ha gjennomsnittlig omregnet hver gang ny verdi kommer til å ha gamle verdier reweighted OP. Your oppgave er nesten alltid umulig, selv med svært enkle vekting ordninger. Du ber om, med O 1 minne, gi gjennomsnitt med en endring vekting ordningen For eksempel som nye verdier blir sendt inn, for noen nesten velfungerende vektersekvenser Dette er umulig på grunn av injeksjonsevne Når du har slått sammen tallene sammen, mister du en massiv mengde informasjon. Selv om du hadde vektvektoren, kunne du ikke gjenopprette original va lue vektor eller omvendt Det er bare to tilfeller jeg kan tenke på hvor du kunne komme unna med dette. Konstantvekt som 2,2,2 2 Dette tilsvarer en gjennomsnittlig algoritme på nettet som du ikke vil ha fordi De gamle verdiene blir ikke reweighted. The relative vekter av tidligere svar endres ikke. For eksempel kan du gjøre vekter på 8,4,2,1 og legge til et nytt element med vilkårlig vekt som 1, men du må øke alle tidligere ved samme multiplikative faktor som 16,8,4,2 1 Således legger du til en ny vilkårlig vekt på hvert trinn, og en ny vilkårlig rescaling av fortiden, slik at du bare har 2 frihetsgrader 1 hvis du trenger å beholde Dotproduktet normaliseres Vektvektorer du får vil se ut. Som alle vektingsordninger du kan se ut som vil fungere, med mindre du trenger å holde saken normalisert av summen av vekter, da må du da dele nytt gjennomsnitt av den nye summen, som du kan beregne ved å bare holde O 1-minne Merely multiply forrige gjennomsnitt av de nye s som vil implisitt distribuere over punktproduktet inn i vektene, og takk på den nye w newValue. answered 29. mars 12 på 21 27. Her antar jeg at du vil at vektene skal summeres til 1 Så lenge siden du kan generere en relativ vekt uten at den endres i fremtiden, kan du ende opp med en løsning som etterligner denne oppførselen. Det er, anta at du definerte vektene dine som en sekvens og definerte inngangen som sekvens. Tenk skjema summen s0 i0 s1 i1 s2 i2 sn i sum s0 s1 s2 sn Merk at det er trivielt mulig å beregne dette trinnvis med et par aggregerings tellere. Selvfølgelig, beregneWeightFromCounter i dette tilfellet bør ikke generere vekter som summen til en - kunsten er her vi gjennomsnittlig ved å dividere med summen av vekter slik at til slutt vil vekterne nesten virke som summen til ett. Det virkelige trikset er hvordan du beregnerWeightFromCounter Du kan ganske enkelt returnere telleren selv, for eksempel merk at den sistveide nummer wou Jeg må ikke være nær summen av tellerne nødvendigvis, så du kan ikke ende opp med de nøyaktige egenskapene du vil. Det er vanskelig å si siden, som nevnt, har du forlatt et ganske åpent problem. ansvaret 28. mars kl. 21 på 21 45. Problemet er at vekter endrer seg med hver ny verdi. I ditt tilfelle er de ikke Suzan Cioc Mar 29 12 på 14 43. De faktiske brukte vektene endres med hver ny verdi - vektene deles opp med et suksessivt større antall, og derved håndheves at de faktiske brukte vektene alltid beløper til 1 Kaganar Mar 29 12 på 14 45. Dette er for lang tid å legge inn i en kommentar, men det kan være nyttig å vite. Oppsett at du har w0 vn wn v0 vi skal ringe dette w 0 nvn 0 for kort. Then er neste trinn w0 vn1 wn1 v0 og dette er w 0 n1 v n1 0 for short. This betyr at vi trenger en måte å beregne w 1 n1 vn 0 fra w 0 nvn 0. Det er sikkert mulig at vn 0 er 0 0, z, 0 0 hvor z er på noe sted x. If vi ikke har ekstra lagring, så fzwxzwx 1 hvor wx er vekten for stedet x. Rearrangin g ekvationen, wx 1 fzwxz Vel, wx 1 bedre være konstant for en konstant x, så fzwxz bedre være konstant Derfor må f la z propagere - det vil si fzwxzfw x. Men her igjen har vi et problem. Merk at hvis z som kan være et hvilket som helst tall kan forplante seg gjennom f da wx sikkert kan So fzwxwxfz Således fwxwxfz Men for en konstant xwx er konstant, og dermed fwx bedre være konstant, for wx er konstant, så fz bedre være konstant slik at wxfz er konstant Således fwxwxc hvor c er en konstant. Så, fxcx hvor c er en konstant når x er en vektverdi. Det er, hver vekt er et flertall av forrige. Vektene tar formen wxmb x. Merk at dette antar den eneste informasjonen f har er den siste aggregerte verdien Merk at du på et tidspunkt vil bli redusert til denne saken med mindre du er villig til å lagre en ikke-konstant mengde data som representerer innspillet. Du kan ikke representere en uendelig lengdevektor med ekte tall med et reelt tall, men du kan omtrentlige dem på en eller annen måte i en konstant, endelig mengde lagringsplass, men dette ville bare være en tilnærming. Selv om jeg ikke har strenge bevist det, er det min konklusjon at det du vil ha, er umulig å gjøre med en høy grad av presisjon, men du kan kanskje bruk log n plass som også kan være 0 1 for mange praktiske applikasjoner for å generere en kvalitet tilnærming Du kan muligens bruke enda mindre. answered 29. mars 12 på 23 01. Jeg prøvde å praktisk talt kode noe i Java Som det er sagt, målet ditt er ikke oppnåelig Du kan bare telle gjennomsnittet fra noen antall siste huskerte verdier Hvis du ikke trenger å være nøyaktig, kan du omtrentliggjøre de eldre verdiene jeg prøvde å gjøre det ved å huske de siste 5 verdiene, bare nøyaktig og eldre verdier SUMmed av 5 verdier, husk de siste 5 SUMene Da er kompleksiteten O 2n for å huske de siste nnn-verdiene. Dette er en veldig grov tilnærming. Du kan endre de sisteValues ​​og lasAggregatedSums arraystørrelsene som du vil. Se dette ascii-art-bildet som prøver å vise en graf over siste verdier, som viser at de eldre dataene i de første kolonnene blir husket som samlet verdi ikke individuelt, og bare de tidligste 5 verdiene blir husket individuelt. Utfordring 1 Mitt eksempel teller ikke vekt, men jeg synes det burde ikke være et problem for deg å legge til vekter for de sisteAggregatedSums på riktig måte - det eneste problemet er at hvis du vil ha lavere vekter for eldre verdier, ville det være vanskeligere fordi arrayet roterer, så det er ikke greit å vite hvilken vekt for hvilket arraymedlem Kanskje du kan endre algoritmen å alltid skifte verdier i matrisen i stedet for å rotere. Da skal leggervektene ikke være et problem. Utfordring 2 Arrayene initialiseres med 0 verdier, og disse verdiene teller til gjennomsnittet fra begynnelsen, selv når vi ikke har nok verdier hvis du kjører algoritmen i lang tid, du sannsynligvis ikke plager at den lærer for en tid i begynnelsen Hvis du gjør det, kan du legge inn en modifikasjon. ansvaret Jan 21 14 på 15 59.Y vårt svar.2017 Stack Exchange, Inc. Moving Average - MA. BREAKING DOWN Flytte gjennomsnittlig - MA. As et SMA eksempel, betrakt en sikkerhet med følgende lukkepriser over 15 dager. Veil 1 5 dager 20, 22, 24, 25, 23.Week 2 5 dager 26, 28, 26, 29, 27.Week 3 5 dager 28, 30, 27, 29, 28.A 10-dagers MA vil gjennomsnittlig utgående sluttpriser for de første 10 dagene som de første dataene punkt Det neste datapunktet vil slippe den tidligste prisen, legge til prisen på dag 11 og ta gjennomsnittet og så videre som vist nedenfor. Som tidligere nevnt, lagrer MAs nåværende prishandling fordi de er basert på tidligere priser, jo lengre tidsperioden for MA, jo større er lagret. Således vil en 200-dagers MA ha en mye større grad av forsinkelse enn en 20-dagers MA fordi den inneholder priser for de siste 200 dagene. MA-lengden på bruk avhenger av handelsmålene, med kortere MAs som brukes til kortvarig handel og langsiktig MAs mer egnet for langsiktige investorer 200-dagers MA er mye etterfulgt av investorer og handelsmenn, med pauser over og under dette bevegelige gjennomsnittet anses å være viktige handelssignaler. MA'er gir også viktige handelssignaler alene eller når to gjennomsnitt krysser over. En stigende MA indikerer at sikkerheten er i en uptrend mens en fallende MA indikerer at den er i en downtrend Tilsvarende er oppadgående momentum bekreftet med et bullish kryssoverfall som oppstår når en kortsiktig MA krysser over en langsiktig MA Nedadgående momentum er bekreftet med en bearish crossover, som oppstår når en kortsiktig MA krysser under en langsiktig MA.

No comments:

Post a Comment