Download - Time Series Analysis with R (part 1)

Transcript

R manual Time Series Analysis ΑΣΚΗΣΗ # 8.1

G:\My LESSONS_RUN\4 AFD\source manuals\R8 tsa\fb8_tsa1.doc 03/06/2014

Ανάλυση Χρονοσειρών µε τη γλώσσα R

Εισαγωγή

Οι χρονοσειρές που θα µελετήσουµε, όπως και οι περισσότερες µε πρακτική χρησιµότητα, είναι

διακριτές (discrete) στον χρόνο. Γι αυτό θα τις συµβολίσουµε ως x(n), θέλοντας να δηλώσουµε ότι

έχουµε n διακριτές τιµές στην χρονοσειρά.

Ένα συνεχές σήµα Xt µπορεί να µετατραπεί σε

διακριτό x(n) µε τη διαδικασία της

δειγµατοληψίας (sampling), όπου καταγράφουµε

τις τιµές του συνεχούς σήµατος σε µια σειρά από

διακριτά και ισαπέχοντα σηµεία στο χρόνο. Στην

Εικ. 1 ένα αναλογικό σήµα Xt διάρκειας T=19 s

δειγµατοληπτείται 1900 φορές (n=1900).

Συχνά όταν χρησιµοποιούµε αυτοµατοποιηµένα

συστήµατα (υπολογιστές, ψηφιακά καταγραφικά

κλπ) η τιµή του x(n) είναι επίσης κβαντισµένη,

πολλαπλάσιο δηλαδή µιας ελάχιστης τιµής, µε

εύρος τιµών 8 bit (256), 12 bit (4096) και γενικά

Α bit (2A).

Μελέτησε τον πίνακα των παραµέτρων της

δειγµατοληψίας και δες πως ορίζεται η συχνότητα

δειγµατοληψίας Fs και το διάστηµα

δειγµατοληψίας ∆Τ.

Χρήσιµοι ορισµοί

Ονοµάζουµε στάσιµη µια

χρονοσειρά αν όλες οι

στατιστικές της ιδιότητες

δεν µεταβάλλονται µε τον

χρόνο (stationarity).

Αντίστοιχα στο χώρο, ονοµάζουµε µια σειρά µετρήσεων στάσιµη, αν δεν µεταβάλλονται οι χωρικές

στατιστικές της ιδιότητες (spatial stationarity). Συνήθως, ελέγχουµε αν παραµένουν αµετάβλητα ο µέσος

και η αυτοσυσχέτιση (ή µερικές φορές αρκούµαστε µόνο στον µέσο και τη διασπορά). Σε αυτή την

περίπτωση αποδεικνύουµε την ύπαρξη στασιµότητας ευρείας-έννοιας (wide-sense).

∆υο χρονοσειρές Χ(t) και Y(t) ονοµάζονται από κοινού στάσιµες ευρείας έννοιας (jointly wide-sense

stationary) αν κάθε µια από αυτές είναι στάσιµη ευρείας-έννοιας, καθώς επίσης και η ετεροσυσχέτισή

τους.

Οι µη-στάσιµες χρονοσειρές είναι προβληµατικές στην ανάλυση και την µοντελοποίησή τους, καθώς και

στην χρησιµοποίησή τους για προβλέψεις. Χρησιµοποιώντας µη-στάσιµες χρονοσειρές κινδυνεύουµε να

καταλήξουµε σε µεροληπτικές στατιστικές εκτιµήσεις (bias) και νόθες (spurious) συσχετίσεις µεταξύ

των µεταβλητών των χρονοσειρών. Οι µη-στάσιµες χρονοσειρές µπορεί να εµφανίζουν τάσεις (trends),

αργές δηλαδή µεταβολές της µέσης τιµής τους (για µετακινούµενα χρονικά παράθυρα παρατήρησης),

περιοδικότητες ή εποχικότητες (seasonalities) µε στάσιµα ή µη στάσιµα χαρακτηριστικά (πχ µε

αυξανόµενο πλάτος ταλάντωσης).

Όπως θα δούµε αργότερα µε τον µετασχηµατισµό Φουριέ (Fourier) µία χρονοσειρά µετατρέπεται σε ένα

φάσµα συχνοτήτων, αποσυντίθεται δηλαδή σε ένα άθροισµα ηµιτονοειδών διαφορετικών συχνοτήτων.

Αυτή η µετατροπή, µας επιτρέπει , όπως λέµε, να αναλύουµε ένα σήµα τόσο στο πεδίο του χρόνου (time

domain) όσο και στο πεδίο συχνοτήτων (frequency domain).

Εικ. 1: Ψηφιοποίηση συνεχούς σήµατος Xt σε διακρι-

τό x(i). Για λόγους ευκρίνειας σχεδιάστηκε µόνο µια

σε κάθε 100 δειγµατοληψίες (n=1900).

ΠΙΝΑΚΑΣ: Παράµετροι δειγµατοληψίας

n = αριθµός µετρήσεων στην χρονοσειρά n=1900

ΔΤ= διάστηµα µεταξύ διαδοχικών µετρήσεων = Τ/n ΔT=0.01 s

