Jeg vil gjerne utføre et eksponentielt vektet glidende gjennomsnitt med parameterisering definert her på en vektor i R Er det en bedre gjennomføring enn mitt første forsøk under. Mitt første forsøk var. I mitt andre forsøk trodde jeg at jeg kunne gjøre det bedre ved å vektorgere. I antar jeg burde ikke vært for overrasket av resultatene i mitt andre forsøk Det var et ganske stygg forsøk på vektorisering Men det må være noe som dette forbedrer ved mitt første forsøk riktig. Jeg fant en bedre implementering her og tilpasset den som følger. digEmAll var veldig snill med en Rcpp-versjon, men også oppmerksom på at du bare kunne bruke TTR-pakken eller, som forfatternotatene, statistikkfilter-tilnærmingen jeg brukte i et innlegg på det nå avsluttede R Graph Gallery for et tiår siden. Alltid, en rask shootout shootout viser Rcpp-versjonen så mye raskere som sannsynligvis betyr at vi fikk parameteriseringen feil. Lambda 0 5 er en svært sterkt forfall som vil tilsvare en halveringstid på en dag eller N 1 Hvis jeg bruker det, gapet er enda bredere. For fullstendighet, hele filen som kan bare være Rcpp sourceCpp - ed. answered 13. mars kl 22.30.Jeg vil sette TTR EMA y, forhold 0 5 for referansen, ikke at jeg tror det vil gjøre mye forskjell Vær også oppmerksom på at TTR EMA gjør litt mer enn statistikkfilter, og denne Rcpp-versjonen har noen feilkontroll, håndterer ledende NA og bruker paradiset til rekreasjon og rekonstruksjon for å håndtere mange forskjellige typer objekter Joshua Ulrich 13 mars kl 22 58. Takk for påminnelsen om forholdet Dirk Eddelbuettel 13 mars kl 23 46.Y Vår Answer.2017 Stack Exchange, Inc. Jeg har i hovedsak en rekke verdier som dette. Ovennevnte array er forenklet, jeg samler 1 verdi per millisekund i min ekte kode og jeg må behandle utdataene på en algoritme jeg skrev for å finne nærmeste topp før et punkt i tid Min logikk feiler fordi i mitt eksempel ovenfor er 0 36 den virkelige toppen, men min algoritme vil se bakover og se det siste nummeret 0 25 som toppen, da det er en reduksjon til 0 24 før Målet er å ta disse verdiene og bruke en algoritme til dem som vil glatte dem ut litt, slik at jeg har mer lineære verdier, det vil si at resultatene mine skal være svingete, ikke ekgedige. Jeg har blitt fortalt å bruke en eksponentiell Flytte gjennomsnittlig filter til mine verdier Hvordan kan jeg gjøre dette? Det er veldig vanskelig for meg å lese matematiske ligninger. Jeg behandler mye bedre med kode. Hvordan behandler jeg verdier i mitt array, og bruker en eksponentiell glidende gjennomsnittlig beregning for å utelukke dem. Feb 8 12 på 20 27.To beregne et eksponentielt bevegelige gjennomsnitt du trenger å holde noen tilstand rundt og du trenger en tuningsparameter Dette krever en liten klasse forutsatt at du bruker Java 5 eller nyere. Installer med nedbrytingsparameteren du vil ha må innstille skal være mellom 0 og 1 og bruk deretter gjennomsnitt for å filtrere. Når du leser en side om noen matematisk tilbakevending, er alt du virkelig trenger å vite når du slår det til kode, at matematikerne liker å skrive indekser i arrays og sekvenser med abonnement. De har også noen andre notater, men det hjelper ikke EMA er ganske enkelt som du bare trenger å huske en gammel verdi, ingen kompliserte statlige arrays required. answered 8. februar 12 på 20 42. TKKocheran Ganske mye Er det ikke fint når ting kan være enkelt Hvis du starter med en ny sekvens, får du en ny gjennomsnittlig notat at de første parvilkårene i gjennomsnittssekvensen vil hoppe rundt litt på grunn av grenseeffekter, men du får de med andre bevegelige gjennomsnitt også. En god fordel er at du kan pakke den bevegelige gjennomsnittlige logikken inn i gjennomsnittet og eksperimentere uten å forstyrre resten av programmet for mye Donal Fellows 9. februar 12 på 0 06. Jeg har det vanskelig å forstå dine spørsmål, men jeg vil prøve å svare uansett.1 Hvis algoritmen din fant 0 25 i stedet for 0 36, da er det feil Det er feil fordi det forutsetter en monotonisk økning eller reduksjon som alltid går opp eller alltid går ned Med mindre du gjennomsnittlig ALLE dataene dine, er datapunktene dine --- som du presenterer dem --- ikke-lineære Hvis du virkelig vil for å finne den maksimale verdien mellom to poeng i tid, skar du arrayet fra tmin til tmax og finn maksimalt for det subarray.2 Nå er begrepet bevegelige gjennomsnitt veldig enkle å forestille at jeg har følgende liste 1 4, 1 5 , 1 4, 1 5, 1 5 Jeg kan glatte det ut ved å ta gjennomsnittet av to tall 1 45, 1 45, 1 45, 1 5 Legg merke til at det første nummeret er gjennomsnittet av 1 5 og 1 4 sekund og første tall den andre nye listen er gjennomsnittet av 1 4 og 1 5 tredje og andre gamle liste den tredje nye listen gjennomsnittet av 1 5 og 1 4 f vår og tredje, og så videre kunne jeg ha gjort det tre eller fire år, eller n Legg merke til hvordan dataene er mye jevnere En god måte å se glidende gjennomsnitt på jobben er å gå til Google Finance, velg et lagerforsøk Tesla Motors ganske flyktig TSLA og klikk på technicals nederst i diagrammet. Velg Moving Average med en gitt periode, og eksponentiell glidende gjennomsnitt for å sammenligne forskjellene. Eksponentielt glidende gjennomsnitt er bare en annen utbygging av dette, men veier de eldre dataene mindre enn de nye dataene dette er en måte å forvirre utjevningen mot ryggen. Les Wikipedia-oppføringen. Så dette er mer en kommentar enn et svar, men den lille kommentaren boksen var bare for liten Lykke til. Hvis du har problemer med matte, kan du gå med et enkelt bevegelige gjennomsnittssted i stedet for eksponentiell Så utgangen du får vil være de siste x-vilkårene delt med x Ikke-testet pseudokode. Merk at du må håndtere start - og sluttdelene av dataene, siden du tydeligvis ikke kan gjennomsnitts de siste 5 vilkårene når du er på ditt andre datapunkt Det er også flere effektive måter å beregne denne glidende gjennomsnittlige summen - eldste nyeste, men dette er for å få konseptet om hva som skjer over. ansvaret 8. februar 12 kl 20 41. Er det mulig å implementere et glidende gjennomsnitt i C uten behov for et vindu av prøver. Jeg har funnet ut at jeg kan optimalisere litt ved å velge en vindusstørrelse som er en kraft på to for å tillate bitforskyvning i stedet for å dele, men ikke trenger en buffer være hyggelig Er det en måte å uttrykke et nytt, glidende gjennomsnittsresultat bare som en funksjon av det gamle resultatet og den nye prøven. Finn et eksempel på glidende gjennomsnitt, over et vindu på 4 prøver å være. Legg til ny prøve eA glidende gjennomsnitt kan implementeres rekursivt, men for en nøyaktig beregning av det bevegelige gjennomsnittet må du huske den eldste innsatsprøven i summen, dvs. a i eksempelet ditt For et lengde N-glidende gjennomsnitt beregner du hvor yn er utgangssignalet og xn er inngangssignalet Eq 1 kan skrives rekursivt som. Så du alltid må huske prøven x nN for å beregne 2. Som påpekt av Conrad Turner, kan du bruke et uendelig langt eksponensielt vindu i stedet, noe som gjør det mulig å beregne utgangen bare fra tidligere utgang og nåværende input. but dette er ikke et standard uvevet glidende gjennomsnitt, men et eksponentielt vektet glidende gjennomsnitt, hvor prøver tidligere i det siste får en mindre vekt, men i det minste i teorien glemmer du aldri noe vekter blir bare mindre og mindre for prøver langt tidligere. Jeg implementerte en glidende gjennomsnitt uten individuelt elementminne for et GPS-sporingsprogram jeg skrev. Jeg starter med 1 prøve og deler med 1 for å få gjeldende avg. Jeg legger deretter til en prøve og deler med 2 til gjeldende avg. Dette fortsetter til jeg kommer til lengden på gjennomsnittet. Hver gang etterpå legger jeg til den nye prøven, får gjennomsnittet og fjerner det gjennomsnittet fra totalen. Jeg er ikke en matematiker, men dette virket som en god måte å gjøre det på. Jeg skjønte at det ville slå magen av en ekte matte fyr, men det viser seg at det er en av de aksepterte måtene å gjøre det Og det fungerer bra Bare husk at jo høyere lengden jo tregere følger det du vil følge Det spiller ingen rolle mesteparten av tiden, men når du følger satellitter Hvis du er treg, kan stien være langt fra den faktiske posisjonen, og det vil se dårlig. Du kan ha et mellomrom mellom lørdager og de etterfølgende punktene jeg valgte en lengde på 15, oppdatert 6 ganger i minuttet for å få tilstrekkelig utjevning og ikke få for langt fra den faktiske sitteposisjonen med den glatte strekpunkten. ansvaret 16. november 16 kl 23 03.initialiser totalt 0, teller 0 hver gang du ser en ny verdi. Deretter legger du til en ny skanning, en legger til totalt nyValue, en økningstelling, en deling gjennomsnittlig total count. This ville være et bevegelige gjennomsnitt over alle inputs. To beregne gjennomsnittet over bare de siste 4 inngangene, ville kreve 4 inputvariables, kanskje kopiere hvert inngang til en eldre inputvariable og deretter beregne det nye glidende gjennomsnittet som summen av 4 inputvariables, delt ved 4 høyre skift 2 ville det være bra hvis alle inngangene var positive for å gjøre gjennomsnittlig beregning. ansvaret 3. februar klokken 4 06. Det vil faktisk beregne det totale gjennomsnittet og IKKE det bevegelige gjennomsnittet. Da teller blir større, påvirker det noen ny inngang prøven blir forsinkende liten Hilmar Feb 3 15 på 13 53. Ditt svar.2017 Stack Exchange, Inc.
Comments
Post a Comment