Saturday 7 October 2017

Moving Gjennomsnittet Matplotlib


Zipline er et Pythonic algoritmisk handelsbibliotek. Det er et hendelsesdrevet system som støtter både backtesting og live-trading. Zipline brukes for tiden i produksjon som backtesting og live-trading motor som driver Quantopian 8211 en gratis, fellesskapssentrert plattform for bygging og utførelse av handelsstrategier. Enkel bruk: Zipline prøver å komme seg ut av veien slik at du kan fokusere på algoritmutvikling. Se nedenfor for et kodeeksempel. Zipline kommer 8220batterier inkludert8221 så mange vanlige statistikker som glidende gjennomsnitt og lineær regresjon kan lett nås fra en brukerskrevet algoritme. Inngang av historiske data og resultater fra resultatstatistikk er basert på Pandas DataFrames for å integrere pent i det eksisterende PyData-økosystemet. Statistiske og maskinlæringsbiblioteker som matplotlib, scipy, statsmodeller og sklearn støtter utvikling, analyse og visualisering av toppmoderne handelssystemer. Installasjon Installere med pip Hvis du antar at du har alle nødvendige (se notat nedenfor) ikke-Python-avhengigheter, kan du installere Zipline med pip via: Merk: Installering av Zipline via pip er litt mer involvert enn den gjennomsnittlige Python-pakken. Bare å kjøre pip installere zipline vil trolig mislykkes hvis you8217ve aldri installert noen vitenskapelige Python-pakker før. Det er to grunner til den ekstra kompleksiteten: Zipline sender flere C-utvidelser som krever tilgang til CPython C API. For å bygge C-utvidelsene trenger pip tilgang til CPython header-filene for Python-installasjonen. Zipline er avhengig av numpy. kjernebiblioteket for numerisk array-beregning i Python. Numpy er avhengig av å ha LAPACK lineære algebra rutiner tilgjengelig. Fordi LAPACK og CPython-toppene er binære avhengigheter, varierer den riktige måten å installere dem fra plattform til plattform. På Linux bruker brukerne vanligvis disse avhengighetene via en pakkebehandling som apt. yum. eller pacman. På OSX er Homebrew et populært valg som gir lignende funksjonalitet. Se fullstendig Zipline Installer dokumentasjon for mer informasjon om å skaffe binære avhengigheter for din spesifikke plattform. En annen måte å installere Zipline på er via conda pakkebehandling, som kommer som en del av Anaconda eller kan installeres via pip install conda. Når du er konfigurert, kan du installere Zipline fra vår Quantopian-kanal: For øyeblikket støttede plattformer inkluderer: Quickstart ContributionsComputational Tools Analogt, DataFrame har en metode for å beregne parvise covariances blant serien i DataFrame, også unntatt NAnull-verdier. Forutsatt at manglende data mangler tilfeldig, resulterer dette i et estimat for kovariansmatrisen som er objektiv. For mange anvendelser kan dette estimatet imidlertid ikke være akseptabelt fordi den estimerte kovariansmatrisen ikke er garantert å være positiv semi-bestemt. Dette kan føre til estimerte korrelasjoner med absolutte verdier som er større enn en, og eller en ikke-inverterbar kovariansmatrise. Se Estimering av kovariansmatriser for flere detaljer. DataFrame. cov støtter også et valgfritt søkeord for minperioder som angir ønsket minimum antall observasjoner for hvert kolonnepar for å få et gyldig resultat. Vektene som brukes i vinduet er spesifisert av wintype søkeordet. Listen over anerkjente typer er: boxcar triang blackman hamming bartlett parzen bohman blackmanharris nuttall barthann kaiser (trenger beta) gaussian (needs std) generalgaussian (trenger kraft, bredde) slepian (trenger bredde). Merk at bokservinduet er lik gjennomsnittet (). For noen vindufunksjoner må ytterligere parametere angis: For. sum () med en wintype. Det er ingen normalisering gjort til vekter for vinduet. Ved å sende tilpassede vekter på 1, 1, 1 vil det gi et annet resultat enn passerende vekter på 2, 2, 2. for eksempel. Når du passerer en wintype i stedet for å spesifisere tyngden, er vektene allerede normalisert slik at den største vekten er 1. I motsetning er naturen av. mean () beregningen slik at vektene normaliseres i forhold til hverandre. Vekter på 1, 1, 1 og 2, 2, 2 gir det samme resultatet. Time-aware Rolling Ny i versjon 0.19.0. Ny i versjon 0.19.0 er muligheten til å overføre en forskyvning (eller konvertibel) til en. rolling () - metode og få den til å produsere variabelstørrelsesvinduer basert på passet tidsvindu. For hvert tidspunktspunkt inkluderer dette alle tidligere verdier som forekommer innen det angitte tidspunktet delta. Dette kan være spesielt nyttig for en ikke-vanlig tidsfrekvensindeks. Dette er en vanlig frekvensindeks. Ved å bruke et heltallsparameter virker parameteren å rulle langs vinduets frekvens. Angi en forskyvning gir en mer intuitiv spesifikasjon av rullfrekvensen. Ved å bruke en ikke-vanlig, men likevel monotonisk indeks, gir det ikke noen spesiell beregning å rulle med et heltallvindu. Ved bruk av tidsspesifikasjonen genereres variabelvinduer for denne sparsomme data. Videre tillater vi nå en valgfri parameter for å spesifisere en kolonne (i stedet for standardindeksen) i en DataFrame. Time-aware Rolling vs Resampling Using. rolling () med en tidsbasert indeks er ganske lik resampling. De opererer og utfører reduktiv operasjon på tidindekserte pandasobjekter. Når du bruker. rolling () med en forskyvning. Forskjellen er et tids-delta. Ta et bakover-i-tid-ser vindu, og aggregat alle verdiene i vinduet (inkludert sluttpunktet, men ikke startpunktet). Dette er den nye verdien på det tidspunktet i resultatet. Dette er vinduer med variabel størrelse i tidsrom for hvert punkt på inngangen. Du får samme resultat som inngangen. Når du bruker. resample () med en forskyvning. Konstruer en ny indeks som er frekvensen av forskyvningen. For hver frekvensfylle peker aggregatet fra inngangen i et bakover-i-tid-ser vindu som faller i boksen. Resultatet av denne aggregeringen er utgangen for det aktuelle frekvenspunktet. Vinduene er fast størrelse i frekvensområdet. Resultatet ditt vil ha formen på en vanlig frekvens mellom min og maksimum for det opprinnelige inngangsobjektet. Å oppsummere. rullende () er en tidsbasert vindusoperasjon, mens. resample () er en frekvensbasert vindusoperasjon. Sentering av Windows Som standard er etikettene satt til høyre kant av vinduet, men et senter søkeord er tilgjengelig slik at etikettene kan settes i sentrum. Binære vindufunksjoner cov () og corr () kan beregne flyttbar vinduestatistikk om to serier eller en kombinasjon av DataFrameSeries eller DataFrameDataFrame. Her er oppførselen i hvert tilfelle: to serier. beregne statistikken for paringen. DataFrameSeries. beregne statistikken for hver kolonne i DataFrame med den bestått serien, og returnerer dermed en DataFrame. DataFrameDataFrame. beregner som standard statistikken for å tilpasse kolonnenavn, og returnerer en DataFrame. Hvis søkeordet argumentet pairwiseTrue er bestått beregner du statistikken for hvert par kolonner, og returnerer et panel hvis elementer er de aktuelle datoene (se neste avsnitt). Computing rolling parvis covariances og korrelasjoner I økonomisk data analyse og andre felt it8217s vanlig å beregne kovarians og korrelasjon matriser for en samling av tidsserier. Ofte er man også interessert i flyttevindukovarians og korrelasjonsmatriser. Dette kan gjøres ved å passere argumentet for parvis søkeord, som i tilfelle av DataFrame-innganger vil gi et panel hvis gjenstander er datoene i spørsmålet. I tilfelle av et enkelt DataFrame-argument kan det parvisvise argumentet utelates: Manglende verdier ignoreres, og hver oppføring beregnes ved hjelp av de parvis fullstendige observasjonene. Vennligst se kovarianseksjonen for advarsler knyttet til denne metoden for beregning av kovarians - og korrelasjonsmatriser. Bortsett fra ikke å ha en vindusparameter, har disse funksjonene de samme grensesnittene som deres. rolling-kolleger. Som ovenfor er parametrene de alle aksepterer: minperiodene. terskel for ikke-null datapunkter å kreve. Standard er nødvendig for å beregne statistikk. Ingen NaNs vil bli sendt ut når minperioder ikke-null datapunkter er blitt sett. senter. boolsk, om du vil sette etikettene i midten (standard er False) Utgangene til. rolling og. expanding-metodene returnerer ikke en NaN hvis det er minst minverdier ikke-nullverdier i det nåværende vinduet. Dette er forskjellig fra cumsum. cumprod. cummax. og cummin. som returnerer NaN i utgangen hvor et NaN oppstår i inngangen. En ekspanderende vinduestatistikk vil være mer stabil (og mindre responsiv) enn den rullende vinduesmodellen, da den økende vindustørrelsen reduserer den relative effekten av et individuelt datapunkt. Eksempel: Her er gjennomsnittlig () - utgangen for den tidligere tidsseriensdatasettet: Eksponentielt vektet Windows Et tilhørende sett av funksjoner er eksponentielt vektede versjoner av flere av ovennevnte statistikker. Et lignende grensesnitt for. rolling og. expanding er tilgjengelig gjennom. ewm-metoden for å motta et EWM-objekt. En rekke ekspanderende EW-metoder (eksponentielt vektet) er gitt: Hvordan lage en ARIMA-modell for Time Series-prognoser med Python En populær og mye brukt statistisk metode for prognoser for tidsserier er ARIMA-modellen. ARIMA er et akronym som står for AutoRegressive Integrated Moving Average. Det er en klasse av modell som fanger en serie med forskjellige standard tidsmessige strukturer i tidsseriedata. I denne opplæringen vil du oppdage hvordan du utvikler en ARIMA-modell for tidsseriedata med Python. Etter at du har gjennomført denne opplæringen, vil du vite: Om ARIMA-modellen brukes de parametere og forutsetninger som er laget av modellen. Hvordan passe en ARIMA-modell til data og bruk den til å lage prognoser. Slik konfigurerer du ARIMA-modellen på tidsserieproblemet ditt. Let8217s kommer i gang. Autoregressiv Integrert Flytende Gjennomsnittlig Modell En ARIMA-modell er en klasse med statistiske modeller for å analysere og prognose tidsseriedata. Det henvender seg eksplisitt til en serie standardstrukturer i tidsseriedata, og som sådan gir en enkel, men kraftig metode for å lage dyktige tidsserieprognoser. ARIMA er et akronym som står for AutoRegressive Integrated Moving Average. Det er en generalisering av det enklere AutoRegressive Moving Average og legger til begrepet integrasjon. Dette akronymet er beskrivende, fanger de viktigste aspektene til selve modellen. Kort sagt er de: AR. Autoregression. En modell som bruker det avhengige forholdet mellom en observasjon og noen antall forsinkede observasjoner. JEG . Integrert. Bruken av differensiering av røde observasjoner (for eksempel å trekke en observasjon fra en observasjon ved forrige tidstrinn) for å gjøre tidsserien stasjonær. MA. Glidende gjennomsnitt . En modell som bruker avhengigheten mellom en observasjon og en restfeil fra en bevegelig gjennomsnittsmodell som er brukt på forsinkede observasjoner. Hver av disse komponentene er eksplisitt spesifisert i modellen som en parameter. En standard notasjon brukes av ARIMA (p, d, q) der parametrene er erstattet med heltallverdier for raskt å indikere den spesifikke ARIMA-modellen som brukes. Parametrene til ARIMA-modellen er definert som følger: s. Antall lag observasjoner inkludert i modellen, også kalt lag ordre. d. Antall ganger de rå observasjonene er forskjellig, også kalt graden av differensiering. q. Størrelsen på det bevegelige gjennomsnittsvinduet, også kalt rekkefølgen av bevegelige gjennomsnitt. En lineær regresjonsmodell er konstruert, inkludert det angitte antallet og typen av termer, og dataene blir utarbeidet av en grad av differensiering for å gjøre det stasjonært, dvs. å fjerne trend og sesongstrukturer som negativt påvirker regresjonsmodellen. En verdi på 0 kan brukes til en parameter, noe som indikerer at du ikke bruker det elementet i modellen. På denne måten kan ARIMA-modellen konfigureres til å utføre funksjonen til en ARMA-modell, og til og med en enkel AR-, I - eller MA-modell. Ved å vedta en ARIMA-modell for en tidsserie antas det at den underliggende prosessen som genererte observasjonene, er en ARIMA-prosess. Dette kan virke åpenbart, men bidrar til å motivere behovet for å bekrefte modellens forutsetninger i de røde observasjonene og i de resterende feilene i prognosene fra modellen. Deretter tar let8217s en titt på hvordan vi kan bruke ARIMA-modellen i Python. Vi starter med å legge inn en enkel univariate tidsserie. Stopp å lære Time Series å prognose den langsomme måten Registrer deg og få en GRATIS 7-dagers prognose for mini-kurs for tidsserier. Du får:. en leksjon hver dag levert til innboksen din. eksklusiv PDF-bok som inneholder alle leksjoner. tillit og ferdigheter til å jobbe gjennom egne prosjekter Shampoo Sales Datasett Dette datasettet beskriver månedlig antall salg av sjampo over en 3 års periode. Enhetene er et salgstall og det er 36 observasjoner. Det opprinnelige datasettet er kreditert til Makridakis, Wheelwright og Hyndman (1998). Last ned datasettet og legg det i din nåværende arbeidskatalog med filnavnet 8220 shampoo-sales. csv 8220. Nedenfor er et eksempel på å laste inn sjampo-salgsdatasettet med Pandas med en egendefinert funksjon for å analysere datatidsfeltet. Datasettet er baselined i et vilkårlig år, i dette tilfellet 1900. Først får vi et linjeplott av restfeilene, noe som tyder på at det fortsatt kan være noen trendinformasjon som ikke er tatt av modellen. ARMA Fit Residual Error Line Plot Neste, vi får en tetthet plott av gjenværende feilverdier, noe som tyder på feilene er Gaussisk, men kan ikke være sentrert på null. ARMA Fit Residual Error Density Plot Fordelingen av resterende feil vises. Resultatene viser at det faktisk er en forspenning i prediksjonen (et ikke-null-middel i residualene). Merk at selv om vi brukte hele datasettet for tidsserieanalyse, ville vi helst utføre denne analysen på bare treningsdatasettet når vi utviklet en prediktiv modell. Deretter ser let8217s på hvordan vi kan bruke ARIMA-modellen til å lage prognoser. Rolling Forecast ARIMA Model ARIMA-modellen kan brukes til å prognostisere fremtidige tidspunkter. Vi kan bruke predict () - funksjonen på ARIMAResults-objektet for å gjøre spådommer. Den aksepterer indeksen av tidstrinnene for å gjøre spådommer som argumenter. Disse indeksene er i forhold til starten av treningsdatasettet som brukes til å lage spådommer. Hvis vi brukte 100 observasjoner i treningsdatasettet for å passe til modellen, vil indeksen for neste gang trinn for å lage en prediksjon bli spesifisert til prediksjonsfunksjonen som start101, end101. Dette ville returnere en matrise med ett element som inneholder prediksjonen. Vi vil også foretrekke at de prognostiserte verdiene er i den opprinnelige skalaen, hvis vi utførte noen differensiering (dgt0 ved konfigurering av modellen). Dette kan spesifiseres ved å sette typ argumentet til verdien 8216levels8217. typ8217levels8217. Alternativt kan vi unngå alle disse spesifikasjonene ved å bruke prognosen () - funksjonen, som utfører en ett-trinns prognose ved hjelp av modellen. Vi kan dele treningsdatasettet i tog og testsett, bruk togsettet til å passe til modellen, og generere en prediksjon for hvert element på testsettet. En rullende prognose kreves gitt avhengigheten av observasjoner i tidligere trinn for differensiering og AR-modellen. En viktig måte å utføre denne rullende prognosen på er å gjenskape ARIMA-modellen etter hver ny observasjon er mottatt. Vi overvåker manuelt alle observasjoner i en liste som heter historie som er podet med treningsdataene og til hvilke nye observasjoner som legges til hver gang det er tatt i bruk. Hvis du legger dette sammen, er det et eksempel på en rullende prognose med ARIMA-modellen i Python. Et linjeplot opprettes som viser de forventede verdiene (blå) sammenlignet med de forventede prognoseprognosene (rød). Vi kan se verdiene viser noe trend og er i riktig skala. ARIMA Rolling Forecast Line Plot Modellen kan bruke ytterligere innstilling av p, d, og kanskje til og med q-parametrene. Konfigurere en ARIMA-modell Den klassiske tilnærmingen for å tilpasse en ARIMA-modell er å følge Box-Jenkins Methodology. Dette er en prosess som bruker tidsserieanalyse og diagnostikk for å oppdage gode parametere for ARIMA-modellen. Sammendrag, trinnene i denne prosessen er som følger: Modellidentifikasjon. Bruk plott og sammendragsstatistikk for å identifisere trender, sesongmessighet og autoregresjonselementer for å få en ide om mengden differensiering og størrelsen på lagringen som kreves. Parametervurdering. Bruk en passende prosedyre for å finne koeffisientene til regresjonsmodellen. Modellkontroll. Bruk tomter og statistiske tester av restfeilene for å bestemme mengden og typen av temporal struktur som ikke er tatt av modellen. Prosessen gjentas til enten et ønskelig nivå av passform oppnås på prøveinnsamlingen eller ut-av-prøve observasjoner (for eksempel trening eller testdatasett). Prosessen ble beskrevet i den klassiske 1970-læreboken om temaet Time Series Analysis: Forecasting and Control av George Box og Gwilym Jenkins. En oppdatert 5. utgave er nå tilgjengelig hvis du er interessert i å gå dypere inn i denne typen modell og metodikk. Gitt at modellen kan passe effektivt på beskjedne størrelser av tidsserier, kan nettverkssøkingsparametrene være en verdifull tilnærming. I denne opplæringen oppdaget du hvordan du utvikler en ARIMA-modell for prognoser i tidsserier i Python. Spesielt lærte du: Om ARIMA-modellen, hvordan den kan konfigureres, og forutsetninger laget av modellen. Hvordan utføre en rask tidsserieanalyse ved hjelp av ARIMA-modellen. Hvordan bruke en ARIMA-modell til å prognose ut av prospektspådommer. Har du spørsmål om ARIMA, eller om denne opplæringen Still spørsmålene dine i kommentarene nedenfor, og jeg vil gjøre mitt beste for å svare. Ønsker å utvikle Time Series Forecasts med Python Utvikle dine egne prognoser i løpet av få minutter med bare noen få linjer med python-kode. Det dekker selvstudiumopplæringer og end-to-end-prosjekter på emner som: Laster inn data. visualisering. modellering. algoritme tuning. og mye mer. Endelig Ta tidsserien prognoser til dine egne prosjekter Hopp over akademikere. Bare resultater. Kevin 17. januar 2017 kl. 12:58 Gir meg mange feil: Traceback (siste samtale sist): File 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 2276, i konverteringsdatoparser (datecols), errors8217ignore8217) Fil 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linje 6, i parser returnere datetime. strptime (82161908217x, 8216Y-m8217) TypeError: strptime () argument 1 må være str, ikke numpy. ndarray Under håndtering av det ovennevnte unntaket oppstod et annet unntak: Traceback (siste samtale siste): Fil 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 2285, i omformeren dag første dag), Fil 8220pandassrcinference. pyx8221, linje 841, i pandas. lib. tryparsedates (pandaslib. c: 57884) Fil 8220pandassrcinference. pyx8221, linje 838, i pandas. lib. tryparsedates (pandaslib. c: 57802) Fil 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linje 6, i parser returnere datetime. strptime (82161908217x, 8216Y-m8217) Fil 8220Userskevinoost anacondalibpython3.5strptime. py8221, linje 510, i strptimedatetime tt, fraksjon strptime (datastring, format) File 8220Userskevinoostanacondalibpython3.5strptime. py8221, linje 343, i strptime (datastring, format)) ValueError: tidsdata 8216190Salg av sjampo over en treårsperiode8217 stemmer ikke overens med format 8216Y-m8217 Under håndtering av det ovennevnte unntaket oppstod et annet unntak: Traceback (siste samtale siste): File 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linje 8, i serie readcsv (8216shampoo-sales. csv8217, header0, parsedates0, indexcol0, squeezeTrue, dateparserparser) File 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 562, i parserf-returlese (filepathorbuffer, kwds) Fil 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 325, i Read Return parser. read () Fil 8220Userskevinoostanacondalibpython3.5site - pakkerpandasioparsers. py8221, linje 815, i read ret self. engine. read (nrows) File 8220Userskev inoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 1387, i read index, navngiv self. makeindex (data, alldata, navn) File 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 1030, i makeindex indeks self. aggindex (indeks) File 8220Userskevinoostanacondalibpython3. 5site-packagespandasioparsers. py8221, linje 1111, i aggindex arr self. dateconv (arr) File 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linje 2288, i omformer returnerer genericparser (dateparser, datecols) Fil 8220Userskevinoostanacondalibpython3.5site-packagespandasiodateconverters. py8221, linje 38 , i genericparser resultsi parsefunc (args) File 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linje 6, i parser returnere datetime. strptime (82161908217x, 8216Y-m8217) Fil 8220Userskevinoostanacondalibpython3.5strptime. py8221, linje 510, i strptimedatenime tt, fraksjon strptime (datastring, format) Fil 8220Userskevinoostanacondalibpython3.5strptime. py8221, lin e 343, i strptime (datastring, format)) ValueError: tidsdata 8216190Salg av sjampo over en treårsperiode8217 stemmer ikke overens med format 8216Y-m8217 Prosess ferdig med utgangskode 1 Hjelp vil bli mye verdsatt. Det ser ut til at det kan være et problem med datafilen. Åpne csv i en tekstredigerer og bekreft at overskriftslinjen ser fornuftig ut. Bekreft også at du ikke har noen ekstra data på slutten av filen. Noen ganger laster datamarket filene ned med bunntekstdata som du må slette. NGUYEN Quang Anh 19. januar 2017 klokka 18:28 La oss si at jeg har en tidsseriedata med mange attributter. For eksempel vil en rad ha (hastighet, drivstoff, lufttrykk), hvordan kunne vi lage en modell ut av dette. verdien av hver kolonne kan påvirke hverandre, slik at vi ikke kan foreta prognoser utelukkende på en kolonne. Jeg google mye, men alt eksempelet I8217ve funnet hittil bare arbeid på tidsserier med 1 attributt. Dette kalles multivariate tidsserier prognoser. Lineære modeller som ARIMA ble ikke designet for denne typen problem. Generelt kan du bruke lagbasert representasjon av hver funksjon og deretter bruke en standard maskininlæringsalgoritme. Jeg håper å ha noen opplæringsprogrammer om dette snart. Muyi Ibidun 7. februar 2017 klokka 9:36 Ditt problem passer til hva VAR (Vector Autoregression) - modellene er designet for. Se følgende koblinger for mer informasjon. Jeg håper dette hjelper ditt arbeid. Kelvid 20. januar 2017 kl. 11:55 Hei, vil du ha et eksempel på det sesongmessige ARIMA-innlegget jeg har installert siste statistikkmodellmodulen, men det er en feil med importen av SARIMAX. Gjør hjelp hvis du klarer å finne ut det. Takk. Sebastian 31 januar 2017 kl 03:33 God post Jason Jeg har et par spørsmål: 8211 Bare for å være sikker. Modelfit. forecast () er single-step forutsigelser og modelfit. predict () er for flere trinn fremover prognoser 8211 Jeg jobber med en serie som synes minst ganske lik sjampo-serien (ved inspeksjon). Når jeg bruker forutsi på treningsdataene, får jeg også dette zig-zag-mønsteret i spådommen. Men for testdataene, er prediksjonen mye jevnere og ser ut til å mette på noe nivå. Forventer du dette Hvis ikke, hva kan det være feil Ja, prognose () er for ett trinns prognoser. Du kan gjøre ett trinns prognoser med forutsigelse (), men det er mer arbeid. Jeg ville ikke forvente at prediksjon utover noen få skritt for å være veldig nøyaktig, hvis det er spørsmålet ditt Sebastian 3. februar 2017 klokka 9:25. Takk for svaret om det andre spørsmålet. Ja, du har riktig, prediksjonen er ikke veldig nøyaktig. Men dessuten har de forutsagte tidsseriene et helt annet frekvensinnhold. Som sagt, det er glatt og ikke zig-zaggy som de opprinnelige dataene. Er dette normalt eller gjør jeg noe galt. Jeg har også prøvd flere trinns prediksjon (modelfit. predict ()) på treningsdataene, og prognosen ser ut til å ha mer eller mindre det samme frekvensinnholdet (mer zigzaggy) som dataene jeg prøver å forutsi. Hei Sebastian, jeg ser. Når det gjelder å forutse treningsdatasettet, har modellen tilgang til virkelige observasjoner. For eksempel, hvis du forutsier de neste 5 obs et sted i treningsdatasettet, vil det bruke obs (t4) å forutsi t5 heller enn prediksjon (t4). Ved forutsigelse utover slutten av modelldataene, har det ikke anledning til å foreta spådommer (med mindre du gir dem), har den bare tilgang til forutsigelsene det har gjort for tidligere tidstrinn. Resultatet er feilforbindelsen og tingene går fort av skinnene (flat prognose). Gjør det fornuftig hjelp James Zhang 10. februar 2017 kl 19:42 Takk for innlegget, veldig godt skrevet Jeg har et spørsmål: Så jeg brukte din tilnærming til å bygge modellen, men når jeg prøver å prognose dataene som er ute av prøven, jeg kommenterte obs testet og endre history. append (obs) til history. append (yhat), og jeg fikk en flat prediction8230 så hva kan være grunnen og hvordan gjør du faktisk ut-av - utvalgsprognoser basert på modellen montert på togdatasett Mange takk Hver løkke i rullende prognose viser deg hvordan du gjør et ett trinn ut av prognosen. Tren ARIMA på alle tilgjengelige data og anropsvarsel (). Hvis du vil utføre en multi-trinns prognose, må du faktisk behandle tidligere prognoser som 8220observations8221 og bruke dem til senere prognoser. Du kan gjøre dette automatisk ved hjelp av predict () - funksjonen. Avhengig av problemet, er denne tilnærmingen ofte ikke dyktig (for eksempel en flat prognose). James 16. februar 2017 klokken 02:03

No comments:

Post a Comment