2016-08-04 48 views
1

Ich habe mit dem fBasics Paket arbeitet jeweils eine fitStable Funktion einige Serien auf eine allgemeinere, stabilen Verteilungen passen.fBasics :: fitStable arbeiten verdächtig

Es gibt zwei Ansätze - eine Quantil Methode, von McCulloh vorgeschlagen und dann gibt es die MLE Ansatz.

Die Funktion bietet beides, aber der MLE-Ansatz ist wirklich, wirklich langsam und manchmal sogar nicht berechnet - und liefert .

Es verwendet nlminb, um die Likelihood-Funktion zu maximieren (denke, es minimiert den Spaß-likelihood).

Aber selbst wenn es nach langer Zeit beendet ist, die Schätzung für 1000 Beobachtungen von Standardnormal (sollten, für die sie die Werte von (2,0,1,0) gegeben haben) es gibt:

Estimated Parameter(s): 
    alpha  beta  gamma  delta 
1.99990000 0.22448469 0.71247528 0.02995476 

, wo ich erwartet hätte zumindest für die beta näher an Null sein.

Hat jemand Erfahrung zu teilen?

Irgendeine Idee, wie man das beschleunigt?

Antwort

1

Ich versuchte dies mit 20 Läufen von 100 (anstelle von 1000). Viele Betas liegen nahe bei Null (wie erwartet), aber einige nahe bei -1. Auch die Gammas sind ziemlich konsistent. Die verstrichene Zeit betrug 10 Minuten.

library(fBasics) 
set.seed(100) 
x <- rnorm(1000) 
a <- vector(,20) 
b <- vector(,20) 
c <- vector(,20) 
d <- vector(,20) 

system.time(
for(i in 1:20){ 
    samp <- sample(x, size = 100, replace = T) 
    v <- stableFit(samp, type='mle') 
    a[i] <- ([email protected])$estimate[1] 
    b[i] <- ([email protected])$estimate[2] 
    c[i] <- ([email protected])$estimate[3] 
    d[i] <- ([email protected])$estimate[4] 
} 
) 

Systemzeit:
Systembenutzer verstrichene
598,67 1,49 602,80

a 

1,8070, 1,9999, 1,9999, 1,9140, 1,9999, 1,9999, 1,9999, 1,9999, 1,9999, 1,8967, 1,9999, 1,9999 , 1,9999, 1,9999, 1,9999, 1,9999, 1,9999, 1,9999, 1,9999, 1,8166

b 

-0,9999, 0,1247, 0,0070, -0,9999, 0,0026, 0,0177, 0,0083 0,0409, 0,0179, 0,3062, 0,8251, -0,0769, 0,0071, -0,7928, -0,9225, -0,0147, -0,7459, -0,0191, 0,0016, -0,9999

c 

0,7121, 0,7337, 0,7654, 0,7287, 0,8393, 0,6441, 0,7475, 0,7113, 0,7204, 0,6475, 0,7065, 0,7408, 0,7269, 0,7191, 0,6453, 0,6824, 0,6815, 0,7642, 0,7970, 0,6347

d 

0,1576, 0,1092, -0,0115, 0,0196, 0,2325 , 0.1222, 0.2546, -0.0610, 0.0873, 0.0438 -0.0120, -0.1266, 0.1631, 0.1443, -0.0793, -0.1651, 0.1649, 0.0891, -0.0043, 0.1259

+0

yh danke, ich bin die gleichen Ergebnisse erzielend, die sind in Ordnung, mein größtes Problem ist jetzt jedoch, wie man es beschleunigt, weil es zu viel Zeit braucht und ich ungefähr 100 von ihnen mit längeren Reihen brauche ...Ziemlich langsam ist die Berechnung der Dichte der stabilen Verteilung, wird weiter tief graben. –

+0

Sie haben Recht. Es ist wahrscheinlich nlminb. Ich glaube nicht, dass es Grenzkonvergenz-Langsamkeit ist. Gauß hat a = 2, und a ist in (0,2). Ich habe es mit 'rcauchy (100)', (a, b, c, d) = (1,0,1,0) und Levy 'versucht rstable (100, alpha = 0.5, beta = 1) 'aus dem Paket' stalledist', Cauchy benötigte 520 Sekunden (Gaussian 603 s) Levy stoppte mit einem Fehler, hatte aber Schätzungen nahe (0.5,1,1,0) –