ESTIMATE-kehittelyä

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Seppo Mustonen
Sähköposti:    -
Päiväys: 17.5.2004 12:48

Kuten "Survo ja minä" -kirjan viimeisesä luvussa totean, nykyisen Survon
kantamuoto (ensimmäinen C-kielinen versio SURVO 84C) lähti liikkeelle
kesällä 1985 kahdesta koeohjelmasta, joista syntyivät Survon operaatiot
DER ja ESTIMATE.
Käytettyäni edeltävien Survojen ohjelmointiin Basic-kieltä, joka
eräiden silloisten "asiantuntijoiden" väitteiden mukaan "pilaa aivot",
katsoin aiheelliseksi C-kieltä opiskellessani koetella kuntoani
mahdollisimman haastavalla tehtävällä.

Mielenkiintoinen kokeilukohde olikin yhdistelmä DER, ESTIMATE, jollaisen
olin toteuttanut jo muutamaa vuotta aikaisemmin Basic-Survossa.
DER tekee symbolista derivointia, mikä on melkoista merkkijonojen
pyöritystä ja siitä hyötyy ESTIMATE, jossa suurin ohjelmoinnillinen
vaikeus on saada käyttäjän antamat mallilausekkeet (ja niiden
derivaatat) tulkittua ja laskettua mahdollisimman nopeasti jopa tuhansia
kertoja erilaisten numeeristen optimointimenetelmien yhteydessä.

ESTIMATE on ollut ilmeisesti ensimmäinen regressioanalyysiohjelma, jossa
mallifunktion derivaatat lasketaan symbolisesti (eikä vain numeerisina
likiarvoina kuten muissa silloisissa tilasto-ohjelmissa).
Tästä on paljon hyötyä sekä tarkkuuden että nopeuden kannalta. Ohjelma
myös pystyy toisen kertaluvun derivaattojen perusteella mm. päättelemään
itse, onko malli parametrien suhteen lineaarinen vai ei ja valitsemaan
sen mukaan sopivimman laskentatavan.

Alkuvaiheista on kulunut nyt 19 vuotta eli ESTIMATE on tullut
täysi-ikäiseksi. Jonkin verran olen sitä kasvattanut vuosien varrella
mm. lisäämällä uusia optimointialgoritmeja ja kätevöittämällä mallien
merkintöjä "aaltosulkulausekkeilla", mutta muuten ohjelman perusmuoto
ja toteutustapa on säilynyt alkuperäisenä.

