Flytte Gjennomsnittet Største Lag
Tidsforsinkelse mellom Mars og Earth Spacecraft hendelsestid vs Earth mottar tid Et bilde av Mars Express-forsinkelsesskjermen på kontrollsystemet, som viser oss de kritiske tallene for enveislystid, toveislystid og avstanden fra jorden. En av de vanskeligste tingene med å drive et romfartøy rundt Mars (for ikke å nevne de forskjellige tidssonene), sammenlignet med Jorden, er at det er så langt unna. Mars er så langt unna at det tar ganske lang tid radiosignaler til komme fra romfartøyet tilbake til jorden. Under nysgjerrighet EDL, vil denne forsinkelsen være 13 minutter, 48 sekunder, omtrent midtveis mellom minimumsforsinkelsen på rundt 4 minutter og maksimalt rundt 24 minutter. Dette gjør det til en utfordring å betjene Mars Express fordi det er vanskelig å ha en samtale med romskipet, eller reagere hvis det skjer noe om bord. Hvis det er et problem og romfartøyet forteller oss, vet vi ikke i 13 minutter, og selv om vi reagerer med en gang, er det en annen 13 minutter før instruksjonene våre kommer tilbake til Mars, det er mye som kan skje om en halv time på Mars (for eksempel en hel nysgjerrighet landing) For å holde Mars Express flyr trygt, laster vi alle kommandoene for oppdraget på forhånd og bygget i mye autonomi for å la romskipet ta vare på seg selv, du kan si at for nysgjerrighetslandingen kjørte helt på autopilot Forsinkelsen er ingenting å gjøre med romfartøyet eller maskinvaren på bakken, det kan ikke forbedres av en raskere datamaskin eller en kraftigere radio. Faktisk er det å adlyde universets grunnleggende fartgrense lysets hastighet. På 1,079,000,000 kmhour, lyset er ganske raskt, du kan komme herfra til månen på litt over et sekund, men det understreker bare hvor langt unna Mars er. Alt lys (eller elektromagnetisk stråling, som inkluderer radiosignaler) går opp til denne hastigheten, og radiobølger fra jord til Mars Express og tilbake er ikke noe unntak. Ta en titt på Wikipedia-artikkelen om lysets hastighet, og du vil se hvordan Einstein kom i 1905 på begrepet denne kosmiske fartsgrensen. Fremfor alt, for morgendagens dekning av nysgjerrighetslandingen, gjør det det utfordrende for oss å trene når vi skal fortelle hva som skjer (som du har sett på vår tre kolonne-tidslinje) På ESOC snakker vi om to forskjellige tidspunkter, SCET (Spacecraft Event Time) og jord mottatt tid (ERT). Den første er hva som faktisk skjer i Mars akkurat nå, selv om vi ikke vil høre om det før over 13 minutter senere, en gang vi kaller ERT. Forsinkelsen mellom de to kalles vanligvis One-Way Light Time (OWLT), og tiden for en melding til å gå til Mars, og å komme tilbake, er toveis lysetid (TWLT) eller rundturstid. Under hele vår dekning, følg godt NASAs ledelse og kommuniser generelt hendelser her og på Twitter til deg i ERT fordi det er da det egentlig vet hva som skjedde. Hvis vi kommuniserer noe i SCET, så fortell at du (og vi også) ikke blir forvirret, det er alt i det morsomme med å utforske Solsystemet 80 tanker om ldquo Tidsforsinkelse mellom Mars og Earth rdquo Nei, alle bølger reiser på samme hastighet. Det tar lys åtte minutter på en enveis tur, 16 minutter på en toveis tur. Vennligst lær inn i fysikk En foton er bærerpartikkelen for både synlig lys og radiobølger, som begge er former for elektromagnetisk energi, bare ved forskjellige frekvenser. Photonic energi (som jeg aldri har hørt om) ville være synonymt med elektromagnetisk energi. Lys, varme, gamma, radio, mikrobølger, ultrafiolett - alle er mediert av fotonpartikler, men har også egenskaper av bølger, og dermed frekvenskarakteristikken. Det er lettest å tenke på dem som bølger mens de reiser, men partikler når de slår noe. Og disse tallene gjelder bare for lys som reiser i vakuum. Lys som passerer gjennom materie, reiser målbart langsommere. Jeg tror at noen laboratorier nylig har utført et eksperiment der de stoppet lyset inne i et stoff ved å bremse det waaaaaay ned på en eller annen måte. Vet ikke hvordan de gjorde det, jeg leste ikke hele greia. vil det være grunn til at visse frekvenser av elektromagnetisk energi beveger seg raskere da de samhandler mindre med de fleste former for materie og dermed har mindre forstyrrelser når de reiser store avstander enn andre bølgelengder som reiser på samme vei og avstand for eksempel, utledet lys sammenlignet med gamma - radisjon, utledet lys ville ha en høyere sjanse til å interagere med et medium sammenlignet med gammarays som forsinker bølgelengden når den passerer gjennom små mengder materie. Kan man si at dette ville resultere i gammarays å ha en raskere netthastighet i gjennomsnitt feil. Tillat meg å sitere direkte fra artikkelen du nettopp har lest siden du synes å ha savnet det. På 1,079,000,000 kmhour, lyset er ganske raskt, du kan komme herfra til månen på litt over et sekund, men det understreker bare hvor langt unna Mars er. Alt lys (eller elektromagnetisk stråling, som inkluderer radiosignaler) går opp til denne hastigheten, og radiobølger fra jord til Mars Express og tilbake er ikke noe unntak. Tiden fra Jorden til Mars varierer mellom 4 og 24 minutter fordi jorden (og mars) både binder solen, ikke hverandre. Avstanden mellom dem kan derfor endre seg ganske dramatisk avhengig av hvor vi er i våre respektive baner. Når Mars ligger rett bak Jorden på nærmeste mulige punkt, er det bare fire minutter unna. Når det er på farthes punktet motsatt oss bak Sola, er det 24 minutter unna. Solen i mellomtiden, som vi bane, forblir på omtrent 8 minutter unna, siden vår bane rundt Sola er svært nær sirkulær. En annen oppmerksomhet, forutsatt at Mars også er en sirkulær bane (som det ikke er), kan du anta at avstanden fra mars til sola er omtrent 12 minutter og antyder at maksimumsavstanden vil være 8 12 som bare vil være 20 minutter. Men dette er ikke tilfelle siden Mars-bane er noe eliptisk og i et litt annet plan fra jordens bane, så vel som muliggjør at de kan være så fjernt som 24 minutter. Bare kom over dette: Radiosignaler er elektromagnetiske bølger, som lys eller røntgen. Hastigheten til elektromagnetiske bølger i vakuum, er 300000kmsek (omtrentlig). For å kunne beregne reisetid med denne hastigheten fra Jorden til Mars, må vi vite avstanden. Når Mars og Jorden er på motsatte sider av Solen, er avstanden den største: ca. 378 millioner km. Tiden som trengs for en elektromagnetisk bølge for å dekke denne avstanden er omtrent: 21 minutter. Den nærmeste avstanden mellom Mars og Jorden er 78 millioner km, tiden i dette tilfellet er: 4.3 min. Så tiden for reise mellom jord og mars er mellom 4,3 minutter og 21 minutter, avhengig av den faktiske avstanden mellom de to planetene. Shab, du beregner som om det er 2D-plan, mens DoctorZuber allerede nevnte jorden og Mars-elipsene er av forskjellig plan. Hvis jorden er på den ene siden av solen og mars er på den andre siden, så er avstanden fra jorden til mars større enn fra jorden til solen. Virker ganske rett frem. All elektromagnetisk stråling beveger seg ved lysets hastighet. Gladson har feil. Både jord og mars er i bane rundt solen. Vi gjør turen på 265 jorddager. Mars krever 669 jorddager. Mars betyr orbital radius til solen er 1,6 ganger den av jorden. Vi kan være mye nærmere Mars enn solen, eller 2,6 ganger så langt unna, avhengig av våre relative orbitalstillinger. Rundtur radio tid avhenger av hvor jord og mars er i forhold til solen. Hvis vi er på vårt nærmeste punkt til mars, er RT-transittid 4 minutter. Hvis vi er på motsatte sider av solen, er RT-tiden 24 minutter. Det varierer, fordi jorden og Mars bane solen med forskjellige hastigheter. Noen ganger er de på samme side av solen, og ved nærmeste tilnærming tar lyset bare ca 3 minutter å reise mellom de to. Noen ganger er de på motsatt side av solen, og det tar opptil 22 minutter. Når det gjelder de andre svarene, er forskjellen mellom lyshastighet og radiobølger ubetydelig over disse korte avstandene. Avhenger av posisjonens navn på jord og Mars. Hvis vi er på samme side av solen, er vi nærmere. Hvis planeter er på motsatt side av solen. Solen er nærmere. Solafstanden fra jorden er relativt konstant. Mars er det ikke. Varges, vi er ikke nødvendigvis den samme siden av solen samtidig - så den lengste tiden er for når jorden og Mars er 180 grader motsatte hverandre og begge ved aphelion, og den korteste ville være når vi begge er like , med Mars ved perihelion og Earth at aphelion .: Nå har du det fornuftig, men på det tidspunktet, hvor mye lengre vil det ta solens lys for å nå MarsDigital Camera Shutter Lag forsterker Startup Time Shutter Lag - Hva er det En av de mest frustrerende problemer som noen mennesker trer i med digitalkameraer, er karakteristikken kjent som lukkertid. Hvor mange ganger har du ventet på det rette øyeblikk for å ta et skudd, bare for å tilbringe neste sekund, venter på at kameraet skal ta bildet, hvis i det hele tatt, har det perfekte skuddet forsvunnet fra visning. Dette er lukkertid. Tiden fra når du trykker utløserknappen (dvs. avtrekkeren) til kameraet faktisk tar bildet, kalles totalt utløserslag. Total lukkertid er kombinasjonen av to prosesser på jobb: autofokusforsinkelsen og lukkerutløsningen. Autofokus Lag - Så snart du trykker på lukkerknappen, forsøker kameraet generelt å søke etter et passende fokuspunkt. Denne autofokusmekanismen er ofte veldig sakte, og bidrar mest til det totale lagret. I punkt og skyte kameraer, er den fysiske linjen fokusert frem og tilbake med en motor til kameraet bestemmer at fokuset er riktig. Selvfølgelig siden vi må vente på at en motor skal bevege seg i begge retninger, vil forsinkelsen bli betydelig. Med digitale speilreflekskameraer, gir en avansert kontrollkrets med lukket sløyfe et raskt estimat av riktig fokusavstand, uten å måtte bevege linsen sakte frem og tilbake. Merk at alle kameraer vil ta lengre tid til autofokus hvis miljøet er mørkt eller det fotograferte objektet har dårlig kontrast (noe som gjør det vanskeligere for kameraet å låses på). Lukkerutløserlag - Når kameraet har bestemt riktig fokusavstand, utløser kameraet den elektroniske eller fysiske lukkermekanismen. På noen billigere kameraer kan denne prosessen ta en moderat mengde tid, men det er vanligvis ikke så signifikant som autofokusforsinkelsen. Lukkerutløsningen er den tiden det tar å ta bildet hvis man har quotpre-focusedquot (dvs. hold ned lukkerknappen halvveis) eller brukt manuell fokusmodus. Totalt lag - summen av autofokus lag og lukkerutløserlag. Dette er forsinkelsen oftest sett når quotpre-focusingquot ikke er gjort, eller i tider når man prøver å ta et bilde raskt (dvs. uten å sette opp det). Tydeligvis blir jo større totalforsinkelsen for et kamera, jo mer merkbar og frustrerende forsinkelsen blir. Ved innkjøp av et nytt kamera bør man nøye sammenligne forskjellene i totalforsinkelse mellom ulike modeller, da noen kameraer er mye raskere enn andre i denne forbindelse. Pass på at du sammenligner tiden det tar å skyte det samme objektet (som forskjellige objekter vil føre til forskjellige autofokusforsinkelser). Sammenligning av startforsinkelsesverdier for lukker Lag amp i følgende tabell er i sekunder. Referansekolonnen vil inneholde koblinger til kildene for hvert datapunkt. Når flere referanser brukes til dataene, vises gjennomsnittet, sammen med rekkevidde (min-maks) i parentes. Det er svært viktig å merke seg at forskjeller i målemetoder og resultatkvalitet gjør direkte sammenligninger vanskelig. Derfor bør sammenligninger mellom modeller utført av samme kilde i teorien være rettferdig, mens sammenligninger mellom forskjellige kilder kan være mindre nøyaktige. Flere kameraer vil bli lagt over tid. Legg merke til at det ofte er vanskelig å teste for lukkertid, og at det er en viss grad av variasjon i avlesningene som ulike kilder kan indikere. Dette er spesielt tilfellet med totalforsinkelse, da det er svært avhengig av linsens oppsett. Derfor, hvor det har blitt utført mutliple totalforsøkstester for et kamera av samme tester, er den raskeste måling inkludert. MERK: Alle tider i tabellen under er i sekunder (S). Multipliser med 1000 for å konvertere til millisekunder (mS). Sony Point amp Skyt 9ms shutter lag Ja, så overraskende som det, har Sony tilsynelatende lukkerforsinkelser på så lite som 9ms. Denne verdien har blitt publisert på Sony-siden med flere av deres punkt - og skyte-modeller under Spesifikasjoner. Man bør alltid ta produsentens ytelsesspesifikasjoner med et saltkorn, men det kan være en viss sannhet til dette som en annen tester (Imaging-Resource) kom opp med samme figur. Det er imidlertid viktig å merke seg at dette er uten autofokus. Ved å sette autofokus i bildet faller den totale lagetiden mer i tråd med en typisk PampS-digikam. Kilder for Digital Camera Testing Følgende nettsteder tilbyr detaljert testing av digitale kameraer, inkludert lukkertid. Kvaliteten på testene varierer, men testoppsettene som brukes på hver av de følgende stedene, er rimelige for et utgangspunkt: Lesere Kommentarer: Vennligst legg igjen dine kommentarer eller forslag under Johnny V. quotHep Catquot Brennan God dag Jeg håper alle nyter en hyggelig en. Som Per kommenterer Liliken: Hva med lagene mellom å ta bilder, det er den frustrerende en for meg nå. Jeg tar et bilde og må vente til kameraet blir klar til å ta den neste. Hvordan kalles laget Takk. Yep Det kan også være en veldig forstyrrende LAG. For et ekstremt eksempel, ta en 2003 Sony Mavica med mini-CD-RW inni den for å ta opp bilder. Du tar et bilde og enheten må Behandle dataene og skrive den til en mini-CD-RW. Jeg er sikker på at alle kan forestille seg hvor lenge og frustrerende det øyeblikket kunne være. Jeg tilfeldigvis har en gammel Mavica, tar fortsatt gode bilder, men nå er det henvist til nødstilfelle og samtalepart, fordi den virkelige Total Lag er mord. Jeg ville ringe nummeret som er nevnt her: Process Lag. og jeg tror tallet for prosesslag skal inkluderes med totallag. Fordi THATS Theee Number, som virkelig forårsaker ALLE Frustrasjonen, trykker du på knappen - vent på fokus - lukkerutløser - vent på behandling - gjenta. I mellomtiden forsvinner øyeblikkene og skuddene inn i historien for evigheten. aldri å bli sett igjen. Jeg tror ikke produsentene skal gjøre disse numrene lett tilgjengelige. Det ser ut til at det er opp til One å gjøre omfattende forskning, og bla gjennom mange nettsteder og fora for dataene. men som det ses her. det er vanskelig å finne en komplett liste. Jeg har funnet noen Data på SnapSort og (tro det eller ikke) BestBuy. BestBuy har en av de beste digitale kamera-sammenligningstabellene jeg har funnet ennå. Den har fin størrelse liste over filtre for å finne en gruppe kameraer å sammenligne. Sjekk deretter kameraene du vil sammenligne, opptil 4 eller 5, og klikk deretter på Sammenlign og du får spesifikasjonene for hvert kamera, side ved side for enkel sammenligning. For øyeblikket: Jeg filtrerte Samsung, Lav lysfølsomhet, Burst Mode, Opptil 200, WiFi. fikk en liste over kameraer. sammenlignet 2. valgte en Samsung WB350F. Boom Ease-as-Peas Good Luck Glad PhotoBugging Nyt alle gode oppføringer. Eventuelle detaljer tilgjengelig på Nikon D7000 Har noen gjort noe arbeid på lag som er forbundet med direkte utløsning av flashenheter Hei, tusen takk for denne utmerkede informasjonen Veldig nyttig og godt skrevet. Vi leter etter et nytt kamera. Vi hadde to SONY Cybershot opp til kwow (ikke så bra med hensyn til pre-fokusering og shutter lag). Vi vurderer å kjøpe en SONY HX 300 eller en NIKON P520. Hva med dem angående totalforsinkelse Takk på forhånd for all informasjon eller mening du måtte ha. Jeg har sett på diagrammet ditt og tallene er ikke enige med side om side ekteverdenerfaring. For eksempel angir diagrammet at Canon 10D, 20D og Rebel XT har raskere totalt lukkerlag enn en ID Mark II. Jeg har en Canon 10D, 20D og 1D Mark II, og jeg kan forsikre deg om at det er en verden med forskjell, med 1D Mark II som imponerende raskere enn noen av disse kameraene. Jeg så på referansene dine på noen kameraer, og ser at du brukte data fra bildebehandling, og mens du ser på dataene, virker beskrivelsen rimelig, dataene må faktisk være feil. En mulighet er at linsen som brukes i testene (ikke en L-linse) er en begrensende faktor, ikke kameraet. Eksempel: 1D Mark II er forbløffende raskt sammenlignet med 10D ved bruk av de samme linsene på samme emne, (sammenligning av flere linser). For tiden gjør jeg dyrelivsfotografering med 1D Mark II med 10D som backup, ofte bytte linser (for eksempel 500 mm f L IS på stativ og 300 mm f4 L IS håndholdt). For å rangere 10D totalt lag på 0,189 sekunder og 1D Mark II på 0.235 sekunder er bare feil, med mindre du setter den raskeste autofokuseringslinsen på 10D og den langsomste linsen på 1D Mark II. Jeg skyter mye dyrelivstiltak, og responstiden på 1D Mark II er godt under 0,1 sekund (total lagetid i min erfaring i flere skyteforhold). 10D føles som et sakte punkt og skyter i sammenligning. I virkelige forhold vil jeg ha to problemer med 10D: 1) uregelmessig handling (f. eks. Fugl i flukt) med komplisert bakgrunn (f. eks. Fjerne trær) har problemer med å låse på motivet og ikke bakgrunnen, og 2) mens sporing et motiv, hvis fokuspunktet er flyttet fra motivet (for eksempel på grunn av manglende evne til å spore uregelmessig bevegelse), vil kameraet aldri gjenvinne fokus til motivet er stoppet. På 1D Mark II har jeg ikke disse problemene. Rapporter fra folk i feltet sier at 20D har de samme problemene som 10D. Men med 1D Mark II, kan jeg miste og gjenopprette fokuspunktet på et bevegelige emne i det som virker som godt under 0,1 sekund. Fokusnøyaktigheten er mye bedre på 1DII også (har hatt mer enn 50 ut av fokusaksjonsbilder på en 10D, nesten alt i godt fokus med 1DII) med typiske store fugler i flyturen (f. eks. Ørne, kraner, egrets). Så, ditt bord impulseadventurephotoshutter-lag. html er svært mistenkt, uavhengig av kilden til dataene. Roger (Bilder på: clarkvision) Hei Roger - Takk for god innsikt i ytelse utenfor hva tallene ser ut til å bety. Jeg tror at den eneste rettferdige måling for sammenligningsformål kan være lukkertid. ikke totalforsinkelse som utledet fra et gjennomsnitt av testresultater. Dette er grunnen til at jeg opplister de resulterende nedre og øvre grensene sammen med gjennomsnittet for å vise avviket. Inkludert autofokus i total lagringstid er svært avhengig av AF-modus, objektivvalg og scenekontrast som du med rette peker på. Du vil merke at gjennomgangssidene (3 av dem, ikke bare billedressurs) alle ga målinger i området 230 til 240 ms for Canon 1d Mk II. Du kan imidlertid se at resultatene gitt for 10D og 20D har et mye bredere spredt, fra 146 opp til 240 ms oppført for Canon 1D mk II. Så, mens gjennomsnittet kan vise som 189, kan den rimelige sammenligningsverdien være 240 ms (identisk med Canon 1D mkII). Jeg er ikke nødvendigvis enig i at tallene er feil. Å ta de største totale forsinkelsestidene i sammenligningen vil gi lignende resultater, men de er sannsynligvis fanget i en meget syntetisk innstilling (høy kontrast statisk mål i et godt opplyst miljø). Selvfølgelig vil din virkelige opplevelse opplyse svakheten i autofokusetidene i 10D og 20D, hvor bevegelsesservosporing og lave kontrastforhold virkelig kan forringe 10D eller 20Ds beste case-ytelse. Når det er sagt, er lukkerlaget faktisk rapportert som betydelig raskere på 1d Mark II sammenlignet med de andre prosumerkameraene. Ideelt sett ville vi ha en objektiv, reproduserbar sammenligning av totale lukkerlag med samme oppsett og objektiv, men med typiske virkelige scenarier. Men dette er utenfor omfanget av oppsettet for de fleste kamerabehandlere. De ville trenge en mekanisert rigg som kunne gjengi bevegelsen, med noen digital teller i bildescenen (for å vurdere den virkelige forsinkelsen nøyaktig) og en fjernutløseren. Hvis noen setter opp dette for de fleste av de store dSLRene og med sammenlignbare linser (for eksempel L på Canon), ville dette være fantastisk. Dessverre tror jeg det må settes opp for et utvalg av resultater fra forskjellige anmeldere, alle med litt varierende oppsett. Håpet er at med nok vurderinger og resultater, vil gjennomsnittene være nyttige som et grov utgangspunkt for sammenligning. Igjen, tusen takk for at du har gitt ekte verden innsikt i ytelsen du har observert mellom kameraene. Denne tilbakemeldingen er ofte mye mer nyttig enn et annet syntetisk datapunkt. Flott galleri, BTW. En mans profesjonell hard arbeid fordeler millioner av menn og kvinner. Takk, kan du også snakke om hvilken som helst som er rask innen et prisklasse på U300. Jeg trenger et raskt kamera for å filme mine to hyperaktive småbarn. Diagrammet kan være perfekt hvis det har en annen kolonne som viser priser. Takk, Robin Dessverre kan jeg ikke legge til priser som jeg aldri ville kunne holde diagrammet oppdatert med alle avvikene i gateprisene over tid. Bruke R for Time Series Analysis Time Series Analysis Denne heftet forteller deg hvordan du bruk R statistikkprogramvaren til å utføre noen enkle analyser som er vanlige når du analyserer tidsseriedata. Dette heftet antar at leseren har noen grunnleggende kunnskaper om tidsserieanalyse, og hovedfokuset i heftet er ikke å forklare tidsserieanalyse, men heller å forklare hvordan man utfører disse analysene ved hjelp av R. Hvis du er ny i tidsserier analyse, og ønsker å lære mer om noen av konseptene som presenteres her, vil jeg anbefale Open University-boken 8220Time series8221 (produktkode M24902), tilgjengelig fra Open University Shop. I dette heftet bruker jeg tidsseriedatasett som har blitt gjort tilgjengelig av Rob Hyndman i hans tidsserier databibliotek på robjhyndmanTSDL. Hvis du liker dette hefte, kan du også sjekke ut brosjyren min ved å bruke R for biomedisinsk statistikk, litt-book-of-r-for-biomedical-statistics. readthedocs. org. og min hefte på å bruke R for multivariate analyse, little-book-of-r-for-multivariate-analysis. readthedocs. org. Les tidsseriedata Det første du vil gjøre for å analysere tidsseriedataene dine, er å lese det inn i R, og å plotte tidsserien. Du kan lese data inn i R ved hjelp av skanningsfunksjonen (), som forutsetter at dataene dine for suksessive tidspunkter er i en enkel tekstfil med en kolonne. For eksempel inneholder filen robjhyndmantsdldatamisckings. dat data om dødsårsaken til suksessive konger i England, som begynner med William the Conqueror (original kilde: Hipel og Mcleod, 1994). Datasettet ser slik ut: Bare de første linjene i filen har blitt vist. De tre første linjene inneholder noen kommentarer til dataene, og vi vil ignorere dette når vi leser dataene inn i R. Vi kan bruke dette ved å bruke 8220skip8221-parameteren i skanningsfunksjonen (), som angir hvor mange linjer øverst på filen å ignorere. For å lese filen til R, ignorerer de tre første linjene, skriver vi: I dette tilfellet er dødsaldoen til 42 påfølgende konger i England blitt lest inn i variabelen 8216kings8217. Når du har lest tidsseriedataene i R, er neste trinn å lagre dataene i en tidsserieobjekt i R, slik at du kan bruke R8217s mange funksjoner for å analysere tidsseriedata. For å lagre dataene i en tidsserieobjekt, bruker vi ts () - funksjonen i R. For eksempel, for å lagre dataene i variabelen 8216kings8217 som en tidsserieobjekt i R, skriver vi: Noen ganger angir du dataserierdataene du kan ha blitt samlet inn med jevne mellomrom som var mindre enn ett år, for eksempel månedlig eller kvartalsvis. I dette tilfellet kan du angi antall ganger dataene ble samlet inn per år ved å bruke 8216frequency8217-parameteren i ts () - funksjonen. For månedlige tidsseriedata angir du frekvens12, mens du for kvartalsvise tidsseriedata, stiller du frekvens4. Du kan også angi det første året som dataene ble samlet inn, og det første intervallet i det året ved å bruke parameteren 8216start8217 i ts () - funksjonen. For eksempel, hvis det første datapunktet tilsvarer andre kvartal 1986, ville du sette startc (1986,2). Et eksempel er et datasett av antall fødsler per måned i New York City, fra januar 1946 til desember 1959 (opprinnelig innsamlet av Newton). Disse dataene er tilgjengelige i filen robjhyndmantsdldatadatanybirths. dat Vi kan lese dataene i R, og lagre den som en tidsserieobjekt ved å skrive: På samme måte inneholder filen robjhyndmantsdldatadatafancy. dat månedlig salg til en suvenirbutikk på en strandby i Queensland, Australia, for januar 1987-desember 1993 (originale data fra Wheelwright og Hyndman, 1998). Vi kan lese dataene inn i R ved å skrive: Plotting Time Series Når du har lest en tidsserie i R, er det neste trinnet vanligvis å lage et plott av tidsseriedataene, som du kan gjøre med plot. ts () - funksjonen i R. For eksempel, for å plotte tidsserier av dødsaldoen til 42 påfølgende konger i England, skriver vi: Vi kan se fra tidspunktet plottet at denne tidsseriene sannsynligvis kunne beskrives ved hjelp av en additivmodell, siden tilfeldige svingninger i dataene er omtrent konstant i størrelse over tid. På samme måte, for å plotte tidsserier av antall fødsler per måned i New York City, skriver vi: Vi kan se fra denne tidsserien at det ser ut til å være sesongvariasjon i antall fødsler per måned: det er en topp hver sommer , og en trough hver vinter. Igjen ser det ut til at denne tidsserien trolig kunne beskrives ved hjelp av en additiv modell, da sesongmessige svingninger er omtrent konstant i størrelse over tid og synes ikke å avhenge av tidsserien, og tilfeldige svingninger synes også å være omtrent konstant i størrelse over tid. På samme måte, for å plotte tidsserien til det månedlige salget til souvenirbutikken på en strandbyby i Queensland, Australia, skriver vi: I dette tilfellet ser det ut til at en additivmodell ikke passer for å beskrive denne tidsserien, siden størrelsen av sesongmessige svingninger og tilfeldige svingninger synes å øke med nivået av tidsseriene. Dermed må vi kanskje forandre tidsserien for å få en transformert tidsserie som kan beskrives ved hjelp av en additivmodell. For eksempel kan vi forandre tidsserien ved å beregne den naturlige loggen til de opprinnelige dataene: Her ser vi at størrelsen på sesongmessige svingninger og tilfeldige svingninger i de loggformede tidsseriene ser ut til å være omtrent konstant over tid og gjøre ikke avhengig av tidsserienivået. Dermed kan de log-transformerte tidsseriene trolig bli beskrevet ved hjelp av en additivmodell. Dekomponeringstidsserie Avkomponering av en tidsserie betyr å skille den inn i komponentene, som vanligvis er en trendkomponent og en uregelmessig komponent, og hvis det er en sesongmessig tidsserie, en sesongbestemt komponent. Dekomponering av ikke-sesongdata En ikke-sesongmessig tidsserie består av en trendkomponent og en uregelmessig komponent. Nedbrytning av tidsseriene innebærer å prøve å skille tidsseriene inn i disse komponentene, det vil si estimering av trendkomponenten og den uregelmessige komponenten. For å estimere trendkomponenten i en sesongmessig tidsserie som kan beskrives ved hjelp av en additivmodell, er det vanlig å bruke en utjevningsmetode, for eksempel å beregne det enkle glidende gjennomsnittet av tidsseriene. SMA () - funksjonen i 8220TTR8221 R-pakken kan brukes til å glatte tidsseriedata med et enkelt bevegelige gjennomsnitt. For å bruke denne funksjonen må vi først installere 8220TTR8221 R-pakken (for instruksjoner om hvordan du installerer en R-pakke, se Hvordan installere en R-pakke). Når du har installert 8220TTR8221 R-pakken, kan du laste inn 8220TTR8221 R-pakken ved å skrive: Du kan da bruke 8220SMA () 8221-funksjonen til å glatte tidsseriedataene. For å bruke SMA () - funksjonen må du angi rekkefølgen (span) for det enkle glidende gjennomsnittet, ved hjelp av parameteren 8220n8221. For eksempel, for å beregne et enkelt bevegelige gjennomsnitt av rekkefølge 5, setter vi n5 i SMA () - funksjonen. For eksempel, som omtalt ovenfor, vises tidsserien til dødsaldoen til 42 påfølgende konger i England, ikke-sesongmessig, og kan sannsynligvis beskrives ved hjelp av en additivmodell, siden tilfeldige svingninger i dataene er omtrent konstant i størrelse over tid: Således kan vi prøve å estimere trendkomponenten i denne tidsserien ved å utjevne ved hjelp av et enkelt bevegelige gjennomsnitt. For å glatte tidsseriene ved å bruke et enkelt glidende gjennomsnitt av rekkefølge 3, og plotte de glatte tidsseriedataene, skriver vi: Det ser fortsatt ut til å være ganske mange tilfeldige svingninger i tidsseriene glattet ved hjelp av et enkelt glidende gjennomsnitt av rekkefølge 3. For å estimere trendkomponenten mer nøyaktig, vil vi kanskje prøve å utjevne dataene med et enkelt glidende gjennomsnitt av en høyere rekkefølge. Dette tar litt av prøve-og-feil, for å finne riktig mengde utjevning. For eksempel kan vi prøve å bruke et enkelt glidende gjennomsnitt av rekkefølge 8: Dataene jevnet med et enkelt glidende gjennomsnitt av rekkefølge 8 gir et tydeligere bilde av trendkomponenten, og vi kan se at de engelske kongers dødsår ser ut til å har gått ned fra om lag 55 år til rundt 38 år under regjering av de første 20 kongene, og deretter økt etter det til rundt 73 år ved slutten av regjeringen til den 40. konge i tidsseriene. Dekomponerende sesongdata En sesongbasert tidsserie består av en trendkomponent, en sesongkomponent og en uregelmessig komponent. Nedbrytning av tidsserien betyr å skille tidsseriene i disse tre komponentene: det vil si estimering av disse tre komponentene. For å estimere trendkomponenten og sesongbestanddelen av en sesongmessig tidsserie som kan beskrives ved hjelp av en additivmodell, kan vi bruke 8220decompose () 8221-funksjonen i R. Denne funksjonen anslår trend, sesongmessige og uregelmessige komponenter i en tidsserie som kan beskrives ved hjelp av en additiv modell. Funksjonen 8220decompose () 8221 returnerer et listobjekt som resultat der estimatene av sesongkomponenten, trendkomponenten og uregelmessig komponent lagres i navngitte elementer i listemodene, henholdsvis 8220seasonal8221, 8220trend8221 og 8220random8221. For eksempel, som omtalt ovenfor, er tidsserien av antall fødsler per måned i New York City sesongmessig med en topp hver sommer og gjennom hver vinter, og kan sannsynligvis beskrives ved hjelp av en additiv modell siden sesongmessige og tilfeldige svingninger synes å For å estimere trenden, sesongmessige og uregelmessige komponenter i denne tidsserien skriver vi: De estimerte verdiene for sesong-, trend - og uregelmessige komponenter lagres nå i variabler birthstimeseriescomponentsseasonal, birthstimeseriescomponentstrend og birthstimeseriescomponentsrandom. For example, we can print out the estimated values of the seasonal component by typing: The estimated seasonal factors are given for the months January-December, and are the same for each year. The largest seasonal factor is for July (about 1.46), and the lowest is for February (about -2.08), indicating that there seems to be a peak in births in July and a trough in births in February each year. We can plot the estimated trend, seasonal, and irregular components of the time series by using the 8220plot()8221 function, for example: The plot above shows the original time series (top), the estimated trend component (second from top), the estimated seasonal component (third from top), and the estimated irregular component (bottom). We see that the estimated trend component shows a small decrease from about 24 in 1947 to about 22 in 1948, followed by a steady increase from then on to about 27 in 1959. Seasonally Adjusting If you have a seasonal time series that can be described using an additive model, you can seasonally adjust the time series by estimating the seasonal component, and subtracting the estimated seasonal component from the original time series. We can do this using the estimate of the seasonal component calculated by the 8220decompose()8221 function. For example, to seasonally adjust the time series of the number of births per month in New York city, we can estimate the seasonal component using 8220decompose()8221, and then subtract the seasonal component from the original time series: We can then plot the seasonally adjusted time series using the 8220plot()8221 function, by typing: You can see that the seasonal variation has been removed from the seasonally adjusted time series. The seasonally adjusted time series now just contains the trend component and an irregular component. Forecasts using Exponential Smoothing Exponential smoothing can be used to make short-term forecasts for time series data. Simple Exponential Smoothing If you have a time series that can be described using an additive model with constant level and no seasonality, you can use simple exponential smoothing to make short-term forecasts. The simple exponential smoothing method provides a way of estimating the level at the current time point. Smoothing is controlled by the parameter alpha for the estimate of the level at the current time point. The value of alpha lies between 0 and 1. Values of alpha that are close to 0 mean that little weight is placed on the most recent observations when making forecasts of future values. For example, the file robjhyndmantsdldatahurstprecip1.dat contains total annual rainfall in inches for London, from 1813-1912 (original data from Hipel and McLeod, 1994). We can read the data into R and plot it by typing: You can see from the plot that there is roughly constant level (the mean stays constant at about 25 inches). The random fluctuations in the time series seem to be roughly constant in size over time, so it is probably appropriate to describe the data using an additive model. Thus, we can make forecasts using simple exponential smoothing. To make forecasts using simple exponential smoothing in R, we can fit a simple exponential smoothing predictive model using the 8220HoltWinters()8221 function in R. To use HoltWinters() for simple exponential smoothing, we need to set the parameters betaFALSE and gammaFALSE in the HoltWinters() function (the beta and gamma parameters are used for Holt8217s exponential smoothing, or Holt-Winters exponential smoothing, as described below). The HoltWinters() function returns a list variable, that contains several named elements. For example, to use simple exponential smoothing to make forecasts for the time series of annual rainfall in London, we type: The output of HoltWinters() tells us that the estimated value of the alpha parameter is about 0.024. This is very close to zero, telling us that the forecasts are based on both recent and less recent observations (although somewhat more weight is placed on recent observations). By default, HoltWinters() just makes forecasts for the same time period covered by our original time series. In this case, our original time series included rainfall for London from 1813-1912, so the forecasts are also for 1813-1912. In the example above, we have stored the output of the HoltWinters() function in the list variable 8220rainseriesforecasts8221. The forecasts made by HoltWinters() are stored in a named element of this list variable called 8220fitted8221, so we can get their values by typing: We can plot the original time series against the forecasts by typing: The plot shows the original time series in black, and the forecasts as a red line. The time series of forecasts is much smoother than the time series of the original data here. As a measure of the accuracy of the forecasts, we can calculate the sum of squared errors for the in-sample forecast errors, that is, the forecast errors for the time period covered by our original time series. The sum-of-squared-errors is stored in a named element of the list variable 8220rainseriesforecasts8221 called 8220SSE8221, so we can get its value by typing: That is, here the sum-of-squared-errors is 1828.855. It is common in simple exponential smoothing to use the first value in the time series as the initial value for the level. For example, in the time series for rainfall in London, the first value is 23.56 (inches) for rainfall in 1813. You can specify the initial value for the level in the HoltWinters() function by using the 8220l. start8221 parameter. For example, to make forecasts with the initial value of the level set to 23.56, we type: As explained above, by default HoltWinters() just makes forecasts for the time period covered by the original data, which is 1813-1912 for the rainfall time series. We can make forecasts for further time points by using the 8220forecast. HoltWinters()8221 function in the R 8220forecast8221 package. To use the forecast. HoltWinters() function, we first need to install the 8220forecast8221 R package (for instructions on how to install an R package, see How to install an R package ). Once you have installed the 8220forecast8221 R package, you can load the 8220forecast8221 R package by typing: When using the forecast. HoltWinters() function, as its first argument (input), you pass it the predictive model that you have already fitted using the HoltWinters() function. For example, in the case of the rainfall time series, we stored the predictive model made using HoltWinters() in the variable 8220rainseriesforecasts8221. You specify how many further time points you want to make forecasts for by using the 8220h8221 parameter in forecast. HoltWinters(). For example, to make a forecast of rainfall for the years 1814-1820 (8 more years) using forecast. HoltWinters(), we type: The forecast. HoltWinters() function gives you the forecast for a year, a 80 prediction interval for the forecast, and a 95 prediction interval for the forecast. For example, the forecasted rainfall for 1920 is about 24.68 inches, with a 95 prediction interval of (16.24, 33.11). To plot the predictions made by forecast. HoltWinters(), we can use the 8220plot. forecast()8221 function: Here the forecasts for 1913-1920 are plotted as a blue line, the 80 prediction interval as an orange shaded area, and the 95 prediction interval as a yellow shaded area. The 8216forecast errors8217 are calculated as the observed values minus predicted values, for each time point. We can only calculate the forecast errors for the time period covered by our original time series, which is 1813-1912 for the rainfall data. As mentioned above, one measure of the accuracy of the predictive model is the sum-of-squared-errors (SSE) for the in-sample forecast errors. The in-sample forecast errors are stored in the named element 8220residuals8221 of the list variable returned by forecast. HoltWinters(). If the predictive model cannot be improved upon, there should be no correlations between forecast errors for successive predictions. In other words, if there are correlations between forecast errors for successive predictions, it is likely that the simple exponential smoothing forecasts could be improved upon by another forecasting technique. To figure out whether this is the case, we can obtain a correlogram of the in-sample forecast errors for lags 1-20. We can calculate a correlogram of the forecast errors using the 8220acf()8221 function in R. To specify the maximum lag that we want to look at, we use the 8220lag. max8221 parameter in acf(). For example, to calculate a correlogram of the in-sample forecast errors for the London rainfall data for lags 1-20, we type: You can see from the sample correlogram that the autocorrelation at lag 3 is just touching the significance bounds. To test whether there is significant evidence for non-zero correlations at lags 1-20, we can carry out a Ljung-Box test. This can be done in R using the 8220Box. test()8221, function. The maximum lag that we want to look at is specified using the 8220lag8221 parameter in the Box. test() function. For example, to test whether there are non-zero autocorrelations at lags 1-20, for the in-sample forecast errors for London rainfall data, we type: Here the Ljung-Box test statistic is 17.4, and the p-value is 0.6, so there is little evidence of non-zero autocorrelations in the in-sample forecast errors at lags 1-20. To be sure that the predictive model cannot be improved upon, it is also a good idea to check whether the forecast errors are normally distributed with mean zero and constant variance. To check whether the forecast errors have constant variance, we can make a time plot of the in-sample forecast errors: The plot shows that the in-sample forecast errors seem to have roughly constant variance over time, although the size of the fluctuations in the start of the time series (1820-1830) may be slightly less than that at later dates (eg. 1840-1850). To check whether the forecast errors are normally distributed with mean zero, we can plot a histogram of the forecast errors, with an overlaid normal curve that has mean zero and the same standard deviation as the distribution of forecast errors. To do this, we can define an R function 8220plotForecastErrors()8221, below: You will have to copy the function above into R in order to use it. You can then use plotForecastErrors() to plot a histogram (with overlaid normal curve) of the forecast errors for the rainfall predictions: The plot shows that the distribution of forecast errors is roughly centred on zero, and is more or less normally distributed, although it seems to be slightly skewed to the right compared to a normal curve. However, the right skew is relatively small, and so it is plausible that the forecast errors are normally distributed with mean zero. The Ljung-Box test showed that there is little evidence of non-zero autocorrelations in the in-sample forecast errors, and the distribution of forecast errors seems to be normally distributed with mean zero. This suggests that the simple exponential smoothing method provides an adequate predictive model for London rainfall, which probably cannot be improved upon. Furthermore, the assumptions that the 80 and 95 predictions intervals were based upon (that there are no autocorrelations in the forecast errors, and the forecast errors are normally distributed with mean zero and constant variance) are probably valid. Holt8217s Exponential Smoothing If you have a time series that can be described using an additive model with increasing or decreasing trend and no seasonality, you can use Holt8217s exponential smoothing to make short-term forecasts. Holt8217s exponential smoothing estimates the level and slope at the current time point. Smoothing is controlled by two parameters, alpha, for the estimate of the level at the current time point, and beta for the estimate of the slope b of the trend component at the current time point. As with simple exponential smoothing, the paramters alpha and beta have values between 0 and 1, and values that are close to 0 mean that little weight is placed on the most recent observations when making forecasts of future values. An example of a time series that can probably be described using an additive model with a trend and no seasonality is the time series of the annual diameter of women8217s skirts at the hem, from 1866 to 1911. The data is available in the file robjhyndmantsdldatarobertsskirts. dat (original data from Hipel and McLeod, 1994). We can read in and plot the data in R by typing: We can see from the plot that there was an increase in hem diameter from about 600 in 1866 to about 1050 in 1880, and that afterwards the hem diameter decreased to about 520 in 1911. To make forecasts, we can fit a predictive model using the HoltWinters() function in R. To use HoltWinters() for Holt8217s exponential smoothing, we need to set the parameter gammaFALSE (the gamma parameter is used for Holt-Winters exponential smoothing, as described below). For example, to use Holt8217s exponential smoothing to fit a predictive model for skirt hem diameter, we type: The estimated value of alpha is 0.84, and of beta is 1.00. These are both high, telling us that both the estimate of the current value of the level, and of the slope b of the trend component, are based mostly upon very recent observations in the time series. This makes good intuitive sense, since the level and the slope of the time series both change quite a lot over time. The value of the sum-of-squared-errors for the in-sample forecast errors is 16954. We can plot the original time series as a black line, with the forecasted values as a red line on top of that, by typing: We can see from the picture that the in-sample forecasts agree pretty well with the observed values, although they tend to lag behind the observed values a little bit. If you wish, you can specify the initial values of the level and the slope b of the trend component by using the 8220l. start8221 and 8220b. start8221 arguments for the HoltWinters() function. It is common to set the initial value of the level to the first value in the time series (608 for the skirts data), and the initial value of the slope to the second value minus the first value (9 for the skirts data). For example, to fit a predictive model to the skirt hem data using Holt8217s exponential smoothing, with initial values of 608 for the level and 9 for the slope b of the trend component, we type: As for simple exponential smoothing, we can make forecasts for future times not covered by the original time series by using the forecast. HoltWinters() function in the 8220forecast8221 package. For example, our time series data for skirt hems was for 1866 to 1911, so we can make predictions for 1912 to 1930 (19 more data points), and plot them, by typing: The forecasts are shown as a blue line, with the 80 prediction intervals as an orange shaded area, and the 95 prediction intervals as a yellow shaded area. As for simple exponential smoothing, we can check whether the predictive model could be improved upon by checking whether the in-sample forecast errors show non-zero autocorrelations at lags 1-20. For example, for the skirt hem data, we can make a correlogram, and carry out the Ljung-Box test, by typing: Here the correlogram shows that the sample autocorrelation for the in-sample forecast errors at lag 5 exceeds the significance bounds. However, we would expect one in 20 of the autocorrelations for the first twenty lags to exceed the 95 significance bounds by chance alone. Indeed, when we carry out the Ljung-Box test, the p-value is 0.47, indicating that there is little evidence of non-zero autocorrelations in the in-sample forecast errors at lags 1-20. As for simple exponential smoothing, we should also check that the forecast errors have constant variance over time, and are normally distributed with mean zero. We can do this by making a time plot of forecast errors, and a histogram of the distribution of forecast errors with an overlaid normal curve: The time plot of forecast errors shows that the forecast errors have roughly constant variance over time. The histogram of forecast errors show that it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Thus, the Ljung-Box test shows that there is little evidence of autocorrelations in the forecast errors, while the time plot and histogram of forecast errors show that it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Therefore, we can conclude that Holt8217s exponential smoothing provides an adequate predictive model for skirt hem diameters, which probably cannot be improved upon. In addition, it means that the assumptions that the 80 and 95 predictions intervals were based upon are probably valid. Holt-Winters Exponential Smoothing If you have a time series that can be described using an additive model with increasing or decreasing trend and seasonality, you can use Holt-Winters exponential smoothing to make short-term forecasts. Holt-Winters exponential smoothing estimates the level, slope and seasonal component at the current time point. Smoothing is controlled by three parameters: alpha, beta, and gamma, for the estimates of the level, slope b of the trend component, and the seasonal component, respectively, at the current time point. The parameters alpha, beta and gamma all have values between 0 and 1, and values that are close to 0 mean that relatively little weight is placed on the most recent observations when making forecasts of future values. An example of a time series that can probably be described using an additive model with a trend and seasonality is the time series of the log of monthly sales for the souvenir shop at a beach resort town in Queensland, Australia (discussed above): To make forecasts, we can fit a predictive model using the HoltWinters() function. For example, to fit a predictive model for the log of the monthly sales in the souvenir shop, we type: The estimated values of alpha, beta and gamma are 0.41, 0.00, and 0.96, respectively. The value of alpha (0.41) is relatively low, indicating that the estimate of the level at the current time point is based upon both recent observations and some observations in the more distant past. The value of beta is 0.00, indicating that the estimate of the slope b of the trend component is not updated over the time series, and instead is set equal to its initial value. This makes good intuitive sense, as the level changes quite a bit over the time series, but the slope b of the trend component remains roughly the same. In contrast, the value of gamma (0.96) is high, indicating that the estimate of the seasonal component at the current time point is just based upon very recent observations. As for simple exponential smoothing and Holt8217s exponential smoothing, we can plot the original time series as a black line, with the forecasted values as a red line on top of that: We see from the plot that the Holt-Winters exponential method is very successful in predicting the seasonal peaks, which occur roughly in November every year. To make forecasts for future times not included in the original time series, we use the 8220forecast. HoltWinters()8221 function in the 8220forecast8221 package. For example, the original data for the souvenir sales is from January 1987 to December 1993. If we wanted to make forecasts for January 1994 to December 1998 (48 more months), and plot the forecasts, we would type: The forecasts are shown as a blue line, and the orange and yellow shaded areas show 80 and 95 prediction intervals, respectively. We can investigate whether the predictive model can be improved upon by checking whether the in-sample forecast errors show non-zero autocorrelations at lags 1-20, by making a correlogram and carrying out the Ljung-Box test: The correlogram shows that the autocorrelations for the in-sample forecast errors do not exceed the significance bounds for lags 1-20. Furthermore, the p-value for Ljung-Box test is 0.6, indicating that there is little evidence of non-zero autocorrelations at lags 1-20. We can check whether the forecast errors have constant variance over time, and are normally distributed with mean zero, by making a time plot of the forecast errors and a histogram (with overlaid normal curve): From the time plot, it appears plausible that the forecast errors have constant variance over time. From the histogram of forecast errors, it seems plausible that the forecast errors are normally distributed with mean zero. Thus, there is little evidence of autocorrelation at lags 1-20 for the forecast errors, and the forecast errors appear to be normally distributed with mean zero and constant variance over time. This suggests that Holt-Winters exponential smoothing provides an adequate predictive model of the log of sales at the souvenir shop, which probably cannot be improved upon. Furthermore, the assumptions upon which the prediction intervals were based are probably valid. ARIMA Models Exponential smoothing methods are useful for making forecasts, and make no assumptions about the correlations between successive values of the time series. However, if you want to make prediction intervals for forecasts made using exponential smoothing methods, the prediction intervals require that the forecast errors are uncorrelated and are normally distributed with mean zero and constant variance. While exponential smoothing methods do not make any assumptions about correlations between successive values of the time series, in some cases you can make a better predictive model by taking correlations in the data into account. Autoregressive Integrated Moving Average (ARIMA) models include an explicit statistical model for the irregular component of a time series, that allows for non-zero autocorrelations in the irregular component. Differencing a Time Series ARIMA models are defined for stationary time series. Therefore, if you start off with a non-stationary time series, you will first need to 8216difference8217 the time series until you obtain a stationary time series. If you have to difference the time series d times to obtain a stationary series, then you have an ARIMA(p, d,q) model, where d is the order of differencing used. You can difference a time series using the 8220diff()8221 function in R. For example, the time series of the annual diameter of women8217s skirts at the hem, from 1866 to 1911 is not stationary in mean, as the level changes a lot over time: We can difference the time series (which we stored in 8220skirtsseries8221, see above) once, and plot the differenced series, by typing: The resulting time series of first differences (above) does not appear to be stationary in mean. Therefore, we can difference the time series twice, to see if that gives us a stationary time series: Formal tests for stationarity Formal tests for stationarity called 8220unit root tests8221 are available in the fUnitRoots package, available on CRAN, but will not be discussed here. The time series of second differences (above) does appear to be stationary in mean and variance, as the level of the series stays roughly constant over time, and the variance of the series appears roughly constant over time. Thus, it appears that we need to difference the time series of the diameter of skirts twice in order to achieve a stationary series. If you need to difference your original time series data d times in order to obtain a stationary time series, this means that you can use an ARIMA(p, d,q) model for your time series, where d is the order of differencing used. For example, for the time series of the diameter of women8217s skirts, we had to difference the time series twice, and so the order of differencing (d) is 2. This means that you can use an ARIMA(p,2,q) model for your time series. The next step is to figure out the values of p and q for the ARIMA model. Another example is the time series of the age of death of the successive kings of England (see above): From the time plot (above), we can see that the time series is not stationary in mean. To calculate the time series of first differences, and plot it, we type: The time series of first differences appears to be stationary in mean and variance, and so an ARIMA(p,1,q) model is probably appropriate for the time series of the age of death of the kings of England. By taking the time series of first differences, we have removed the trend component of the time series of the ages at death of the kings, and are left with an irregular component. We can now examine whether there are correlations between successive terms of this irregular component if so, this could help us to make a predictive model for the ages at death of the kings. Selecting a Candidate ARIMA Model If your time series is stationary, or if you have transformed it to a stationary time series by differencing d times, the next step is to select the appropriate ARIMA model, which means finding the values of most appropriate values of p and q for an ARIMA(p, d,q) model. To do this, you usually need to examine the correlogram and partial correlogram of the stationary time series. To plot a correlogram and partial correlogram, we can use the 8220acf()8221 and 8220pacf()8221 functions in R, respectively. To get the actual values of the autocorrelations and partial autocorrelations, we set 8220plotFALSE8221 in the 8220acf()8221 and 8220pacf()8221 functions. Example of the Ages at Death of the Kings of England For example, to plot the correlogram for lags 1-20 of the once differenced time series of the ages at death of the kings of England, and to get the values of the autocorrelations, we type: We see from the correlogram that the autocorrelation at lag 1 (-0.360) exceeds the significance bounds, but all other autocorrelations between lags 1-20 do not exceed the significance bounds. To plot the partial correlogram for lags 1-20 for the once differenced time series of the ages at death of the English kings, and get the values of the partial autocorrelations, we use the 8220pacf()8221 function, by typing: The partial correlogram shows that the partial autocorrelations at lags 1, 2 and 3 exceed the significance bounds, are negative, and are slowly decreasing in magnitude with increasing lag (lag 1: -0.360, lag 2: -0.335, lag 3:-0.321). The partial autocorrelations tail off to zero after lag 3. Since the correlogram is zero after lag 1, and the partial correlogram tails off to zero after lag 3, this means that the following ARMA (autoregressive moving average) models are possible for the time series of first differences: an ARMA(3,0) model, that is, an autoregressive model of order p3, since the partial autocorrelogram is zero after lag 3, and the autocorrelogram tails off to zero (although perhaps too abruptly for this model to be appropriate) an ARMA(0,1) model, that is, a moving average model of order q1, since the autocorrelogram is zero after lag 1 and the partial autocorrelogram tails off to zero an ARMA(p, q) model, that is, a mixed model with p and q greater than 0, since the autocorrelogram and partial correlogram tail off to zero (although the correlogram probably tails off to zero too abruptly for this model to be appropriate) We use the principle of parsimony to decide which model is best: that is, we assum e that the model with the fewest parameters is best. The ARMA(3,0) model has 3 parameters, the ARMA(0,1) model has 1 parameter, and the ARMA(p, q) model has at least 2 parameters. Therefore, the ARMA(0,1) model is taken as the best model. An ARMA(0,1) model is a moving average model of order 1, or MA(1) model. This model can be written as: Xt - mu Zt - (theta Zt-1), where Xt is the stationary time series we are studying (the first differenced series of ages at death of English kings), mu is the mean of time series Xt, Zt is white noise with mean zero and constant variance, and theta is a parameter that can be estimated. A MA (moving average) model is usually used to model a time series that shows short-term dependencies between successive observations. Intuitively, it makes good sense that a MA model can be used to describe the irregular component in the time series of ages at death of English kings, as we might expect the age at death of a particular English king to have some effect on the ages at death of the next king or two, but not much effect on the ages at death of kings that reign much longer after that. Shortcut: the auto. arima() function The auto. arima() function can be used to find the appropriate ARIMA model, eg. type 8220library(forecast)8221, then 8220auto. arima(kings)8221. The output says an appropriate model is ARIMA(0,1,1). Since an ARMA(0,1) model (with p0, q1) is taken to be the best candidate model for the time series of first differences of the ages at death of English kings, then the original time series of the ages of death can be modelled using an ARIMA(0,1,1) model (with p0, d1, q1, where d is the order of differencing required). Example of the Volcanic Dust Veil in the Northern Hemisphere Let8217s take another example of selecting an appropriate ARIMA model. The file file robjhyndmantsdldataannualdvi. dat contains data on the volcanic dust veil index in the northern hemisphere, from 1500-1969 (original data from Hipel and Mcleod, 1994). This is a measure of the impact of volcanic eruptions8217 release of dust and aerosols into the environment. We can read it into R and make a time plot by typing: From the time plot, it appears that the random fluctuations in the time series are roughly constant in size over time, so an additive model is probably appropriate for describing this time series. Furthermore, the time series appears to be stationary in mean and variance, as its level and variance appear to be roughly constant over time. Therefore, we do not need to difference this series in order to fit an ARIMA model, but can fit an ARIMA model to the original series (the order of differencing required, d, is zero here). We can now plot a correlogram and partial correlogram for lags 1-20 to investigate what ARIMA model to use: We see from the correlogram that the autocorrelations for lags 1, 2 and 3 exceed the significance bounds, and that the autocorrelations tail off to zero after lag 3. The autocorrelations for lags 1, 2, 3 are positive, and decrease in magnitude with increasing lag (lag 1: 0.666, lag 2: 0.374, lag 3: 0.162). The autocorrelation for lags 19 and 20 exceed the significance bounds too, but it is likely that this is due to chance, since they just exceed the significance bounds (especially for lag 19), the autocorrelations for lags 4-18 do not exceed the signifiance bounds, and we would expect 1 in 20 lags to exceed the 95 significance bounds by chance alone. From the partial autocorrelogram, we see that the partial autocorrelation at lag 1 is positive and exceeds the significance bounds (0.666), while the partial autocorrelation at lag 2 is negative and also exceeds the significance bounds (-0.126). The partial autocorrelations tail off to zero after lag 2. Since the correlogram tails off to zero after lag 3, and the partial correlogram is zero after lag 2, the following ARMA models are possible for the time series: an ARMA(2,0) model, since the partial autocorrelogram is zero after lag 2, and the correlogram tails off to zero after lag 3, and the partial correlogram is zero after lag 2 an ARMA(0,3) model, since the autocorrelogram is zero after lag 3, and the partial correlogram tails off to zero (although perhaps too abruptly for this model to be appropriate) an ARMA(p, q) mixed model, since the correlogram and partial correlogram tail off to zero (although the partial correlogram perhaps tails off too abruptly for this model to be appropriate) Shortcut: the auto. arima() function Again, we can use auto. arima() to find an appropriate model, by typing 8220auto. arima(volcanodust)8221, which gives us ARIMA(1,0,2), which has 3 parameters. However, different criteria can be used to select a model (see auto. arima() help page). If we use the 8220bic8221 criterion, which penalises the number of parameters, we get ARIMA(2,0,0), which is ARMA(2,0): 8220auto. arima(volcanodust, ic8221bic8221)8221. The ARMA(2,0) model has 2 parameters, the ARMA(0,3) model has 3 parameters, and the ARMA(p, q) model has at least 2 parameters. Therefore, using the principle of parsimony, the ARMA(2,0) model and ARMA(p, q) model are equally good candidate models. An ARMA(2,0) model is an autoregressive model of order 2, or AR(2) model. This model can be written as: Xt - mu (Beta1 (Xt-1 - mu)) (Beta2 (Xt-2 - mu)) Zt, where Xt is the stationary time series we are studying (the time series of volcanic dust veil index), mu is the mean of time series Xt, Beta1 and Beta2 are parameters to be estimated, and Zt is white noise with mean zero and constant variance. An AR (autoregressive) model is usually used to model a time series which shows longer term dependencies between successive observations. Intuitively, it makes sense that an AR model could be used to describe the time series of volcanic dust veil index, as we would expect volcanic dust and aerosol levels in one year to affect those in much later years, since the dust and aerosols are unlikely to disappear quickly. If an ARMA(2,0) model (with p2, q0) is used to model the time series of volcanic dust veil index, it would mean that an ARIMA(2,0,0) model can be used (with p2, d0, q0, where d is the order of differencing required). Similarly, if an ARMA(p, q) mixed model is used, where p and q are both greater than zero, than an ARIMA(p,0,q) model can be used. Forecasting Using an ARIMA Model Once you have selected the best candidate ARIMA(p, d,q) model for your time series data, you can estimate the parameters of that ARIMA model, and use that as a predictive model for making forecasts for future values of your time series. You can estimate the parameters of an ARIMA(p, d,q) model using the 8220arima()8221 function in R. Example of the Ages at Death of the Kings of England For example, we discussed above that an ARIMA(0,1,1) model seems a plausible model for the ages at deaths of the kings of England. You can specify the values of p, d and q in the ARIMA model by using the 8220order8221 argument of the 8220arima()8221 function in R. To fit an ARIMA(p, d,q) model to this time series (which we stored in the variable 8220kingstimeseries8221, see above), we type: As mentioned above, if we are fitting an ARIMA(0,1,1) model to our time series, it means we are fitting an an ARMA(0,1) model to the time series of first differences. An ARMA(0,1) model can be written Xt - mu Zt - (theta Zt-1), where theta is a parameter to be estimated. From the output of the 8220arima()8221 R function (above), the estimated value of theta (given as 8216ma18217 in the R output) is -0.7218 in the case of the ARIMA(0,1,1) model fitted to the time series of ages at death of kings. Specifying the confidence level for prediction intervals You can specify the confidence level for prediction intervals in forecast. Arima() by using the 8220level8221 argument. For example, to get a 99.5 prediction interval, we would type 8220forecast. Arima(kingstimeseriesarima, h5, levelc(99.5))8221. We can then use the ARIMA model to make forecasts for future values of the time series, using the 8220forecast. Arima()8221 function in the 8220forecast8221 R package. For example, to forecast the ages at death of the next five English kings, we type: The original time series for the English kings includes the ages at death of 42 English kings. The forecast. Arima() function gives us a forecast of the age of death of the next five English kings (kings 43-47), as well as 80 and 95 prediction intervals for those predictions. The age of death of the 42nd English king was 56 years (the last observed value in our time series), and the ARIMA model gives the forecasted age at death of the next five kings as 67.8 years. We can plot the observed ages of death for the first 42 kings, as well as the ages that would be predicted for these 42 kings and for the next 5 kings using our ARIMA(0,1,1) model, by typing: As in the case of exponential smoothing models, it is a good idea to investigate whether the forecast errors of an ARIMA model are normally distributed with mean zero and constant variance, and whether the are correlations between successive forecast errors. For example, we can make a correlogram of the forecast errors for our ARIMA(0,1,1) model for the ages at death of kings, and perform the Ljung-Box test for lags 1-20, by typing: Since the correlogram shows that none of the sample autocorrelations for lags 1-20 exceed the significance bounds, and the p-value for the Ljung-Box test is 0.9, we can conclude that there is very little evidence for non-zero autocorrelations in the forecast errors at lags 1-20. To investigate whether the forecast errors are normally distributed with mean zero and constant variance, we can make a time plot and histogram (with overlaid normal curve) of the forecast errors: The time plot of the in-sample forecast errors shows that the variance of the forecast errors seems to be roughly constant over time (though perhaps there is slightly higher variance for the second half of the time series). The histogram of the time series shows that the forecast errors are roughly normally distributed and the mean seems to be close to zero. Therefore, it is plausible that the forecast errors are normally distributed with mean zero and constant variance. Since successive forecast errors do not seem to be correlated, and the forecast errors seem to be normally distributed with mean zero and constant variance, the ARIMA(0,1,1) does seem to provide an adequate predictive model for the ages at death of English kings. Example of the Volcanic Dust Veil in the Northern Hemisphere We discussed above that an appropriate ARIMA model for the time series of volcanic dust veil index may be an ARIMA(2,0,0) model. To fit an ARIMA(2,0,0) model to this time series, we can type: As mentioned above, an ARIMA(2,0,0) model can be written as: written as: Xt - mu (Beta1 (Xt-1 - mu)) (Beta2 (Xt-2 - mu)) Zt, where Beta1 and Beta2 are parameters to be estimated. The output of the arima() function tells us that Beta1 and Beta2 are estimated as 0.7533 and -0.1268 here (given as ar1 and ar2 in the output of arima()). Now we have fitted the ARIMA(2,0,0) model, we can use the 8220forecast. ARIMA()8221 model to predict future values of the volcanic dust veil index. The original data includes the years 1500-1969. To make predictions for the years 1970-2000 (31 more years), we type: We can plot the original time series, and the forecasted values, by typing: One worrying thing is that the model has predicted negative values for the volcanic dust veil index, but this variable can only have positive values The reason is that the arima() and forecast. Arima() functions don8217t know that the variable can only take positive values. Clearly, this is not a very desirable feature of our current predictive model. Again, we should investigate whether the forecast errors seem to be correlated, and whether they are normally distributed with mean zero and constant variance. To check for correlations between successive forecast errors, we can make a correlogram and use the Ljung-Box test: The correlogram shows that the sample autocorrelation at lag 20 exceeds the significance bounds. However, this is probably due to chance, since we would expect one out of 20 sample autocorrelations to exceed the 95 significance bounds. Furthermore, the p-value for the Ljung-Box test is 0.2, indicating that there is little evidence for non-zero autocorrelations in the forecast errors for lags 1-20. To check whether the forecast errors are normally distributed with mean zero and constant variance, we make a time plot of the forecast errors, and a histogram: The time plot of forecast errors shows that the forecast errors seem to have roughly constant variance over time. However, the time series of forecast errors seems to have a negative mean, rather than a zero mean. We can confirm this by calculating the mean forecast error, which turns out to be about -0.22: The histogram of forecast errors (above) shows that although the mean value of the forecast errors is negative, the distribution of forecast errors is skewed to the right compared to a normal curve. Therefore, it seems that we cannot comfortably conclude that the forecast errors are normally distributed with mean zero and constant variance Thus, it is likely that our ARIMA(2,0,0) model for the time series of volcanic dust veil index is not the best model that we could make, and could almost definitely be improved upon Links and Further Reading Here are some links for further reading. For a more in-depth introduction to R, a good online tutorial is available on the 8220Kickstarting R8221 website, cran. r-project. orgdoccontribLemon-kickstart . There is another nice (slightly more in-depth) tutorial to R available on the 8220Introduction to R8221 website, cran. r-project. orgdocmanualsR-intro. html . You can find a list of R packages for analysing time series data on the CRAN Time Series Task View webpage . To learn about time series analysis, I would highly recommend the book 8220Time series8221 (product code M24902) by the Open University, available from the Open University Shop . There are two books available in the 8220Use R8221 series on using R for time series analyses, the first is Introductory Time Series with R by Cowpertwait and Metcalfe, and the second is Analysis of Integrated and Cointegrated Time Series with R by Pfaff. Acknowledgements I am grateful to Professor Rob Hyndman. for kindly allowing me to use the time series data sets from his Time Series Data Library (TSDL) in the examples in this booklet. Many of the examples in this booklet are inspired by examples in the excellent Open University book, 8220Time series8221 (product code M24902), available from the Open University Shop . Thank you to Ravi Aranke for bringing auto. arima() to my attention, and Maurice Omane-Adjepong for bringing unit root tests to my attention, and Christian Seubert for noticing a small bug in plotForecastErrors(). Thank you for other comments to Antoine Binard and Bill Johnston. I will be grateful if you will send me (Avril Coghlan) corrections or suggestions for improvements to my email address alc 64 sanger 46 ac 46 uk
Comments
Post a Comment