Τ = συνολική διάρκεια χρονοσειράς = n * ΔΤ = N/Fs T=19 s

Fs = συχνότητα δειγµατοληψίας = 1/ΔΤ Fs=100 Hz

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

2

0 20 40 60 80 100

-0.0

03

-0.0

01

0.0

01

0.0

02

0.0

03

Index

diff(

log(leve

l))

Εικόνα 1: Πριν από το µετασχηµατισµό

(άνω) και κατόπιν (κάτω). (Λεπτοµέρειες

στο κείµενο).

Στην άσκηση, θα γνωρίσουµε µεθόδους ανάλυσης πολυµεταβλητών χρονοσειρών τόσο στην περιοχή του

χρόνου όσο και στην φασµατική περιοχή. Στην πρώτη περίπτωση ανήκουν οι τεχνικές ARIMA και τα

διάφορα είδη συσχετίσεων (ACF, PACF και CCF), ενώ στην δεύτερη οι τεχνικές των Περιοδογραµµά-

των και των Φασµάτων.

Για τις ανάγκες του µαθήµατος θα χρησιµοποιήσουµε µια από τις περισσότερο ισχυρές βιβλιοθήκες ανά-

λυσης χρονοσειρών, που διαθέτει η R, την TSA (Time Series Analysis). Η βιβλιοθήκη θα εγκατασταθεί

στο σύστηµα, όπως µάθαµε σε προηγούµενες ασκήσεις µε την εντολή: install.packages("TSA", repos="http://cran.at.r-

project.org/").

∆οµή και παρουσίαση χρονοσειρών

Θα διαβάσουµε από τον κατάλογο εργασίας (working directory) το αρχείο

lake.txt, που περιέχει τις ετήσιες µετρήσεις 2 µεγεθών, του ύψους µιας

λίµνης και την ταχύτητα ενός ποταµού (Lake Huron, από το 1875 έως το

1972). Τα δεδοµένα του αρχείου βρίσκονται σε µορφή ASCII, όπου κάθε

µεταβλητή εµφανίζεται σε µια ξεχωριστή στήλη, που διακρίνεται από τη

διπλανή της µε <tab> , ενώ οι σειρές συµβολίζουν τις διαδοχικές µετρήσεις,

που έχουν γίνει στη µονάδα του χρόνου. Ανοίγοντας το αρχείο µε

οποιοδήποτε κειµενογράφο βλέπουµε ότι περιλαµβάνει δυο µεταβλητές, µε

τις αντίστοιχες επικεφαλίδες. Θυµήσου ότι τέτοιου είδους αρχεία πρέπει να

διαβαστούν µε την εντολή

read.table µε παραµέτρους header = T και sep = "\t".

Άνοιξε µε τον R editor ένα νέο πρόγραµµα (FILE/new script) δώσε του

το όνοµα TSA.R και γράψε τις πρώτες γραµµές κώδικα:

lake.level = read.table("lake.txt", header =

T, sep = "\t")

Στο ίδιο αυτό αρχείο συνέχισε να γράφεις και να εκτελείς µε

τον R editor τις εντολές: lake.level

str(lake.level) names(lake.level)

παρακολουθώντας τα αποτελέσµατα της εκτέλεσης του κώδικα

στην κονσόλα.

Με την εντολή attach φρόντισε η µεταβλητή level να γίνει

ένα ακόµη αντικείµενο της R.

• ∆ώσε την εντολή plot(level, type = “l”)

και παρατήρησε τη χρονοσειρά στο γράφηµα της Εικ. 1.

Εµφανίζει ή όχι στασιµότητα (weak stationarity), δηλαδή αν

συστηµατικά µεταβάλλεται ο µέσος (εµφανίζει κλίση) ή η

διασπορά παρουσιάζει ετεροσκεδαστικότητα

(heteroscedasticity). Στα τρία χρονικά παράθυρα της Εικ. 1,

(άνω) φαίνεται να υπάρχει µια αρνητική κλίση στους µέσους

και µια αύξηση της διασποράς, στοιχεία που απορρίπτουν την

υπόθεση της στασιµότητας.

Η αντιµετώπιση της µη-στασιµότητας

Αντιµετώπιση του προβλήµατος της µη στασιµότητας

µπορεί να γίνει µε τους παρακάτω τρόπους:

level current

1 579.96 25.80

2 580.38 25.81

3 581.86 25.80

4 580.97 25.81

5 580.80 25.80

6 579.79 25.80

7 580.39 25.80

8 580.42 25.80

9 580.82 25.80

10 581.40 25.81

11 581.32 25.80

12 581.44 25.81

13 581.68 25.80

14 581.17 25.80 .

.

Τα δεδοµένα στο

αρχείο lake.txt

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

3

1) µε µετασχηµατισµό των δεδοµένων της χρονοσειράς (συνήθως µε λογαρίθµηση και διαφορές d =1 έως

2), 2) αναπτύσσοντας µοντέλα παλινδρόµησης ως προς τον χρόνο, 3) ακολουθώντας τη µέθοδο του

∆ιαχωρισµού των Συνιστωσών (Decomposition) και 4) µε τη χρήση φίλτρων, εξοµαλυντών ή