Kuten Survon dokumentoinnista (kts. esim. START -> "Survo-kirjan
esimerkit" -> /EX-P183 - /EX-P195) näkyy, ESTIMATE on hyvin yleinen
työväline, jonka avulla saattaa käsitellä monenlaisia regressiomalleja
ja harrastaa suurimman uskottavuuden (maximum likelihood) estimointia
tilastollisilla aineistoilla, joissa peräkkäiset havainnot ovat
toisistaan riippumattomia.

Kuten viimeaikaisista viesteistäni (AR-mallien käsittely ESTIMATE:lla)
ilmenee, ESTIMATEn avulla kyetään käsittelemään myös rajoitetusti
aikasarja-aineistoja, joissa peräkkäiset havainnot eivät enää ole
toisistaan riippumattomia.

Olen nyt yleistänyt tätä aikasarjapuolta niin, että myös yleisiä
ARMA(p,q)-malleja voidaan laskea ESTIMATElla.
Tämän vuoksi - ja siitä lienee hyötyä muissakin sovelluksissa -
ESTIMATE-ohjelmaa on laajennettu kolmella tavalla, joista yksi on
välttämätön ja muut työskentelyä helpottavia.

Välttämätön laajennus on eräänlainen takaisinkytkentä, joka on
toteutettu UPDATE-täsmennyksenä. Sen selittämiseksi kertaan,
millaisesta tilanteesta on kysymys.

Yleinen ARMA(p,q)- tai oikeastaan ARMAX(p,q)-malli on

(1) Y = X*beta + u,

missä Y    on selitettävän muuttujan n-vektori,
      X    on m selittäjän n*m-matriisi,
      beta on regressiokertoimien m-vektori,
      u    on jäännöstermien u(1),...,u(n) n-vektori

ja j. havaintoon liittyvä virhetermi u(j) riippuu
p edellisestä virhetermistä u(j-1),...,u(j-p) ja q riippumattomasta
N(0,s^2)-jakautuneesta termistä e(j),e(j-1),...,e(j-q) seuraavasti

(2) u(j)=r(1)*u(j-1)+...+r(p)*u(j-p)+e(j)+a(1)*e(j-1)+...+a(q)*e(j-q),

missä r(1),...,r(p) ja a(1),...,a(q) ovat tuntemattomia parametreja.

Itse asiassa uudistus yltää samalla epälineaarisiin malleihin, joissa
"ulkoisten" muuttujien osa X*beta voidaan korvata millä tahansa
derivoituvalla funktiolla f(X,beta).

Mallin estimoinnissa käytetään nyt alkupään virhetermien ja havaintojen
suhteen ehdollista suurimman uskottavuuden menetelmää, jossa
uskottavuusfunktion logaritmi on havaintojen suhteen summa lausekkeista

(3) -0.5*(log(s^2)+e(j)^2/s^2),

missä e(j):t määräytyvät yhtälöstä (2) ja edelleen u(j):t yhtälöstä (1).
(Kts. esim. Hamilton: Time Series Analysis, 1994, luku 5.6, jossa
tarkastellaan erikoistapausta Y=c+u.)

Koska e(j) riippuu edeltävistä arvoista e(j-1),...,e(j-q),
maksimoitaessa uskottavuusfunktion logaritmia muuttujan e
(vaikka se ei ole "havaittava" muuttuja) arvot tulee päivittää
iteratiivisessa laskentaprosessissa aina, kun estimoitavien
parametrien s,beta,r(1),...,r(p),a(1),...,a(q) arvot muuttuvat.

ESTIMATE-ohjelmaa varten tulee tällöin varata alkuperäiseen aineistoon
lisämuuttuja (esim. EPS), jonka arvot ovat ennen laskentaa nollia
ja jota ESTIMATE päivittää jatkuvasti laskennan aikana.
Tämä päivitys ja lopullisten e(j)-arvojen tallennus (EPS-muuttujaan)
tapahtuu uuden UPDATE-täsmennyksen avulla.

Esim. mallissa
Y=b0+b1*X1+b2*X2+b3*X3+b4*X4+u,
missä u noudattaa rakennetta ARMA(3,1), ESTIMATE-kaavio kirjoitetaan
seuraavasti:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11 *{A0}=Y-b0-b1*X1-b2*X2-b3*X3-b4*X4
12 *{AR1}=r1*(Y[-1]-b0-b1*X1[-1]-b2*X2[-1]-b3*X3[-1]-b4*X4[-1])
13 *{AR2}=r2*(Y[-2]-b0-b1*X1[-2]-b2*X2[-2]-b3*X3[-2]-b4*X4[-2])
14 *{AR3}=r3*(Y[-3]-b0-b1*X1[-3]-b2*X2[-3]-b3*X3[-3]-b4*X4[-3])
15 *{EPS}={A0}-{AR1}-{AR2}-{AR3}-a1*EPS[-1]
16 *UPDATE=EPS
17 *
18 *MODEL ARMA31
19 *LOGDENSITY=-0.5*(log(s*s)+({EPS})^2/(s*s))
20 *
21 *ESTIMATE data,ARMA31,CUR+1
22 *
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Malli ARMA31 (rivit 18-19) määritellään kaavan (3) mukaisesti
ja {EPS}-lauseke eli (2) ratkaistuna e(j):n suhteen on rivillä 15.
Mallin eri komponentit (aaltosulkumerkinnöin) löytyvät riveiltä
11-14.
Täsmennys UPDATE=EPS pitää huolta siitä, että ESTIMATE päivittää
parametriarvojen vaihtuessa muuttujaa EPS vastaavan aaltosulku-
lausekkeen {EPS} (rivi 15) mukaisesti ja tallettaa lopulliset
arvot havaintoaineistoon muuttujana EPS.
UPDATE-täsmennys sallii jopa usean päivitettävän muuttujan luettelon;
tämä saattaa olla hyödyksi vielä yleisempien mallien käsittelyssä.

UPDATE-täsmennyksen ohella toinen yleistys on se, että aaltosulku-
lausekkeita voi esiintyä sisäkkäin. Tämä edelleen lyhentää ja selkeyttää
merkintöjä. Esim. {EPS} rivillä 15 on määritelty usean muun aaltosulku-
lausekkeen avulla. ESTIMATE avaa nämä lausekkeet täysin mekaanisesti,
jolloin on pidettävä huolta siitä, että ne ympäröidään suluilla
tarvittaessa kuten ({EPS})^2 itse mallin määrittelyssä rivillä 19.

Koska en ole itse harrastanut aikasarja-analyysia enkä ole aikaisemmin
perehtynyt ARMA-malleihin, on ollut yllättävää havaita, miten vaikeata
saattaa olla "oikeiden" tulosten saaminen jo silloin, kun p+q on luokkaa
3 tai 4.
Tulosten epätarkkuuteen vaikuttaa tiettyjen teoreettisten ongelmien
ohella luonnollisesti aineiston koko.
Tekemieni (epäjärjestelmällisten) simulointikokeiden perusteella
vaikuttaa siltä, että esim. muutaman sadan havainnon aineistoilla,
jotka todella noudattavat mallia, ulkoisten muuttujien (X)
regressiokertoimet (beta) ovat kyllä tarkempia kuin tavalliset
pienimmän neliösumman estimaatit, mutta ARMA(p,q)-parametrit
jäävät epätarkoiksi siitä syystä, että ne kilpailevat toistensa
kanssa. Tämä näkyy näiden estimaattien välisistä korrelaatiokertoimista,
jotka ovat huomattavan suuria (jotkut jopa luokkaa 0.95).
Nämäkin parametrit kyllä tarkentuvat, mutta vasta silloin, kun aineiston
koko on tuhansia.

Ehkä tämä on kokemattomuuttani, mutta jään toistaiseksi hieman
ihmettelemään, mitä virkaa näin mutkikkailla malleilla on esim.
tutkittaessa lyhyitä alle parin sadan havainnon taloudellisia
aikasarja-aineistoja.

Havaintomäärästä riippumatta mallien laskentaan liittyy käytännön
ongelmia, sillä uskottavuusfunktio on monihuippuinen. Tällöin
vaanii vaara, että numeerisessa optimoinnissa päädytään lokaaliin
maksimiin globaalin maksimin asemasta.
Jostain on siis hankittava hyvät alkuarvot estimoitaville
parametreille. Tavallinen OLS-estimointi antaa sopivat alkuarvot
regressiokertoimille beta ja jäännöshajonnalle s.
Varsinaisten ARMA-parametrien alkuarvot on paremman puutteessa
etsittävä raa'alla systemaattisella haulla ja se saattaa viedä
huomattavasti enemmän aikaa kuin lopullinen tarkentava estimointi.

ESTIMATE-operaatiossa METHOD=G tarjoaa keinon tuohon alkuarvojen
systemaattiseen metsästykseen. Olen parantanut tätä toimintaa
siten, että käyttäjän annettua kullekin parametrille haarukointi-
välin ja askelpituuden, ESTIMATE ilmoittaa ennen pitkää mm.
"päivämäärän ja kellonajan", milloin metsästys tulee päättymään.

Seuraava simulointikoe osoittaa, miten ESTIMATE-laajennukset toimivat
ARMAX-mallien estimoinnissa.

Simulointikoe
-------------
Luodaan ARMAX(3,1)-mallia noudattava 200 havainnon aineisto ja
tehdään siitä laskennallisia kokeita.

ARMA(3,1)-mallin mukaisen jäännöstermin U generointi:

Jotta saman voisi tehdä eri ARMA-rakenteilla, esitän tässä yleisen
menettelyn, jossa AR- ja MA-rakenteet annetaan matriiseina.

MATRIX AR
/// AR
r1  0.7
r2 -0.35
r3  0.2

MATRIX MA
/// MA
a1  0.3

s=1  / jäännöshajonta

MAT SAVE AR
MAT SAVE MA
MAT DIM AR /* rowAR=3 colAR=1
MAT DIM MA /* rowMA=1 colMA=1 rankMA=1

FILE CREATE U,24,2
FIELDS:
1 N 8  U
2 N 8  E
END

FILE INIT U,300

S1=for(i=1)to(rowAR)sum(MAT_AR(i)*U[-i])
S2=for(i=1)to(rowMA)sum(MAT_MA(i)*E[-i])
U=if(ORDER<4)then(0)else(U1)
U1=S1+E+S2                 / rakenne (2)
E=s*N.G(0,1,rand(2004))    / E noudattaa jakaumaa N(0,s^2).

VAR U,E TO U / Luodaan 300 U-arvoa.
.......................................................................
Rakenteen vakiinnuttamiseksi poistetaan 100 ensimmäistä havaintoa:
FILE COPY U TO NEW TEMP / IND=ORDER,101,300
Tiedostossa TEMP on nyt 200 ARMA(3,1)-arvoa U.
.......................................................................
Ulkoiset muuttujat:
Tehdään 4 muuttujan X1-X4 (teoreettinen) korrelaatiomatriisi R:
m=4 r=0.7
MAT R=CON(m,m,1-r)+IDN(m,m,r)
MAT RLABELS X TO R
MAT CLABELS X TO R

MNSIMUL R,*,ARMA31,200,0  / NEWSPACE=16,4
VAR U,RES,EPS TO ARMA31
U=0 RES=0 EPS=0
.......................................................................
Kopioidaan U-arvot tiedostoon ARMA31:
FILE COPY TEMP TO ARMA31 / VARS=U MATCH=#
.......................................................................
Lasketaan selitettävä muuttuja Y:
VAR Y=1+X1+X2+X3+X4+U TO ARMA31
Kaikki regressioparametrit on valittu ykkösiksi.
.......................................................................
Tavallinen OLS-estimointi:
MASK=XXXX-R-Y
REGDIAG ARMA31,CUR+1 / DWN=10000 MAXLAG=6
Regression diagnostics on data ARMA31: N=200
Regressand Y         # of regressors=5 (Constant term included)
Condition number of scaled X: k=1.70476
Variable Regr.coeff. Std.dev.     t
Constant  1.0895911  0.1040909     10.468
X1        1.1860186  0.1206738     9.8283
X2        1.0400418  0.1095944     9.4899
X3        0.8172322  0.1102408     7.4132
X4        1.0348647  0.1212199     8.5371
Variance of regressand Y=9.117596756 df=199
Residual variance=2.121979121 df=195
R=0.8786 R^2=0.7719 Durbin-Watson=0.700 (P=0.0000) Autocorr>0
Lag   Autocorr. DW       P(positive)  P(negative)  s.e. of P
  1    0.6468   0.7001   0.0000       1.0000       -
  2    0.1904   1.5852   0.0015       0.9985       0.0004
  3    0.0599   1.8384   0.1511       0.8489       0.0036
  4    0.1039   1.7379   0.0521       0.9479       0.0022
  5    0.1484   1.6116   0.0057       0.9943       0.0008
  6    0.1464   1.6054   0.0072       0.9928       0.0008
Randomized tests are based on DW values.

.......................................................................
ARMA(3,1)-mallin estimointi, kun tunnetaan "oikeat" parametrit:

s=1 b0=1 b1=1 b2=1 b3=1 b4=1 r1=0.7 r2=-0.35 a1=0.3

{A0}=Y-b0-b1*X1-b2*X2-b3*X3-b4*X4
{AR1}=r1*(Y[-1]-b0-b1*X1[-1]-b2*X2[-1]-b3*X3[-1]-b4*X4[-1])
{AR2}=r2*(Y[-2]-b0-b1*X1[-2]-b2*X2[-2]-b3*X3[-2]-b4*X4[-2])
{AR3}=r3*(Y[-3]-b0-b1*X1[-3]-b2*X2[-3]-b3*X3[-3]-b4*X4[-3])
{EPS}={A0}-{AR1}-{AR2}-{AR3}-a1*EPS[-1]
UPDATE=EPS

MODEL ARMA31
LOGDENSITY=-0.5*(log(s*s)+({EPS})^2/(s*s))

ESTIMATE ARMA31,ARMA31,CUR+1  / PRIND=0  METHOD=D RESULTS=0
Estimated parameters of model ARMA31:
s=0.938584 (0.0476877)
b0=1.03014 (0.14825)
b1=1.07471 (0.0586853)
b2=1.03809 (0.0507586)
b3=0.941863 (0.0526008)
b4=1.01365 (0.0616332)
r1=0.740276 (0.197814)
r2=-0.408463 (0.196859)
r3=0.213487 (0.10201)
a1=0.369526 (0.207163)
n=197 log(L)=-86.687588 nf=297

Parametrien korrelaatiot on talletettuna matriisitiedostoon EST_CORR.M:
MAT LOAD EST_CORR.M,12.12,CUR+1
MATRIX EST_CORR.M
R_of_parameter_estimates
///          s    b0    b1    b2    b3    b4    r1    r2    r3    a1
s         1.00 -0.02 -0.06 -0.09  0.04 -0.04 -0.09  0.09 -0.07  0.09
b0       -0.02  1.00 -0.01 -0.04 -0.02  0.02 -0.07  0.06 -0.09  0.06
b1       -0.06 -0.01  1.00 -0.08 -0.22 -0.23  0.09 -0.10  0.08 -0.09
b2       -0.09 -0.04 -0.08  1.00 -0.19 -0.25  0.10 -0.09  0.06 -0.07
b3        0.04 -0.02 -0.22 -0.19  1.00 -0.18  0.11 -0.11  0.12 -0.11
b4       -0.04  0.02 -0.23 -0.25 -0.18  1.00  0.06 -0.08  0.10 -0.05
r1       -0.09 -0.07  0.09  0.10  0.11  0.06  1.00 -0.95  0.79 -0.94
r2        0.09  0.06 -0.10 -0.09 -0.11 -0.08 -0.95  1.00 -0.88  0.89
r3       -0.07 -0.09  0.08  0.06  0.12  0.10  0.79 -0.88  1.00 -0.74
a1        0.09  0.06 -0.09 -0.07 -0.11 -0.05 -0.94  0.89 -0.74  1.00

ARMA-parametrien r1,r2,r3,a1 välillä on voimakkaita korrelaatioita,
jotka heikentävät yksittäisten parametrien tarkkuutta.
Muiden parametrien (s,b0,b1,b2,b3,b4) keskinäiset korrelaatiot ja
niiden korrelaatiot ARMA-parametrien suhteen ovat nollia tai hyvin
lieviä.
.......................................................................
Todellisuudessa ei ole tietenkään mahdollista lähteä liikkeelle
oikeista parametrinarvoista.
Unohdetaan ne ja otetaan parametreille s,b0-b4 alkuarvot OLS-tuloksista.
ARMA-parametrien alkuarvot etsitään systemaattisella haulla (METHOD=G)
seuraavasti:

{A0}=Y-b0-b1*X1-b2*X2-b3*X3-b4*X4
{AR1}=r1*(Y[-1]-b0-b1*X1[-1]-b2*X2[-1]-b3*X3[-1]-b4*X4[-1])
{AR2}=r2*(Y[-2]-b0-b1*X1[-2]-b2*X2[-2]-b3*X3[-2]-b4*X4[-2])
{AR3}=r3*(Y[-3]-b0-b1*X1[-3]-b2*X2[-3]-b3*X3[-3]-b4*X4[-3])
{EPS}={A0}-{AR1}-{AR2}-{AR3}-a1*EPS[-1]
UPDATE=EPS
#s=1.46       sqrt(2.12)=1.456...
#b0=1.0895911
#b1=1.1860186   # parametrin edessä merkitsee, että
#b2=1.0400418     parametria pidetään estimoinnissa vakiona.
#b3=0.8172322
#b4=1.0348647
r1=-0.9,0.9,0.1  / min,max,askel
r2=-0.9,0.9,0.1
r3=-0.9,0.9,0.1
a1=0,0.9,0.1

MODEL ARMA31
LOGDENSITY=-0.5*(log(s*s)+({EPS})^2/(s*s))
ESTIMATE ARMA31,ARMA31,CUR+1  / PRIND=0  METHOD=G
Estimated parameters of model ARMA31:
r1=0.7
r2=-0.4
r3=0.2
a1=0.3
n=197 log(L)=-117.422775 nf=589

Hauan aikana ESTIMATE kertoo prosessin etenemisestä seuraavaan tyyliin:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Grid search: 4 parameters, 68590 combinations
15% done, 1.2 minutes left, Ready on Sun May 16 18:01:04 2004
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tämä haku antoi ehkä turhan hyvät alkuarvot, kun todelliset arvot
sattuvat olemaan "kauniita" desimaalilukuja.
.......................................................................
Lopullinen estimointi saaduilla alkuarvoilla:
s=1.46         Huom. jos asetetaan #s=1, saadaan pns-ratkaisu.
b0=1.0895911
b1=1.1860186
b2=1.0400418
b3=0.8172322
b4=1.0348647

r1=0.7
r2=-0.4
r3=0.2
a1=0.3

{A0}=Y-b0-b1*X1-b2*X2-b3*X3-b4*X4
{AR1}=r1*(Y[-1]-b0-b1*X1[-1]-b2*X2[-1]-b3*X3[-1]-b4*X4[-1])
{AR2}=r2*(Y[-2]-b0-b1*X1[-2]-b2*X2[-2]-b3*X3[-2]-b4*X4[-2])
{AR3}=r3*(Y[-3]-b0-b1*X1[-3]-b2*X2[-3]-b3*X3[-3]-b4*X4[-3])
{EPS}={A0}-{AR1}-{AR2}-{AR3}-a1*EPS[-1]
UPDATE=EPS

MODEL ARMA31
LOGDENSITY=-0.5*(log(s*s)+({EPS})^2/(s*s))

ESTIMATE ARMA31,ARMA31,CUR+1  / PRIND=0  METHOD=D RESULTS=0
Estimated parameters of model ARMA31:
s=0.921593 (0.0452761)
b0=1.11223 (0.165451)
b1=1.10293 (0.0500699)
b2=1.06283 (0.0431462)
b3=0.929833 (0.0455447)
b4=1.02968 (0.0532104)
r1=0.917985 (0.196195)
r2=-0.598676 (0.194326)
r3=0.282569 (0.103455)
a1=0.176113 (0.207149)
n=197 log(L)=-85.896968 nf=429

Tulos ei ole sama kuin "oikeista" alkuarvoista laskettu, mutta
log(L), jota maksimoidaan, on jopa hiukan suurempi.
Suurista ARMA-parametrien korrelaatioista johtuen löytyy siis useita
samanveroisia ratkaisuja.
.......................................................................
Tarkistetaan jäännöstermin autokorrelaatiot:

2/sqrt(200)=0.14142135623731  (95%:n luottamusraja)

XCORR ARMA31,EPS,EPS,CUR+1
Autocorrelations of EPS in data ARMA31:
 Lag  EPS
  0      1.0000
  1     -0.0016
  2     -0.0228
  3      0.0294
  4     -0.0111
  5     -0.0328
  6      0.1343
  7     -0.0144
  8      0.0278
  9     -0.0323
 10     -0.0084
 11     -0.0325
 12     -0.0164

Jäännöstermin jakauma on ilmeisen normaalinen ja sen keskiarvo
on riittävällä tarkkuudella 0:

STAT ARMA31,CUR+1 / VARS=EPS
Basic statistics: ARMA31 N=200
Variable: EPS      ~0
min=-2.958339 in obs.#118
max=2.796114 in obs.#60
mean=-0.01284  stddev=0.932929 skewness=-0.15215  kurtosis=0.594885
lower_Q=-0.523529 median=-0.0375   upper_Q=0.623077
up.limit      f     % class width=0.2
    -2.8      2   1.0 **
    -2.6      0   0.0
    -2.4      0   0.0
    -2.2      2   1.0 **
    -2        2   1.0 **
    -1.8      1   0.5 *
    -1.6      2   1.0 **
    -1.4      5   2.5 *****
    -1.2      4   2.0 ****
    -1        5   2.5 *****
    -0.8     12   6.0 ************
    -0.6      9   4.5 *********
    -0.4     17   8.5 *****************
    -0.2     20  10.0 ********************
     0       24  12.0 ************************
     0.2     24  12.0 ************************
     0.4     12   6.0 ************
     0.6      8   4.0 ********
     0.8     13   6.5 *************
     1       10   5.0 **********
     1.2      9   4.5 *********
     1.4      6   3.0 ******
     1.6      4   2.0 ****
     1.8      3   1.5 ***
     2        4   2.0 ****
     2.2      1   0.5 *
     2.4      0   0.0
     2.6      0   0.0
     2.8      1   0.5 *

.......................................................................
Eräänlaisena tarkistuksena tein toistokokeen, jossa generoitiin ja
estimoitiin (tähän tarkoitukseen laatimani sukron avulla) 1153 samaa
rakennetta noudattavaa, riippumatonta aineistoa, joista tosin ulkoiset
muuttujat X jätettiin pois ja joissa otoskoko oli 1000 eli suurempi kuin
aikaisempi 200. Estimointi aloitettiin oikeista parametrien arvoista.

Tehtiin siis 1153 ESTIMATE-ajoa, joista saatujen ARMA-parametri-
estimaattien keskiarvot, hajonnat ja korrelaatiot olivat:

Parametri Keskiarvo   Hajonta    Hajonta2
r1        0.701009    0.094905   0.090914
r2       -0.352247    0.090303   0.089673
r3        0.198876    0.047975   0.048813
a1        0.295993    0.095432   0.095100

Parametrien korrelaatiot:
               r1       r2       r3       a1
r1        1.00000 -0.94449  0.78525 -0.95311
r2       -0.94449  1.00000 -0.85645  0.92160
r3        0.78525 -0.85645  1.00000 -0.78005
a1       -0.95311  0.92160 -0.78005  1.00000

Hajonta2 tarkoittaa 200 havainnon aineistoista saatuja, ESTIMATEn
antamia keskivirheitä kerrottuna otoskokojen suhteen neliöjuurella
sqrt(200/1000), jolloin tulokset ovat vertailukelpoisia.

Tulos osoittaa, että estimaatit ovat ainakin likimain harhattomia ja
niiden hajonnat ja korrelaatiot vastaavat hyvin ESTIMATEn antamia.

                      * * *

Esimerkki osoittaa, että ARMA-mallien käsittelyyn liittyy ongelmia,
vaikka rakenne tunnettaisiinkin etukäteen.
Todellisissa aineistoissa myös tuo rakenne (arvot p ja q) joudutaan
etsimään (esim. tarkastelemalla autokorrelaatioita ja osittais-
autokorrelatioita). Useimmiten tilanne ei vastaa täsmälleen mitään
ARMA-rakennetta, mikä vielä enemmän epämääräistää analyysia.

-Seppo

Vastaukset:
[ei vastauksia]

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.