2016-04-12 24 views
2

Dies kann oder kann nicht eine einfache Frage sein. Jede Hilfe wird geschätzt.Plot ACF mit Linien in R

Ich habe ein Papier in Bezug auf GARCH und long memory zugegriffen. Es hat eine Figur, insbesondere Abb. 1.1, dass ich nicht gelernt habe, wie man es in R aufträgt. Der Autor sagte, dass die ACF-Funktion eine entsprechende hyperbolische Funktion hat. Es ist sehr wichtig festzustellen, ob die Daten lange Speicher haben oder nicht. Also möchte ich diese Technik auf meine quadrierten Renditen anwenden. Die Beispieldaten werden in this link geliefert.

Mein Code ist:

data=read.csv("sample.csv",header=T) 
lret=100*diff(log(data$CLOSE)) 
acf(lret^2) 

Wie finden wir die hyperbolische Funktion von ACF und wie wir sie in ACF Graph tun Grundstück?

ACF with hyperbolic line

+0

Papierverbindung: http://www-stat.wharton.upenn.edu/~steele/HoldingPen/StaricaLongRangeQ.pdf –

Antwort

2

Mikosch und Starica betonen, dass die ACF nicht eine hyperbolische Funktion folgen; In dieser Abbildung wird gezeigt, wie ein Missbrauch statistischer Werkzeuge zu falschen Schlussfolgerungen führen kann - die Daten sind in den anderen Fenstern von Abbildung 1.1 als unkorreliert dargestellt! Wie auch immer, das ist eine Diskussion für Cross Validated Stack Exchange.


Sie können nichtlineare Regressionsanpassungen mit nls vornehmen. Ich habe das ACF eines AR (2) -Prozesses mit den Parametern 0.8 und 0.1 als Beispiel verwendet (die Anpassung ist hier natürlich nicht korrekt, aber es zeigt einige der Probleme, die beim Arbeiten mit Autokorrelationsfunktionen auftreten können).

set.seed(1e2) 
## AR(2) simulation 
arsim <- arima.sim(list(ar = c(0.8,0.1)),n = 1000) 
## Autocorrelation function of absolute values: 
myacf <- acf(abs(arsim),ci = 0) 

## Fit acf = b*x^(-c) 
nls_fit <- nls(y ~ b*x^(-c), 
       data.frame(x = myacf$lag[-1], y = myacf$acf[-1]), #Remove lag 0 
       start = list(b=1,c=1)) 
curve(nls_fit$m$getPars()[1]*x^(-nls_fit$m$getPars()[2]), 
     add = TRUE,col="red") 

Beachten Sie, wie ich die Daten bei einer Verzögerung 0, da 0^(-c) entfernen ist nicht sinnvoll. Dies ist in Übereinstimmung mit dem, was die Autoren normalerweise tun (ignorieren bei Lag 0 - macht nie Sinn, plotten sowieso. Warum ist es der Standardwert plot.acf Ich weiß es nicht).

Code plot output

Mikosch schlägt in der Regel die IID Konfidenzbänder zu entfernen, die standardmäßig angezeigt werden, wenn die Daten eindeutig nicht iid. Sie tun dies mit der plot.acf Option ci = 0.

+0

Vielen Dank, Therkel. –