γενικευµένων αθροιστικών µοντέλων (GAMs).

1. Μετασχηµατισµός χρονοσειράς

Για να αντικαταστήσουµε τη χρονοσειρά του level µε µια νέα και στάσιµη, θα εφαρµόσουµε δυο

µετασχηµατισµούς, τη λογαρίθµηση και τη διαδοχική διαφορά αντίστοιχα.

∆οκίµασε την εντολή: plot(diff(log(level)),type="l")

και δες το γράφηµα που εµφανίζει η R στην Εικ. 1 (κάτω).

Μελέτησε τον κώδικα της R (πλαίσιο 1: data transformation) και δες ότι πρώτα εφαρµόζεται ο

φυσικός λογάριθµος (log) στις τιµές του level και κατόπιν χρησιµοποιείται η συνάρτηση diff για να

υπολογιστούν οι διαφορές στους λογαρίθµους της µεταβλητής .

Οι µετασχηµατισµένες τιµές, εκτός από το ότι εµφανίζουν µια στάσιµη χρονοσειρά, επιπλέον

ακολουθούν µια κανονική κατανοµή (Εικ. 2), όπως υποδηλώνεται από το Shapiro-Wilk test. Shapiro-Wilk normality test data: v1

W = 0.983, p-value = 0.2443

Στο γράφηµα της Εικ. 2 εµφανίζεται το ιστόγραµµα των

κανονικοποιηµένων δεδοµένων “diff(log(level))” και

πάνω σε αυτό έχει σχεδιασθεί µια κανονική κατανοµή µε

ίδιο µέσο και διασπορά, όπως τα µετασχηµατισµένα

δεδοµένα.

• Η νέα χρονοσειρά που προέκυψε, µπορεί να θεωρηθεί

στάσιµη και άρα ικανή να αναλυθεί, χωρίς τους

περιορισµούς που έχουν οι µη-στάσιµες χρονοσειρές.

Υπάρχουν ειδικοί έλεγχοι (π.χ run-test ή KPSS-test) µε

τους οποίους µπορούµε να αποκλείσουµε ή όχι τη

στασιµότητα µιας χρονοσειράς.

Εικόνα 2: Το ιστόγραµµα των µετασχηµατισµένων

δεδοµένων της µεταβλητής “level” και η

αντίστοιχη κανονική κατανοµή

# 1. data transformation

# ---------------------- v = diff(log(level))

v1 = (v-mean(v))/sd(v)

m_v1 = mean(v1)

s_v1 = sd(v1)

windows()

hist(v1,freq=FALSE, las = 1, col = "lightgray",

main = "Lake level",

xlab = "level")

x = seq(-4,4,length=100)

y = dnorm(x,m_v1,s_v1)

lines(x,y,lwd=2,col="blue",lt=2)

windows() qqnorm(v1)

abline(0,1, col = "red")

# Normality test

# ------------------------ shapiro.test(v1)

Η εντολή las=1 χρησιµοποιήθηκε για να

αναγραφούν στον κατακόρυφο άξονα της

Εικόνας 2 οι αριθµοί µε οριζόντιο τρόπο!

library(TSA)

# load data set from R objects

using the load function

tsa3 = load("tsa3.rda")

str(tsa3)

tsa3 > tsa3

[1] "tsa3.version" "jj"

[3] "gtemp" "fmri1"

[5] "soi" "rec"

[7] "speech" "nyse"

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

4

Χρονοσειρές δοµηµένες ως ειδικά αντικείµενα (ts)

Μια χρονοσειρά µπορεί να εκφραστεί στην R ως δοµηµένο αντικείµενο µε ξεχωριστές ιδιότητες,

χρησιµοποιώντας τη συνάρτηση ts. (βλ τη χρήση της συνάρτησης στον κώδικα 2.1).

Παρακάτω θα εργαστούµε µε δεδοµένα που περιέχονται στη βιβλιοθήκη TSA και έχουν την µορφή ts.

Με την εντολή load θα εισάγουµε στην R µια

σειρά από αρχεία, που περιέχονται στο αντικείµενο

tsa3.rda. Τα αρχεία rda δηµιουργούνται από την

ίδια την R όταν σώζονται δεδοµένα ενός

προγράµµατος µε την εντολή save ή save.image.

Αν ζητήσουµε το αντικείµενο tsa3 θα µας δοθεί το

σύνολο των χρονοσειρών, που έχουν ενσωµατωθεί

σε αυτό. Θα επιλέξουµε να αναλύσουµε τις

χρονοσειρές soi και rec, που αντίστοιχα περιέχουν

δεδοµένα ∆εικτών Νότιας Ταλάντωσης (Southern

Oscillation Index) και στρατολόγησης πελαγικών

ειδών (pelagic recruit) του Νοτιανατολικού

Ειρηνικού (Shumway & Stoffer, 2008). Πρόκειται

για µηνιαίες τιµές από το 1950 έως το 1987 που στο

αρχείο soi αντιπροσωπεύουν αλλαγές στην

ατµοσφαιρική πίεση σε σχέση µε την επιφανειακή

