2016-07-03 15 views
2

I berechnet eine Kreuzkorrelation von zwei Zeitreihen mit ccf() in R. Ich weiß, wie herzuleiten das Konfidenzintervall berechnen:Wie p-Werte von den Kreuzkorrelationsfunktion in R

ccf1 <- ccf(x=x,y=y,lag.max=5,na.action=na.pass, plot=F) 
upperCI <- qnorm((1+0.95)/2)/sqrt(ccf1$n.used) 
lowerCI <- -qnorm((1+0.95)/2)/sqrt(ccf1$n.used) 

Aber was Ich brauche wirklich den p-Wert der maximalen Korrelation.

ind.max <- which(abs(ccf1$acf[1:11])==max(abs(ccf1$acf[1:11]))) 
max.cor <- ccf1$acf[ind.max] 
lag.opt <- ccf1$lag[ind.max] 

Wie berechne ich diesen p-Wert? Ich habe hoch und niedrig gesucht, kann aber nirgendwo eine gute Antwort finden.

Antwort

3

Den p-Wert zu erhalten ist einfach.

Unter Null-Hypothese, dass die Korrelation 0 ist, wird es in der Regel verteilt:

Z ~ N(0, 1/sqrt(ccf1$n.used)) 

für Ihre beobachtete maximale Korrelation So max.cor, dessen p-Wert ist nur die Wahrscheinlichkeit Pr(Z > |max.cor|), die durch berechnet werden kann:

2 * (1 - pnorm(abs(max.cor), mean = 0, sd = 1/sqrt(ccf1$n.used))) 

Follow-up

Ist das wirklich so einfach? Die ccf berechnet viele Korrelationen gleichzeitig!

Sie sagen, dass ccf Korrelationen bei verschiedenen Verzögerungen berechnet? Nun, vorausgesetzt, Sie haben eine große Anzahl von Beobachtungen N, die Standardabweichung von ACF bei jedem Lag ist die gleiche: 1/sqrt(N). Deshalb sind die Konfidenzintervalle zwei horizontale Linien.

+0

Es ist wirklich so einfach? Ich dachte, dass ich etwas fangen musste, weil das ccf viele Korrelationen auf einmal berechnet? – struggleBus

+0

oh toll! Danke! – struggleBus