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
1ˆ
Η Συνάρτηση Ετεροσυσχέτισης (CCF) στα διακριτά σήµατα
προσεγγίζεται από:
Η πρώτη χρονοσειρά X(t)
Η µετατοπισµένη χρονοσειράY(t) κατά το διάστηµα τ
Otnes & Enochson, 1972, σελ. 229
Υπολογίζω την Ετεροσυσχέτιση που έχω για κάθε
µετατόπιση (τ) της Y χρονοσειράς ως προς την Χ
Ετεροσυσχέτιση και Αυτοσυσχέτιση Η συνάρτηση ετεροσυσχέτισης CCF (Otnes
& Enochson, 1972, σελ. 229) για κάθε
µετατόπιση της µιας χρονοσειράς ως προς
την άλλη τ δίδεται από τη σχέση:
( )∑−
=+⋅
−=
τ
ττ τ
N
t
ttYX
Nr
1
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.
Top Related