θερµοκρασία (SST) και στο αρχείο rec τις σχετικές

τιµές αφθονίες νεαρών ατόµων πελαγικών ειδών.

Χρησιµοποίησε την εντολή str για να διερευνήσεις

τις χρονοσειρές soi και rec. Κάθε χρονοσειρά

είναι δοµηµένη µε συγκεκριµένο τρόπο, έχει 453

τιµές, κατανεµηµένες από το 1950 έως το 1988: Time-Series [1:453] from 1950 to

1988: 0.377 0.246 0.311 0.104

Αν ζητήσουµε το αντικείµενο rec, θα εµφανισθεί

στην κονσόλα ένας πίνακας µε τις µετρήσεις της στρατολόγησης σε δοµηµένη µορφή, ανά µήνα και έτος

όπως φαίνεται παρακάτω:

Παρατηρώντας τις χρονοσειρές στην Εικόνα 3

διαπιστώνουµε ότι η soi χρονοσειρά

ταλαντώνεται µε µεγαλύτερη συχνότητα από ότι

η rec, καθώς επίσης ότι η τελευταία εµφανίζει

µάλλον δυο περιοδικότητες, µια κοντά στους 12

µήνες και µια άλλη µεγαλύτερη περίπου στους

50 µήνες.

Θα προσπαθήσουµε παρακάτω να αναλύσουµε

τις δυο χρονοσειρές και να δούµε αν εµφανίζουν

στατιστικές συσχετίσεις.

> rec

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

1950 68.63 68.63 68.63 68.63 68.63 68.63 59.16 48.70 47.54 50.91 44.70 42.85

1951 39.62 44.45 38.98 42.62 48.27 59.39 51.66 38.55 60.33 72.27 68.62 69.63

1952 72.20 67.87 64.91 53.85 37.96 23.23 12.68 9.84 7.82 11.78 10.22 12.19

1953 18.60 26.97 22.52 19.18 17.14 18.61 20.02 22.65 38.99 76.55 87.99 99.80

1954 96.69 87.45 88.57 97.43 99.99 94.88 86.99 79.73 92.35 91.29 94.31 84.95 1955 82.97 92.98 81.06 62.37 52.99 39.53 42.90 33.76 40.97 60.50 66.61 80.38

. . .

Southern Oscillation Index

1950 1960 1970 1980

-1.0

0.0

1.0

Recruitment

1950 1960 1970 1980

040

80

Εικ. 3: Χρονοσειρές των τιµών

soi και rec (1950 – 1987)

# 2. Time series data structure

# ================================ # 2.1 Use function ts

# --------------------

level.ts = ts(level, start = 1875,

freq = 1)

level.ts

plot(level.ts)

# 2.2 Load data ts formated

# --------------------------

tsa3 = load("tsa3.rda")

tsa3

str(soi); str(rec) soi; rec

# Figure 3

par(mfrow = c(2,1)) # set up

graphics

plot(soi, ylab="", xlab="",

main="Southern Oscillation Index") plot(rec, ylab="", xlab="",

main="Recruitment")

# Select certain month

feb.ts = ts(soi[cycle(soi)==2])

# Figure 4

plot(feb.ts)

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

5

2 Παλινδρόµηση µε τον χρόνο

Με την παλινδρόµηση ως προς το χρόνο

θεωρούµε ότι υπάρχει ένα πολυώνυµο (πρώτου

έως δευτέρου βαθµού) που µπορεί να εξηγήσει

την κλίση, ενώ τα υπόλοιπά του θα

ερµηνευτούν ως “θόρυβος”. Στην παρακάτω

εξίσωση έχει επίσης λογαριθµηθεί η

εξαρτηµένη µεταβλητή (που εδώ είναι η Xt ):

Υπό µορφή άσκησης

Η προσαρµογή του µοντέλου και η εκτίµηση των συντελεστών αi θα γίνει µε τη βοήθεια δυο

συναρτήσεων της R της lsfit() – least squared fit ή της lm() – linear models.

• Προετοίµασε τα δεδοµένα

• ∆ηµιούργησε µε την εντολή seq() µια ακολουθία αριθµών από το 1956 έως το 1995.2 µε τόσα

στοιχεία, όσα και το µήκος των δεδοµένων της µεταβλητής t.

• ∆ηµιούργησε µια νέα µεταβλητή t2, που θα ισούται µε το τετράγωνο της t, δηλ (t2)

• ∆ηµιούργησε µια νέα µεταβλητή lcatch ίση µε log(catch).

• Ανάπτυξε µε την εντολή lm() ένα µοντέλο παλινδρόµησης µεταξύ των lcatch ~ t+t2

• Παρουσίασε σε γραφική παράσταση τις µετρήσεις της χρονοσειράς plot(lcatch)

• Εµφάνισε πάνω στο προηγούµενο γράφηµα τη γραµµή του µοντέλου lines(lm(lcatch~t+t2)$fit,col=2,lwd=2)

• Να εµφανίσεις σε δεύτερο γράφηµα τις µεταβολές του lcatch, αφού αφαιρεθεί η τάση (trend) δηλ

το µοντέλο αύξησης σε σχέση µε το χρόνο.

# ==================================

# 3. Regression analysis with time

# ==================================

cbe = read.table("cbe.dat", header =

T, sep = "\t")

attach(cbe)

names(cbe)

# 3.1 define ts structure # ------------------------

catch.ts =

ts(cbe[,2],start=1956,freq=12)

str(catch.ts)

# 3.2 model # ---------------

t = seq(1956,1995.2,length=

length(catch.ts))

t2 = t^2

lcatch = log(cbe[,2])

lcatch.fit = lm(lcatch~t+t2)

str(lcatch.fit)

# Figure 4

windows(); par(mfrow = c(2,1))

plot(lcatch)

lines(lcatch.lm$fit,col=2,lwd=2)

# catch without trend

plot(lcatch.lm$residuals, ty="l"))

ttettX +++= 2

210)log( ααα

Εικ. 4: Μη γραµµική παλινδρόµηση του

αλιεύµατος (catch) σε σχέση µε το χρόνο

(εδώ ως διαδοχικές µετρήσεις στον άξονα x)

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

6

3. ∆ιαχωρισµός των Συνιστωσών χρονοσειρών (Decomposition of time series)

Ειδικά στην περίπτωση που η χρονοσειρά είναι δοµηµένη ως αντικείµενο ts, η γλώσσα R διαθέτει έναν

ιδιαίτερο τρόπο για να την διαχειρίζεται.

Θα ασχοληθούµε πάλι µε τα δεδοµένα cbe, που περιέχουν τις χρονοσειρές: power, catch και profit.

Για να χρησιµοποιήσουµε τον ∆ιαχωρισµό Συνιστωσών

πρέπει τα δεδοµένα µας (catch) να έχουν ήδη

µετασχηµατισθεί στη δοµηµένη µορφή χρονοσειράς

catch.ts. Κατόπιν χρησιµοποιείται η εντολή stl

(Seasonal Decomposition of Time Series by Loess).

Παρατήρησε ότι ο διαχωρισµός δεν γίνεται άµεσα στην

χρονοσειρά catch.ts, γιατί;

Επίσης ο εξοµαλυντής Loess για το παράθυρο της

εποχικότητας (s.window) καθορίζεται από αυτή την ίδια

την περιοδικότητα (ν=12) των µηνιαίων τιµών της

χρονοσειράς catch.ts.

Η εντολή plot παράγει (Εικ. 5) εκτός από την αρχική

χρονοσειρά, τρεις συνιστώσες : την εποχικότητα

(seasonal), την τάση (trend) και τα υπόλοιπα

(remainder).

• Μελέτησε τον κώδικα και τα γραφήµατα που παράγει η εντολή stl στην περίπτωση των δεδοµένων

της εικόνας 5.

Εικόνα 5: Χρονοσειρές catch.ts (αριστερά) και soi (δεξιά) µε τις συνιστώσες τους αντίστοιχα: εποχικότητα,

τάση και υπόλοιπα (Οι κατακόρυφες µπάρες στα δεξιά των γραφηµάτων αντιπροσωπεύουν πάντα το ίδιο

µέγεθος στον άξονα Υ).

4.2

4.6

5.0

5.4

da

ta

-0.2

0.0

0.1

0.2

se

aso

na

l

4.5

4.7

4.9

5.1

tre

nd

-0.2

0.0

0.1

1955 1960 1965 1970 1975 1980 1985 1990

rem

ain

de

r

time

# ============================

# 4. TS decomposition

# ============================

#

# Decompose catch.ts data

# --------------------------- # decompose time series

# Figure 5

plot(stl(log(catch.ts),

s.window="periodic"))

# Decompose the soi data # ----------------------

plot(stl(soi, s.window =

"periodic"))

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

7

Αναλύσεις Ετεροσυσχέτισης

Η Συνάρτηση Ετεροσυσχέτισης (Cross correlation

Function, CCF) εκτιµάται από τους διαδοχικούς

συντελεστές συσχέτισης που εµφανίζουν µεταξύ τους

δυο χρονοσειρές, όταν η µία µετατοπίζεται ως προς

την άλλη (Εικ. 6). Εποµένως η CCF µας δείχνει αν

υπάρχει κάποια στατιστική σχέση µεταξύ των δυο

χρονοσειρών ακόµη και αν η σχέση αυτή δεν είναι

σύγχρονη αλλά ετεροχρονισµένη (µε υστέρηση).

Θα διερευνήσουµε την πιθανή υστέρηση που υπάρχει

ανάµεσα στις µεταβλητές soi (Southern Oscillation

Index) και rec (recruitment) στον Ν. Ειρηνικό.

Πριν από οποιαδήποτε ανάλυση ελέγχουµε τις δυο

µεταβλητές µας µήπως στερούνται στασιµότητας.

Όπως φαίνεται στην Εικ. 3 και οι δυο µεταβλητές δεν

εµφανίζουν κάποια τάση ή µεταβολή στη διασπορά

τους και θα εφαρµόσουµε άµεσα την ανάλυση

ετεροσυσχέτισης χωρίς να χρειαστεί

να µετασχηµατίσουµε τις τιµές

τους.

Στην Εικ. 7, εµφανίζονται οι Αυτοσυσχετίσεις (ACF)

των µεταβλητών soi (άνω) και rec (µέσον)

αντίστοιχα, ενώ στο κάτω µέρος της εικόνας

παριστάνεται η Ετεροσυσχέτιση τους (CCF).

Οι οριζόντιες διακεκοµµένες γραµµές δείχνουν

πάντα το επίπεδο συσχέτισης που οφείλεται σε

τυχαιότητα (δεν είναι στατιστικά σηµαντικό). Και οι

δυο χρονοσειρές εµφανίζουν ετήσια περιοδικότητα,

που αποδεικνύεται από τις ACFs που παριστάνονται

στην Εικ. 7.

Παρατήρησε στην ACF του soi τις θετικές

συσχετίσεις κάθε 12 µήνες και τις αρνητικές κάθε 6

µήνες. Μια συµπεριφορά πολύ συνηθισµένη για µια

χρονοσειρά που αυξοµειώνεται όπως µια

ηµιτονοειδής συνάρτηση. Τέλος η συνάρτηση

ετεροσυσχέτισης (CCF) επιδεικνύει ότι η χρονοσειρά

soi προηγείται περίπου 6 µήνες της αντίστοιχης

χρονοσειράς recruitment, ή όπως λέγεται η soi

καθοδηγεί την recruitment χρονοσειρά.

Εικ. 7: ACFs και CCF των χρονοσειρών soi & rec

Εικόνα 6: Σε κάθε

µετατόπιση (τ) της

χρονοσειράς Y(t+τ) ως προς την X(t)

υπολογίζεται ο

συντελεστής

συσχέτισης rτ.

τ=0

f1(t)

f2(t)

Lagτ

( )∑−

=+⋅

−=

τ

ττ τ

N

t

ttYX

Nr

1

Η Συνάρτηση Ετεροσυσχέτισης (CCF) στα διακριτά σήµατα

προσεγγίζεται από:

Η πρώτη χρονοσειρά X(t)

Η µετατοπισµένη χρονοσειράY(t) κατά το διάστηµα τ

Otnes & Enochson, 1972, σελ. 229

Υπολογίζω την Ετεροσυσχέτιση που έχω για κάθε

µετατόπιση (τ) της Y χρονοσειράς ως προς την Χ

Ετεροσυσχέτιση και Αυτοσυσχέτιση Η συνάρτηση ετεροσυσχέτισης CCF (Otnes

& Enochson, 1972, σελ. 229) για κάθε

µετατόπιση της µιας χρονοσειράς ως προς

την άλλη τ δίδεται από τη σχέση:

( )∑−

=+⋅

−=

τ

ττ τ

N

t

ttYX

Nr

1

όπου Xt και Yt είναι οι κανονικοποιηµένες

αρχικές τιµές.

Στη συνάρτηση αυτοσυσχέτισης ACF οι

χρονοσειρές Xt και Yt είναι ίδιες και

ενδιαφερόµαστε για την ύπαρξη

περιοδικότητας στη χρονοσειρά.

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

8

Η επίδρασή της είναι µάλιστα αρνητική, αφού ο

συντελεστής της ετεροσυσχέτισης είναι αρνητικός

και πλησιάζει την τιµή -0.6 (µε επίπεδο

σηµαντικότητας το -0.1.

Η Αυτοσυσχέτιση νοθεύει την

Ετεροσυσχέτιση

Έχουµε όµως δικαίωµα να συγκρίνουµε µεταξύ

τους τις 2 χρονοσειρές, όταν αυτές εµφανίζουν

τόσο έντονη αυτοσυσχέτιση; Μήπως οι

αυτοσυσχετίσεις τους επηρεάζουν ή και

δηµιουργούν µια ψεύτική ετεροσυσχέτιση;

Πράγµατι, η εκτίµηση της Ετεροσυσχέτισης είναι

λανθασµένη. ∆ιάβασε αν θέλεις τη σηµείωση στο

διπλανό παράθυρο, για να µάθεις πως

δηµιουργούνται νόθες συσχετίσεις από

χρονοσειρές µε αυτοσυσχέτιση.

Η αυτοσυσχέτιση µπορεί να αφαιρεθεί από τη

χρονοσειρά αν την υπολογίσουµε µε τη βοήθεια

ενός ARIMA(p,d,q) µοντέλου.

Η διαδικασία αυτή της αφαίρεσης της

αυτοσυσχέτισης ονοµάζεται “λεύκανση”

(whitening ή prewhitening).

Στην R υπάρχει µια ειδική ρουτίνα που κάνει την

λεύκανση αυτόµατα. Στην Εικ. 8 εµφανίζονται τα

αποτελέσµατα της ετεροσυσχέτισης χωρίς

λεύκανση (άνω) και µε λεύκανση (κάτω).

Παρατήρησε τις διαφορές καθώς και κάποιες τιµές

στην απλή συσχέτιση που εξαφανίστηκαν στην

συσχέτιση µε λεύκανση.

Νόθες συσχετίσεις

Δυο στάσιµες χρονοσειρές (Χ) και (Υ), εφόσον

δεν συσχετίζονται στατιστικά µεταξύ τους,

εµφανίζουν συντελεστές ετεροσυσχέτισης rk µε

διασπορά, που προσεγγίζεται σύµφωνα µε την

παράσταση:

Έτσι, αν τουλάχιστον µια από τις δυο

χρονοσειρές είναι λευκός θόρυβος (ρk =0) τότε η διασπορά προσεγγίζει την τιµή 1/n.

Στην ειδική περίπτωση όµως, που οι δυο

χρονοσειρές εµπεριέχουν αυτοσυσχέτιση, τότε

εµφανίζεται µια νόθα ετεροσυσχέτιση µεταξύ

των χρονοσειρών, µε τιµές ετεροσυσχέτισης

µεγαλύτερες από τις τυχαία αναµενόµενες.

Αντίστοιχα, η αναµενόµενη διασπορά των r σε

κάθε χρονική µετατόπιση k, προσεγγίζεται µε

τη σχέση (σελ. 262, Cryer & Chan, 2008):

Η αύξηση αυτή της διασποράς επιτείνεται στην

περίπτωση µη στάσιµων χρονοσειρών, όπου

µάλιστα η κατανοµή των αναµενόµενων τιµών

rk δεν ακολουθεί κανονική κατανοµή ακόµη και

για µεγάλο δείγµα n.

Στην περίπτωση που η χρονοσειρά έχει

αυτοσυσχέτιση, η στατιστική σχέση Υ ∼ X

ισοδυναµεί µε την εξίσωση:

όπου, για δεδοµένη µετατόπιση d της Χ

υπολογίζουµε την Υ µε την προσθήκη µιας

χρονοσειράς Ζ, που εµφανίζει αυτοσυσχέτιση

µε τη µορφή ενός ARIMA(p,d,q) µοντέλου.

Αντίστροφα, εποµένως όταν διαπιστώνω ότι η

χρονοσειρά έχει αυτοσυσχέτιση, αρκεί να την

αφαιρώ (να εκτιµώ το υπόλοιπο του ARIMA

µοντέλου) και να µελετώ την ετεροσυσχέτιση

µε τα υπόλοιπα.

Η διαδικασία αυτή της αφαίρεσης της

αυτοσυσχέτισης ονοµάζεται “λεύκανση”

(whitening ή prewhitening). Η γλώσσα R στο

πακέτο TSA που διαθέτει, περιλαµβάνει και

συναρτήσεις για την αυτόµατη “λεύκανση” των

χρονοσειρών.

( ){ } ( ) ( )

⋅+≈ ∑

=1

211

,k

kkkYX

nYXrVar ρρ

( ){ } ( ) ( )

⋅+≈ ∑

=1

211

,k

kkkYX

nYXrVar ρρ

tdttZXY ++= −10 ββ

Εικ. 8: CCF χωρίς (άνω) και µε λεύκανση (κάτω)

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

9

Εικ. 9. Προσοµοιωµένες τιµές ARIMA µοντέλων

µε θετική (άνω) και αρνητική (κάτω)

αυτοπαλινδρόµηση.

Μοντέλα ARIMA (Autoregressive Moving Average)

Τα ARIMA µοντέλα είναι περισσότερο σύνθετα από τα προηγούµενα που αναλύθηκαν. Αθροίζουν τις

ιδιότητες τριών διαφορετικών υποκατηγοριών µοντέλων: της Αυτοπαλινδρόµησης (autoregression), της

Ολοκλήρωσης (integration) και της Εξοµάλυνσης µε µετακινούµενο µέσο (moving average). Κάθε

υποµοντέλο έχει µια δική του παράµετρο που το καθορίζει (είναι µηδέν αν δεν συµµετέχει στη

συγκρότηση του ARIMA µοντέλου). Έτσι τα υποµοντέλα έχουν αντίστοιχα ως παραµέτρους:

Αυτοπαλνδρόµηση p

Ολοκλήρωση d

Μετακινούµενο µέσο q

Λεπτοµέρειες για κάθε παράµετρο p, d, q θα γνωρίσουµε στα παρακάτω κεφάλαια.

1. Αυτοπαλινδρόµηση

Το µοντέλο που περιγράφει την Αυτοπαλινδρόµηση, έχει «µνήµη», δηλ η τιµή της συνάρτησης Υt στο

χρόνο (t) εξαρτάται από τις (p) προηγούµενες τιµές της:

Yt = A + Φ * Yt-1 1ης τάξης αυτοπαλινδρόµιση (p=1) (8.1)

Yt = A+Φ1 *Υt-1+ Φ2*Yt-2 2ης τάξης αυτοπαλινδρόµιση (p=2) (8.2)

κ.ο.κ.

όπου Φi είναι οι συντελεστές των παλινδροµήσεων και Α η σταθερά της παλινδρόµησης

και p: παράµετρος της Αυτοπαλινδρόµησης.

Θα µελετήσουµε την Αυτοπαλινδρόµηση µέσα από εργαλεία προσοµοίωσης που µας προσφέρει η R

(Πλαίσιο κώδικα 6).

Η εντολή x1 = arima.sim(list(order

=c(1,0,0), ar=.9), n=100) παράγει µια

χρονοσειρά από n=100 µετρήσεις της µεταβλητής x

µε συντελεστή αυτοπαλινδρόµησης ανάλογο µε την

παράµετρο r, που δίνεται.

Το πρόσηµο του συντελεστή r είναι σηµαντικό για το είδος της χρονοσειράς που θα δηµιουργηθεί.

# ================================

# 6. ARIMA models simulation

# ================================ # simulate data

# make AR models with positive and

negative coefficients

# ------------------------------

x1 = arima.sim(list(order

=c(1,0,0), ar=.9), n=100) x2 = arima.sim(list(order

=c(1,0,0), ar=-.9), n=100)

# Figure 9

# -----------------------------

par(mfrow=c(2,1))

plot(x1, main= "AR(1), φ= +.9") plot(x2, main= "AR(1), φ= -.9")

# Figure 10

# -----------------------------

windows()

par(mfcol=c(2,2)) acf(x1, 20)

acf(x2, 20)

pacf(x1, 20)

pacf(x2, 20)

Ειδικές ασκήσεις στην Αλιευτική ∆ιαχείριση µε τη γλώσσα R

10

Στην Εικ. 9 φαίνεται η σηµασία του. Για θετικές τιµές παράγονται “σήµατα” χαµηλών συχνοτήτων, αφού

οι διαδοχικές τιµές εξαρτώνται θετικά από τις προηγούµενές τους. Αντίθετα µε αρνητικό συντελεστή

Αυτοπαλινδρόµησης παράγονται υψίσυχνες ταλαντώσεις. Ας υποθέσουµε ότι δεν γνωρίζαµε τα

χαρακτηριστικά των σηµάτων x1 και x2, θα τα εκτιµήσουµε µέσα από τις συναρτήσεις της ACF και της

CCF (Εικ. 10).

2. Εκτίµηση Αυτοπαλινδρόµησης µέσω ACF και PACF

Στα γραφήµατα της PACF φαίνεται ότι υπάρχει µόνο

µια τάξη Αυτοπαλινδρόµησης (p=1), γιατί µόνο ένας

συντελεστής PACF είναι σηµαντικός, αυτός στη θέση

“lag=1” και µάλιστα στην πρώτη περίπτωση για το x1

θετικός και για το x2 αρνητικός.

Παρατήρησε τις τιµές PACF κοντά στο επίπεδο της

τυχαιότητας, που δεν υπολογίζονται, καθώς και τις

τιµές των ACF µε εµφανή τη θετική Αυτοπαλινδρό-

µηση (x1), ενώ στην αρνητική (x2) οι συντελεστές

εναλλάσσουν πρόσηµο διαδοχικά.

Στην περίπτωση που έχω ένα πολύπλοκο ARIMA

µοντέλο (p>1, d>0, q>0), η διαδικασία αυτή µε τη

χρήση των συναρτήσεων ACF και PACF µπορεί να

είναι εξαιρετικά επίπονη. Στην R µπορούµε να

γράψουµε µια ρουτίνα που να κάνει αυτή την

αναζήτηση και να µας δίνει το τελικό αποτέλεσµα (βλ.

code 11) . Ζητάµε µε την εντολή:

arima(test.arima, order = c(i,0,j)) να

αναπτυχθεί ένα ARIMA για τη χρονοσειρά

test.arima και επιλέγουµε εκείνο το µοντέλο που

έχει το µικρότερο κριτήριο Akaike.

ΥΠΟΔΕΙΞΗ: Αρχεία για την άσκηση: lake.txt, cbe.dat, tsa3.rda

(δεδοµένα) και fb8_tsa1.R (κώδικας)

# 11. ARIMA order estimation

# ========================== test.arima = x1

best.order = c(0,0,0)

best.aic = Inf

for (i in 0:2)

for (j in 0:2) {

fit.aic = AIC(arima(test.arima,

order = c(i,0,j)))

if (fit.aic <

best.aic){

best.order =

c(i,0,j)

best.arma = arima(test.arima,

order = best.order)

best.aic=fit.aic

}

}

best.order # best.arma is the best order

best.arma

# Figure 11.1

# -----------------------------

# test residuals

acf(resid(best.arma))

Μερική Αυτοσυσχέτιση (PAC) (Partial Autocorrelation)

Η Μερική Αυτοσυσχέτιση εκτιµά τη

συσχέτιση µιας τιµής της χρονοσειράς µε

την τιµή που έχει αυτή µια ή

περισσότερες θέσεις µετατόπισης (lags),

όπως και η απλή αυτοσυσχέτιση,

αφαιρώντας όµως την αυτοσυσχέτιση που

προκαλείται από τις µικρότερες

µετατοπίσεις (βλ. εξίσωση Αυτοπα-

λινδρόµησης 8.2)

Εικ. 10: ACF και PACF των δυο χρονοσειρών x1 και

x2 , από τις οποίες συσχετίσεις εκτιµάται ο

συντελεστής Αυτοπαλινδρόµησης r.